GraphQL-kérés érvényesítése
A KÖVETKEZŐRE VONATKOZIK: Minden API Management-szint
A validate-graphql-request
szabályzat ellenőrzi a GraphQL-kérést, és engedélyezi a hozzáférést egy GraphQL API adott lekérdezési útvonalaihoz. Az érvénytelen lekérdezés "kérelemhiba". Az engedélyezés csak érvényes kérelmek esetén történik.
Feljegyzés
Állítsa be a szabályzat elemeit és gyermekelemeit a szabályzatutasításban megadott sorrendben. További információ az API Management-szabályzatok beállításáról és szerkesztéséről.
Szabályzatutasítás
<validate-graphql-request error-variable-name="variable name" max-size="size in bytes" max-depth="query depth">
<authorize>
<rule path="query path, for example: '/listUsers' or '/__*'" action="string or policy expression that evaluates to 'allow | remove | reject | ignore'" />
</authorize>
</validate-graphql-request>
Attribútumok
Attribútum | Leírás | Kötelező | Alapértelmezett |
---|---|---|---|
error-variable-name | Annak a változónak a neve, amelybe context.Variables naplózni szeretné az érvényesítési hibákat. A szabályzatkifejezések engedélyezettek. |
Nem | N.A. |
maximális méret | A kérelem hasznos adatainak maximális mérete bájtban. Megengedett maximális érték: 102 400 bájt (100 KB). (Ha növelni szeretné ezt a korlátot, forduljon az ügyfélszolgálathoz .) A szabályzatkifejezések engedélyezettek. | Igen | n/a |
maximális mélység | Egész szám. Lekérdezési mélység maximális száma. A szabályzatkifejezések engedélyezettek. | Nem | 6 |
Elemek
Név | Leírás | Kötelező |
---|---|---|
engedélyez | Adja hozzá ezt az elemet egy vagy több elérési út megfelelő engedélyezési szabályának beállításához. | Nem |
szabály | Adjon hozzá egy vagy több elemet adott lekérdezési útvonalak engedélyezéséhez. Minden szabály megadhat egy másik műveletet. Feltételesen megadható egy szabályzatkifejezés használatával. | Nem |
szabályattribútumok
Attribútum | Leírás | Kötelező | Alapértelmezett |
---|---|---|---|
ösvény | Az engedélyezési ellenőrzés végrehajtásának elérési útja. A következő mintát kell követnie: /type/field . |
Igen | n/a |
művelet | A szabály alkalmazása esetén végrehajtandó művelet . Feltételesen megadható egy szabályzatkifejezés használatával. | Nem | enged |
Bevezetési rendszer
A path=/__*
házirendje az introspection rendszer. Ezzel elutasíthatja az introspection-kérelmeket (__schema
stb __type
.).
Kérelemműveletek
Az elérhető műveleteket az alábbi táblázat ismerteti.
Művelet | Leírás |
---|---|
elutasít | Kéréshiba történik, és a rendszer nem küldi el a kérést a háttérrendszernek. Ha konfigurálva van, további szabályok nincsenek alkalmazva. |
eltávolít | Mezőhiba történik, és a mező el lesz távolítva a kérelemből. |
enged | A mező a háttérrendszernek lesz átadva. |
semmibe vesz | A szabály érvénytelen ebben az esetben, és a következő szabály lesz alkalmazva. |
Használat
- Szabályzatszakaszok: bejövő
- Szabályzat hatókörei: globális, munkaterület, termék, API
- Átjárók: klasszikus, v2, használat, saját üzemeltetésű
Használati megjegyzések
Konfigurálja a szabályzatot az API Managementbe importált átmenő vagy szintetikus GraphQL API-hoz.
Ez a szabályzat csak egyszer használható egy szabályzatszakaszban.
Mivel a GraphQL-lekérdezések egy lapított sémát használnak, az engedélyek bármely kimeneti típusú levélcsomóponton alkalmazhatók:
- Mutáció, lekérdezés vagy előfizetés
- Egyéni mező egy típusdeklarációban
Előfordulhat, hogy az engedélyek nem alkalmazhatók a következőre:
- Bemeneti típusok
- Töredékek
- Szakszervezetek
- Interfészek
- A sémaelem
Hibakezelés
A GraphQL-sémán vagy a kérelem méretének vagy mélységének sikertelen ellenőrzése kéréshiba, és azt eredményezi, hogy a kérés hibablokkdal (de adatblokk nélkül) meghiúsult.
A tulajdonsághoz hasonlóan az Context.LastError
összes GraphQL-ellenőrzési hiba automatikusan propagálódik a GraphQLErrors
változóban. Ha a hibákat külön kell propagálja, megadhat egy hibaváltozó nevét. A rendszer a hibákat a változóra és a error
változóra küldi GraphQLErrors
.
Példák
Lekérdezés érvényesítése
Ez a példa a következő ellenőrzési és engedélyezési szabályokat alkalmazza egy GraphQL-lekérdezésre:
- A 100 kb-nál nagyobb vagy 4-nél nagyobb lekérdezési mélységű kérelmek elutasításra kerülnek.
- A rendszer elutasítja az introspection rendszerre irányuló kérelmeket.
- A
/Missions/name
mező el lesz távolítva a kétnál több fejlécet tartalmazó kérelmekből.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4">
<authorize>
<rule path="/__*" action="reject" />
<rule path="/Missions/name" action="@(context.Request.Headers.Count > 2 ? "remove" : "allow")" />
</authorize>
</validate-graphql-request>
Mutáció ellenőrzése
Ez a példa a következő ellenőrzési és engedélyezési szabályokat alkalmazza a GraphQL-mutációra:
- A 100 kb-nál nagyobb vagy 4-nél nagyobb lekérdezési mélységű kérelmek elutasításra kerülnek.
- A mezőmutációra vonatkozó kéréseket a
deleteUser
rendszer megtagadja, kivéve, ha a kérelem IP-címről198.51.100.1
származik.
<validate-graphql-request error-variable-name="name" max-size="102400" max-depth="4">
<authorize>
<rule path="/Mutation/deleteUser" action="@(context.Request.IpAddress <> "198.51.100.1" ? "deny" : "allow")" />
</authorize>
</validate-graphql-request>
Kapcsolódó szabályzatok
Kapcsolódó tartalom
A szabályzatok használatával kapcsolatos további információkért lásd:
- Oktatóanyag: AZ API átalakítása és védelme
- Szabályzathivatkozás a szabályzatutasságok és azok beállításainak teljes listájához
- Házirend-kifejezések
- Házirendek beállítása vagy szerkesztése
- Szabályzatkonfigurációk újrafelhasználása
- Szabályzatrészletek adattára
- Szabályzatok létrehozása a Microsoft Copilot használatával az Azure-ban
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: