Bronnen · 37

Beveilig een GraphQL API: autorisatie, querykosten en bewijs

Handhaaf object- en veldrechten, beperk serverwerk en test weigeringspaden.

Bijgewerkt · 2 min

Boeken over internet en technologie op een bibliotheekplank Illustratie · fictieve scène

Wat deze handleiding helpt bereiken

  • Het blootgestelde schema in kaart brengen
  • Machtigingen oefenen
  • Kosten van gebonden query's
  • Weigeringen verifiëren

Snelle controle

  • Kan een account een object van een ander account lezen?
  • Volgt een gevoelig veld de toegangsbeslissing van het bovenliggende account?
  • Wat zijn de gezamenlijke kosten van diepte, aliassen en paginering?
  • Welke details lekken door fouten heen?
  • Wie observeert weigeringen en misbruik?

Stapsgewijze methode

  1. 1

    Inventariseer bewerkingen

    Lijst typen, velden, mutaties, rollen, objecteigenaren en gevoelige gegevens. Inclusief huidige clientquery's en zelden gebruikte paden.

    Resultaat: matrix van bewerkingen, rollen, objecten en velden.

  2. 2

    Test elke toegangsbeslissing

    Maak afzonderlijke testaccounts aan en wissel object-ID's, inclusief geneste objecten. Resolvers moeten autorisatie afdwingen voordat ze gegevens retourneren.

    Resultaat: reproduceerbare toegestane en geweigerde gevallen.

  3. 3

    Werking van de gebonden server

    Meet de werkelijke kosten van velden en verzamelingen. Test diepte, breedte, aliassen, paginering, batchverwerking en tijd samen en stel vervolgens geschikte limieten in.

    Resultaat: kostenbeleid en set van vijandige query's.

  4. 4

    Verminder onnodige blootstelling

    Bepaal introspectie voor de context, verberg interne foutdetails en verwijder velden die meer onthullen dan nodig is voor de clients.

    Resultaat: beoordeelde openbare configuratie en foutreacties.

  5. 5

    Observeer met terughoudendheid

    Registreer nuttige technische identiteit, bewerking, kosten, weigering en correlatie, met uitzondering van geheimen en gevoelige argumenten. Wijs eigenaarschap van waarschuwingen toe.

    Resultaat: dashboard en onderzoeksprocedure.

  6. 6

    Herhalen na wijziging

    Wanneer een veld, rol of client verandert, herhaal autorisatie- en laadgevallen. Controleer oude query's die nu de herziene grafiek doorlopen.

    Resultaat: regressietest en releasebeslissing.

Managementindicatoren

IndicatorWat het meetEerste actie
ToegangObject- en veldgevallen geweigerd zoals verwachtRepareer de resolver
KostenZware query's beperkt door beleidPas velden en limieten aan
FoutenOpenbare reacties zonder interne detailsVerminder de weergegeven details
RegressieClientbewerkingen worden na een wijziging opnieuw afgespeeldBlokkeer onbedoelde fouten

Veelvoorkomende fouten

  • Vertrouw alleen op toegang tot eindpunten
  • Beperk de diepte, maar negeer de breedte
  • Vergeet autorisatie voor geneste velden
  • Log argumenten met gevoelige gegevens

Veelgestelde vragen

Verwijdert GraphQL de gewone API-autorisatie?

Nee. Elke toegang tot een object en veld vereist nog steeds een op identiteit en context gebaseerde beslissing.

Is het uitschakelen van introspectie voldoende?

Nee. Het kan de blootstelling van het schema verminderen, maar lost de toegangs- of querykosten niet op.

Is een dieptelimiet voldoende?

Nee. Aliassen, breedte, lijsten en veldspecifieke kosten zijn ook van belang.

Officiële referenties

Referenties ondersteunen de methode. Pas controles aan uw context aan; ze zijn geen certificering. Originele referentietitels en brondocumenten kunnen in een andere taal zijn.