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.
A Data API Builder szerepköralapú engedélyezési munkafolyamatot használ. A rendszer minden bejövő kérelmet, akár hitelesítve van, akár nem, hozzárendel egy szerepkörhöz. A szerepkörök lehetnek rendszerszerepkörök vagy felhasználói szerepkörök. A hozzárendelt szerepkör ezután a konfigurációban megadott engedélyekkel van ellenőrizve, hogy megismerje, milyen műveletek, mezők és szabályzatok érhetők el az adott szerepkörhöz a kért entitáson.
A felhasználó szerepkörének meghatározása
role nem rendelkezik alapértelmezett engedélyekkel. Ha a Data API Builder meghatároz egy szabályt, akkor az entitásnak permissionsactions -t kell meghatároznia, hogy a kérés sikeres legyen.
| Token megadva |
x-ms-api-role Feltéve |
x-ms-api-role tokenben |
Eredményként kapott szerepkör |
|---|---|---|---|
| Nem | Nem | Nem | anonymous |
| Igen | Nem | Nem | authenticated |
| Igen | Igen | Nem | Kivétel |
| Igen | Igen | Igen |
x-ms-api-role érték |
Annak érdekében, hogy anonymous vagy authenticated helyett más szerepkört töltsön be, a x-ms-api-role fejlécre van szükség.
Megjegyzés:
Egy kérésnek csak egy szerepköre lehet. Még ha a jogkivonat több szerepkört is jelez, az x-ms-api-role érték kiválasztja, hogy melyik szerepkör legyen hozzárendelve a kéréshez.
Rendszerszerepkörök
A rendszerszerepkörök a Data API Builder által felismert beépített szerepkörök. A rendszerszerepkör automatikusan hozzárendelve van a kérelmezőhöz, függetlenül attól, hogy a kérelmező milyen szerepkör-tagságot jelöl a hozzáférési jogkivonataikban. Két rendszerszerepkör van: anonymous és authenticated.
Névtelen rendszerszerepkör
A anonymous rendszerszerepkör a nem hitelesített felhasználók által végrehajtott kérelmekhez van hozzárendelve. A futtatókörnyezet konfigurációja által definiált entitásoknak engedélyekkel kell rendelkezniük a anonymous szerepkörhöz, ha nem hitelesített hozzáférésre van szükség.
példa
Az alábbi Data API Builder-futtatókörnyezet-konfiguráció azt mutatja be, hogy a rendszerszerepkör anonymous explicit módon konfigurálva van a Book entitás olvasási hozzáférésével:
"Book": {
"source": "books",
"permissions": [
{
"role": "anonymous",
"actions": [ "read" ]
}
]
}
Amikor egy ügyfélalkalmazás egy nem hitelesített felhasználó nevében küld egy, a Book entitáshoz hozzáférő kérést, az alkalmazásnak nem szabad tartalmaznia a Authorization HTTP-fejlécet.
Hitelesített rendszerszerepkör
A authenticated rendszerszerepkör a hitelesített felhasználók által végrehajtott kérelmekhez van hozzárendelve.
példa
Az alábbi Data API Builder-futtatókörnyezet-konfiguráció azt mutatja be, hogy a rendszerszerepkör authenticated explicit módon konfigurálva van a Book entitás olvasási hozzáférésével:
"Book": {
"source": "books",
"permissions": [
{
"role": "authenticated",
"actions": [ "read" ]
}
]
}
Felhasználói szerepkörök
A felhasználói szerepkörök nem rendszerszintű szerepkörök, amelyek a futtatókörnyezet konfigurációjában beállított identitásszolgáltató felhasználóihoz vannak rendelve. Ahhoz, hogy a Data API Builder kiértékeljen egy kérést egy felhasználói szerepkör kontextusában, két követelménynek kell teljesülnie:
- Az ügyfélalkalmazás által biztosított hozzáférési jogkivonatnak tartalmaznia kell a felhasználó szerepkör-tagságát listázó szerepkör-jogcímeket.
- Az ügyfélalkalmazásnak tartalmaznia kell a HTTP-fejlécet
X-MS-API-ROLEa kérésekkel, és meg kell adnia a fejléc értékét a kívánt felhasználói szerepkörként.
Példa a szerepkör-értékelésre
Az alábbi példa a Book Data API Builder futtatókörnyezet konfigurációjában konfigurált entitáshoz érkező kéréseket mutatja be az alábbiak szerint:
"Book": {
"source": "books",
"permissions": [
{
"role": "anonymous",
"actions": [ "read" ]
},
{
"role": "authenticated",
"actions": [ "read" ]
},
{
"role": "author",
"actions": [ "read" ]
}
]
}
A Static Web Appsben a felhasználó alapértelmezés szerint a névtelen szerepkör tagja. Ha a felhasználó hitelesítve van, akkor mind a anonymous, mind a authenticated szerepkörök tagja.
Amikor egy ügyfélalkalmazás hitelesített kérelmet küld a Static Web Apps adatbázis-kapcsolataival (előzetes verzió) üzembe helyezett Data API Buildernek, az ügyfélalkalmazás egy hozzáférési jogkivonatot biztosít, amelyet a Static Web Apps JSON-vá alakít át:
{
"identityProvider": "azuread",
"userId": "d75b260a64504067bfc5b2905e3b8182",
"userDetails": "username",
"userRoles": ["anonymous", "authenticated", "author"]
}
Mivel a Data API Builder egyetlen szerepkör kontextusában értékeli ki a kéréseket, alapértelmezés szerint a rendszerszerepkör authenticated kontextusában értékeli ki a kérést.
Ha az ügyfélalkalmazás kérése a HTTP-fejlécet X-MS-API-ROLE is tartalmazza az értékkel author, a rendszer kiértékeli a kérést a author szerepkör kontextusában. Példakérés hozzáférési jogkivonattal és X-MS-API-ROLE HTTP-fejléccel:
curl -k -r GET -H 'Authorization: Bearer ey...' -H 'X-MS-API-ROLE: author' https://localhost:5001/api/Book
Fontos
Az ügyfélalkalmazás kérését a rendszer elutasítja, ha a megadott hozzáférési jogkivonat jogcíme roles nem tartalmazza a fejlécben felsorolt szerepkört X-MS-API-ROLE .
Engedélyek
Az engedélyek leírása:
- Ki kérhet kéréseket egy entitásnál szerepkör-tagság alapján?
- Milyen műveleteket (létrehozás, olvasás, frissítés, törlés, végrehajtás) hajthat végre egy felhasználó?
- Mely mezők érhetők el egy adott művelethez?
- Milyen további korlátozások vonatkoznak a kérés által visszaadott eredményekre?
Az engedélyek meghatározásának szintaxisát a futtatókörnyezet konfigurációs cikkében ismertetjük.
Fontos
Egy entitás engedélykonfigurációjában több szerepkör is definiálható. A kérések kiértékelése azonban csak egyetlen szerepkör kontextusában történik:
- Alapértelmezés szerint a rendszerszerepkör
anonymousvagyauthenticated - Amikor belefoglalásra kerül, a szerepkör a
X-MS-API-ROLEHTTP-fejlécben állítható be.
Alapértelmezés szerint biztonságos
Az entitások alapértelmezés szerint nincsenek konfigurálva engedélyekkel, ami azt jelenti, hogy senki sem férhet hozzá az entitáshoz. A Data API Builder emellett figyelmen kívül hagyja az adatbázis-objektumokat, ha nem hivatkoznak rájuk a futtatókörnyezet konfigurációjában.
Az engedélyeket explicit módon kell konfigurálni
Az entitáshoz való hitelesítés nélküli hozzáférés engedélyezéséhez a anonymous szerepkört explicit módon kell definiálni az entitás engedélyeiben. Az entitás engedélyei például kifejezetten úgy van beállítva, book hogy engedélyezve legyen a hitelesítés nélküli olvasási hozzáférés:
"book": {
"source": "dbo.books",
"permissions": [{
"role": "anonymous",
"actions": [ "read" ]
}]
}
Az entitások engedélydefiníciójának egyszerűsítése érdekében tegyük fel, hogy ha nincs külön engedély a authenticated szerepkörhöz, akkor a rendszer a szerepkörhöz anonymous definiált engedélyeket használja. A book korábban bemutatott konfiguráció lehetővé teszi, hogy bármely névtelen vagy hitelesített felhasználó olvasási műveleteket hajtson végre az book entitáson.
Ha az olvasási műveleteket csak hitelesített felhasználókra kell korlátozni, a következő engedélykonfigurációt kell beállítani, ami a nem hitelesített kérések elutasítását eredményezi:
"book": {
"source": "dbo.books",
"permissions": [{
"role": "authenticated",
"actions": [ "read" ]
}]
}
Egy entitás nem igényel és nincs előre konfigurálva a anonymous és authenticated szerepkörök engedélyeivel. Egy vagy több felhasználói szerepkör definiálható az entitás engedélykonfigurációjában, és minden más definiálatlan szerepkör, rendszer vagy felhasználó automatikusan megtagadja a hozzáférést.
Az alábbi példában a felhasználói szerepkör administrator az entitás egyetlen definiált szerepköre book . A felhasználónak tagja kell legyen a administrator szerepkörnek, és ezt a szerepkört bele kell foglalnia a X-MS-API-ROLE HTTP-fejlécbe, hogy az book entitáson működhessen.
"book": {
"source": "dbo.books",
"permissions": [{
"role": "administrator",
"actions": [ "*" ]
}]
}
Megjegyzés:
A GraphQL-lekérdezések hozzáférés-vezérlésének kikényszerítéséhez a Data API Builder Azure Cosmos DB-vel való használatakor a megadott @authorize kell használnia az irányelvet. A GraphQL-lekérdezések GraphQL-mutációi és szűrői esetében azonban a hozzáférés-vezérlést a korábban ismertetett engedélykonfiguráció továbbra is kikényszeríti.
Műveletek
A műveletek egy szerepkör hatókörén belüli entitás akadálymentességét írják le. A műveletek egyedileg vagy a helyettesítő karakterrel is megadhatóak: * (csillag). A helyettesítő karakter parancsikonja az entitástípushoz támogatott összes műveletet jelöli:
- Táblák és nézetek:
create,read,update,delete - Tárolt eljárások:
execute
A műveletekkel kapcsolatos további információkért tekintse meg a konfigurációs fájl dokumentációját.
Mezőhozzáférés
Konfigurálhatja, hogy mely mezők legyenek elérhetők egy művelethez. Beállíthatja például, hogy mely mezőket vegye fel és zárja ki a read műveletből.
Az alábbi példa megakadályozza, hogy a free-access szerepkörben lévő felhasználók olvasási műveleteket hajtsanak végre.Column3
Column3 A GET-kérelmekre (REST-végpontra) vagy lekérdezésekre (GraphQL-végpontra) mutató hivatkozások elutasított kérést eredményeznek:
"book": {
"source": "dbo.books",
"permissions": [
{
"role": "free-access",
"actions": [
"create",
"update",
"delete",
{
"action": "read",
"fields": {
"include": [ "Column1", "Column2" ],
"exclude": [ "Column3" ]
}
}
]
}
]
}
Megjegyzés:
A GraphQL-lekérdezések hozzáférés-vezérlésének kikényszerítéséhez a Data API Builder Azure Cosmos DB-vel való használatakor a megadott @authorize kell használnia az irányelvet. A GraphQL-lekérdezések GraphQL-mutációi és szűrői esetében azonban a hozzáférés-vezérlést továbbra is az itt ismertetett engedélykonfiguráció kényszeríti ki.
Elemszintű biztonság
Az adatbázisházirend-kifejezések lehetővé teszik az eredmények további korlátozását. Az adatbázis-szabályzatok kifejezéseket fordítanak le az adatbázison végrehajtott lekérdezési predikátumokra. Az adatbázisházirend-kifejezések a következő műveletekhez támogatottak:
- létrehoz
- beolvasás
- frissít
- töröl
Figyelmeztetés
A tárolt eljárásokhoz használt végrehajtási művelet nem támogatja az adatbázis-szabályzatokat.
Megjegyzés:
A CosmosDB for NoSQL jelenleg nem támogatja az adatbázis-szabályzatokat.
Az adatbázis-szabályzatokkal kapcsolatos további információkért tekintse meg a konfigurációs fájl dokumentációját.
példa
Egy adatbázis-szabályzat, amely korlátozza a read szerepkörhöz tartozó consumer műveletet, hogy csak olyan rekordokat adjon vissza, amelyeknek a címe "Mintacím".
{
"role": "consumer",
"actions": [
{
"action": "read",
"policy": {
"database": "@item.title eq 'Sample Title'"
}
}
]
}