Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az Engedélyezési User-Defined Functions (UDF-ek) lehetővé teszik egyéni engedélyezési logika végrehajtását a GraphQL API-kérések feldolgozása előtt. Ez a funkció lehetővé teszi az API-tulajdonosok számára a statikus szerepkör-hozzárendeléseken túlmutató, üzletspecifikus hozzáférési szabályok kikényszerítését. Az engedélyező UDF-ekkel kiértékelheti a hitelesített kérelem adatait – például egy JSON-webjogkivonatban (JWT) lévő jogcímeket –, és eldöntheti, hogy engedélyezni kell-e a kérést. A logikát függvényként implementáljuk, és automatikusan meghívjuk a bejövő API-hívásokhoz.
Használati esetek
Ha a következőkre van szüksége, használjon egy hitelesítő felhasználói adatfüggvényt:
- Egyéni üzleti logika alkalmazása API-végrehajtás előtt
- Hozzáférés korlátozása felhasználói identitás vagy jogkivonat jogcíme alapján
- Szolgáltatási főazonosító érvényesítése a felhasználói fiókoktól elkülönítve
Az engedélyezési funkció működése
Ha az egyéni engedélyezés engedélyezve van egy felhasználói adatfüggvénnyel:
- Egy függvény a GraphQL API végrehajtása előtt fut.
- Kontextust kap a hitelesített kérelemből.
- Az egyéni logika ellenőrzi az engedélyezést.
- Az API-kérés akkor folytatódik, ha az engedélyezés sikeres, ellenkező esetben a rendszer megtagadja.
- Az eredmény gyorsabban érhető el a jövőbeli kérések esetében.
Felhasználói adatfüggvény létrehozása
Egy Fabric felhasználói adatfüggvényen belüli engedélyező függvénynek egy adott formátumra van szüksége.
- A függvény neve felhasználó által definiálható. Nem rendelkezik GraphQL-specifikus korlátozásokkal, és a felhasználói adatfüggvények korlátozásai alapján kell meghatározni.
- A függvényargumentum/paraméter nevének kérelemnek kell lennie, és szótár típusúnak kell lennie. Amikor a GraphQL szolgáltatás meghív egy függvényt, egy terhet küld, ami egy kérés nevű szótárt tartalmaz a következő mezőkkel:
- tokenClaims (szótár): a bejövő felhasználói jogkivonatból kinyert jogcímeket tartalmazó kulcs-érték párok.
- query(string): a GraphQL API meghívásakor átadott lekérdezési sztring.
- változók (szótár): a GraphQL API meghívásakor átadott változókat tartalmazó kulcs-érték párok.
-
Visszatérési típus (szótár): A függvény visszaadja a(z)
isAuthorizedésrolesértékeket.rolesnem kötelező, és az RBAC-funkció engedélyezésekor el kell küldeni.
Example
Felhasználói adatfüggvény létrehozása Fabric portálon. Frissítse a függvénykódot ezzel a mintául szolgáló engedélyező függvénnyel.
from typing import TYPE_CHECKING
import fabric.functions as fn
import logging
user data function = fn.UserDataFunctions()
@user data function.function()
def invokeauthudf(request: dict) -> dict:
token_claims: dict = request.get("tokenClaims", {})
query: str = request.get("query", "")
variables: dict = request.get("variables", {})
domain = "onmicrosoft.com"
spn = "<SPN-ID>"
# Extract claims from token_claims dictionary
tid_claim = token_claims.get("tid")
upn_claim = token_claims.get("upn")
appid_claim = token_claims.get("appid")
logging.info(f"Query: {query}");
logging.info(f"Claims: {token_claims}");
logging.info(f"Tenant: {tid_claim}");
logging.info(f"UPN: {upn_claim}");
logging.info(f"SPN: {appid_claim}");
# Authorization logic
## Optional: Do role-based access check
roles = []
if upn_claim is not None:
is_authorized = domain in upn_claim
roles = ["Default"]
else:
is_authorized = spn in appid_claim
roles = ["SPN"]
logging.info(f"Authorized: {is_authorized}")
logging.info(f"Roles: {roles}")
logging.info(f"SPN: {spn}")
logging.info(f"App ID: {appid_claim}")
return {
"isAuthorized": is_authorized,
"roles": roles
}
Mit tesz ez a függvény?
- Ez az engedélyező felhasználói adatfüggvény a GraphQL-kérés végrehajtása előtt fut, beolvassa az identitásjogcímeket (UPN, alkalmazásazonosító) a hívó JSON-webjogkivonatából (JWT) és naplózza a kérelmek részleteit.
- Engedélyezi a felhasználókat azzal, hogy ellenőrzi, hogy az e-mail-címük (UPN) egy adott tartományhoz tartozik-e, és egy ismert alkalmazásazonosítóval való egyeztetéssel engedélyezi a szolgáltatásnevek engedélyezését.
- Az eredmény alapján visszatér az isAuthorized érték.
Kapcsolat hozzáadása a Felhasználói adatok függvényhez
A funkció engedélyezése előtt hozzá kell adnia egy kapcsolatot egy felhasználói adat függvény típushoz.
- A Beállítások területen válassza a Kapcsolatok és átjárók kezelése lehetőséget.
- A Kapcsolatok lapon válassza az Új lehetőséget.
- Az Új kapcsolat lapon válassza a Felhő lehetőséget, adja meg a kapcsolat nevét, és válassza a Felhasználói adatok függvényt kapcsolattípusként. Használja az OAUth metódust , és frissítse a hitelesítő adatokat a hitelesítéshez. A kapcsolat létrehozásakor nem kell ellenőriznie a "Kapcsolat használatának engedélyezése helyszíni adatátjárókkal vagy virtuális hálózati adatátjárókkal" jelölőnégyzetet.
Az engedélyezési funkció engedélyezése
Engedélyezze az engedélyezési funkciót, miután a függvény és a felhasználói adatfunkció típus kapcsolata be lett állítva. A funkció engedélyezéséhez vagy letiltásához írási engedélyekre van szüksége.
- Nyissa meg a GraphQL-hez készült API-t, és válassza a Beállítások lehetőséget.
- Válassza az Engedélyezés (előzetes verzió) lehetőséget, és engedélyezze a funkciót.
- Adja meg a felhasználói adatfüggvény elemét és a használni kívánt hitelesítési függvényt.
Korlátozások és viselkedés
| Category | Részletek |
|---|---|
| Authentication | Csak az OAuth támogatott |
| B2B-támogatás | Kapcsolatkorlátozások miatt nem érhető el a vendégfelhasználók számára |
| Permissions | A konfigurációhoz írás szükséges; API-hívásokhoz futtatás szükséges. |
| Nem támogatott konfigurációk | Az objektumazonosítóval (OID) rendelkező SPN nem támogatott |
| Gyorsítótár | A módosítások alkalmazása akár 15 percet is igénybe vehet |
| Régiófüggőség | Az UDF-nek és a GraphQL-nek ugyanabban a régióban kell lennie |
| Privát hivatkozás | Nem érhető el a letiltott nyilvános hozzáféréssel |
| Engedélyezési hibák | A kérelmek sikertelenek, ha isAuthorized hamis, vagy ha az RBAC engedélyezve van, és a visszaadott szerepkörök hiányoznak, vagy nem egyeznek meg egy konfigurált szerepkörrel. |
| Szerepkörkezelés | Ha az RBAC engedélyezve van, a függvénynek szerepköröket kell visszaadnia. A rendszer csak az első egyező szerepkört alkalmazza. |