Szerepalapú hozzáférés-szabályozás konfigurálása Microsoft Entra ID segítségével Azure Cosmos DB fiókjához
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Feljegyzés
Ez a cikk az Adatsík-műveletek szerepköralapú hozzáférés-vezérléséről szól az Azure Cosmos DB-ben. Ha felügyeletisík-műveleteket használ, tekintse meg a felügyeletisík-műveletekre alkalmazott szerepköralapú hozzáférés-vezérlést .
Az Azure Cosmos DB egy beépített szerepköralapú hozzáférés-vezérlési rendszert tesz elérhetővé, amely lehetővé teszi a következőket:
- Az adatkérések hitelesítése Microsoft Entra-identitással.
- Az adatkérések engedélyezése részletes, szerepköralapú engedélymodellel.
Fogalmak
Az Azure Cosmos DB adatsík szerepköralapú hozzáférés-vezérlése olyan fogalmakra épül, amelyek gyakran megtalálhatók más szerepköralapú hozzáférés-vezérlési rendszerekben, például az Azure szerepköralapú hozzáférés-vezérlésében:
- Az engedélymodell műveletkészletből áll; mindegyik művelet egy vagy több adatbázisműveletre van leképeződve. Néhány példa a műveletekre: elem olvasása, elem írása vagy lekérdezés végrehajtása.
- Az Azure Cosmos DB-felhasználók az engedélyezett műveletek listáját tartalmazó szerepkör-definíciókat hoznak létre.
- A szerepkördefiníciók szerepkör-hozzárendelésekkel rendelhetők hozzá adott Microsoft Entra-identitásokhoz. A szerepkör-hozzárendelés meghatározza azt a hatókört is, amelyre a szerepkördefiníció vonatkozik; jelenleg három hatókör létezik:
- Egy Azure Cosmos DB-fiók,
- Azure Cosmos DB-adatbázis,
- Egy Azure Cosmos DB-tároló.
Engedélymodell
Fontos
Ez az engedélymodell csak az adatok olvasását és írását magában foglaló adatbázisműveleteket fedi le. Nem terjed ki semmilyen felügyeleti műveletre a felügyeleti erőforrásokon, beleértve a következőket:
- Adatbázis létrehozása/cseréje/törlése
- Tároló létrehozása/cseréje/törlése
- Tároló átviteli sebességének olvasása/cseréje
- Tárolt eljárások létrehozása/cseréje/törlése/olvasása
- Triggerek létrehozása/cseréje/törlése/olvasása
- Felhasználó által definiált függvények létrehozása/cseréje/törlése/olvasása
Nem használhat Azure Cosmos DB adatsík SDK-t a felügyeleti műveletek Microsoft Entra-identitással való hitelesítéséhez. Ehelyett azure-beli szerepköralapú hozzáférés-vezérlést kell használnia az alábbi lehetőségek egyikével:
- Azure Resource Manager-sablonok (ARM-sablonok)
- Azure PowerShell-szkriptek
- Azure CLI-szkriptek
- Az Azure felügyeleti kódtárai a következő helyen érhetők el:
Az Olvasási adatbázis és az Olvasási tároló metaadat-kérésnek minősül. Ezekhez a műveletekhez a következő szakaszban leírtak szerint lehet hozzáférni.
Ez a táblázat felsorolja az engedélymodell által közzétett összes műveletet.
Név | Megfelelő adatbázis-műveletek |
---|---|
Microsoft.DocumentDB/databaseAccounts/readMetadata |
Fiók metaadatainak olvasása. Részletekért tekintse meg a metaadat-kérelmeket . |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/create |
Hozzon létre egy új elemet. |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read |
Az egyes elemek beolvasása az azonosító és a partíciókulcs alapján (pontolvasás). |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/replace |
Meglévő elem cseréje. |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/upsert |
"Upsert" egy elem. Ez a művelet létrehoz egy elemet, ha még nem létezik, vagy ha létezik, lecseréli az elemet. |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/delete |
Elem törlése. |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery |
SQL-lekérdezés végrehajtása. |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed |
Olvasás a tároló változáscsatornájából. SQL-lekérdezések végrehajtása szoftverfejlesztői készletek (SDK-k) használatával. |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeStoredProcedure |
Tárolt eljárás végrehajtása. |
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/manageConflicts |
Több írási régiós fiók ütközéseinek kezelése (vagyis elemek listázása és törlése az ütközéscsatornából). |
Feljegyzés
Amikor lekérdezéseket hajt végre az SDK-kon keresztül, mindkettőre Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery
és Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed
engedélyekre is szükség van.
A helyettesítő karakterek tárolók és elemek szintjén egyaránt támogatottak:
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*
Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*
Metaadat-kérelmek
Az Azure Cosmos DB SDK-k írásvédett metaadat-kéréseket adnak ki az inicializálás során, és adott adatkéréseket szolgálnak ki. Ezek a kérések különböző konfigurációs adatokat kérnek le, például:
- A fiók globális konfigurációja, amely magában foglalja azokat az Azure-régiókat, amelyekben a fiók elérhető.
- A tárolók partíciókulcsa vagy indexelési szabályzata.
- A tárolót alkotó fizikai partíciók és azok címei.
A fiókban tárolt adatok egyikét sem fogják lekérni.
Az engedélymodell optimális átláthatóságának biztosítása érdekében a művelet kifejezetten lefedi ezeket a Microsoft.DocumentDB/databaseAccounts/readMetadata
metaadat-kérelmeket. Ezt a műveletet minden olyan helyzetben engedélyezni kell, ahol az Azure Cosmos DB-fiók az Azure Cosmos DB SDK-k egyikén keresztül érhető el. Hozzárendelhető (szerepkör-hozzárendeléssel) az Azure Cosmos DB-hierarchia bármely szintjén (azaz fiók, adatbázis vagy tároló).
A művelet által Microsoft.DocumentDB/databaseAccounts/readMetadata
engedélyezett tényleges metaadat-kérelmek a művelet hatókörétől függnek:
Hatókör | A művelet által engedélyezett kérelmek |
---|---|
Számla | • Az adatbázisok listázása a fiók alatt • A fiókban lévő összes adatbázis esetében az adatbázis hatókörében engedélyezett műveletek |
Adatbázis | • Adatbázis metaadatainak olvasása • A tárolók listázása az adatbázis alatt • Az adatbázis minden tárolója esetében a tároló hatókörében engedélyezett műveletek |
Tároló | • Tároló metaadatainak olvasása • Fizikai partíciók listázása a tároló alatt • Az egyes fizikai partíciók címének feloldása |
Fontos
A művelet metaadatai nem tartalmazzák az átviteli sebességet.
Beépített szerepkör-definíciók
Az Azure Cosmos DB két beépített szerepkör-definíciót tesz elérhetővé:
Fontos
A szerepkördefiníciók itt az Azure Cosmos DB-specifikus szerepkördefiníciókra vonatkoznak. Ezek eltérnek az Azure szerepköralapú hozzáférés-vezérlési szerepkör-definícióitól.
ID (Azonosító) | Név | Belefoglalt műveletek |
---|---|---|
00000000-0000-0000-0000-000000000001 | Cosmos DB beépített adatolvasó | Microsoft.DocumentDB/databaseAccounts/readMetadata Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed |
00000000-0000-0000-0000-000000000002 | A Cosmos DB beépített adatszolgáltatója | Microsoft.DocumentDB/databaseAccounts/readMetadata Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/* Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/* |
Egyéni szerepkör-definíciók létrehozása
Egyéni szerepkördefiníció létrehozásakor meg kell adnia a következőt:
- Az Azure Cosmos DB-fiók neve.
- A fiókot tartalmazó erőforráscsoport.
- A szerepkördefiníció típusa:
CustomRole
. - A szerepkördefiníció neve.
- Azon műveletek listája, amelyeket engedélyezni szeretne a szerepkör számára.
- Egy vagy több hatókör, amelyhez a szerepkördefiníció hozzárendelhető; A támogatott hatókörök a következők:
/
(fiókszintű),/dbs/<database-name>
(adatbázisszintű),/dbs/<database-name>/colls/<container-name>
(tárolószintű).
Feljegyzés
A leírt műveletek a következőkben érhetők el:
- Azure PowerShell: Az.CosmosDB 1.2.0-s vagy újabb verziója
- Azure CLI: 2.24.0-s vagy újabb verzió
Az Azure PowerShell használata
Hozzon létre egy MyReadOnlyRole nevű szerepkört, amely csak olvasási műveleteket tartalmaz:
$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
-ResourceGroupName $resourceGroupName `
-Type CustomRole -RoleName MyReadOnlyRole `
-DataAction @( `
'Microsoft.DocumentDB/databaseAccounts/readMetadata',
'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read', `
'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery', `
'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed') `
-AssignableScope "/"
Hozzon létre egy MyReadWriteRole nevű szerepkört, amely az összes műveletet tartalmazza:
New-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
-ResourceGroupName $resourceGroupName `
-Type CustomRole -RoleName MyReadWriteRole `
-DataAction @( `
'Microsoft.DocumentDB/databaseAccounts/readMetadata',
'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*', `
'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*') `
-AssignableScope "/"
Listázza a saját azonosítóik lekéréséhez létrehozott szerepkördefiníciókat:
Get-AzCosmosDBSqlRoleDefinition -AccountName $accountName `
-ResourceGroupName $resourceGroupName
RoleName : MyReadWriteRole
Id : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type : CustomRole
Permissions : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
counts/<myCosmosAccount>}
RoleName : MyReadOnlyRole
Id : /subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAcc
ounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>
Type : CustomRole
Permissions : {Microsoft.Azure.Management.CosmosDB.Models.Permission}
AssignableScopes : {/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAc
counts/<myCosmosAccount>}
Az Azure CLI-vel
Hozzon létre egy MyReadOnlyRole nevű szerepkört, amely csak olvasási műveleteket tartalmaz egy role-definition-ro.json nevű fájlban:
{
"RoleName": "MyReadOnlyRole",
"Type": "CustomRole",
"AssignableScopes": ["/"],
"Permissions": [{
"DataActions": [
"Microsoft.DocumentDB/databaseAccounts/readMetadata",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
]
}]
}
resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-ro.json
Hozzon létre egy MyReadWriteRole nevű szerepkört, amely egy role-definition-rw.json nevű fájl összes műveletét tartalmazza:
{
"RoleName": "MyReadWriteRole",
"Type": "CustomRole",
"AssignableScopes": ["/"],
"Permissions": [{
"DataActions": [
"Microsoft.DocumentDB/databaseAccounts/readMetadata",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
]
}]
}
az cosmosdb sql role definition create --account-name $accountName --resource-group $resourceGroupName --body @role-definition-rw.json
Listázza a saját azonosítóik lekéréséhez létrehozott szerepkördefiníciókat:
az cosmosdb sql role definition list --account-name $accountName --resource-group $resourceGroupName
[
{
"assignableScopes": [
"/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
],
"id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
"name": "<roleDefinitionId>",
"permissions": [
{
"dataActions": [
"Microsoft.DocumentDB/databaseAccounts/readMetadata",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*"
],
"notDataActions": []
}
],
"resourceGroup": "<myResourceGroup>",
"roleName": "MyReadWriteRole",
"sqlRoleDefinitionGetResultsType": "CustomRole",
"type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
},
{
"assignableScopes": [
"/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>"
],
"id": "/subscriptions/<mySubscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>",
"name": "<roleDefinitionId>",
"permissions": [
{
"dataActions": [
"Microsoft.DocumentDB/databaseAccounts/readMetadata",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/read",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/executeQuery",
"Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/readChangeFeed"
],
"notDataActions": []
}
],
"resourceGroup": "<myResourceGroup>",
"roleName": "MyReadOnlyRole",
"sqlRoleDefinitionGetResultsType": "CustomRole",
"type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions"
}
]
Az Azure Resource Manager-sablonok használata
Az Azure Resource Manager-sablonok szerepkördefiníciók létrehozásához való használatával kapcsolatos hivatkozásért és példákért lásd: Microsoft.DocumentDB
databaseAccounts/sqlRoleDefinitions
.
Szerepkör-hozzárendelések létrehozása
Beépített vagy egyéni szerepkördefiníciókat társíthat a Microsoft Entra-identitásokhoz. Szerepkör-hozzárendelés létrehozásakor meg kell adnia a következőt:
Az Azure Cosmos DB-fiók neve.
A fiókot tartalmazó erőforráscsoport.
A hozzárendelni kívánt szerepkördefiníció azonosítója.
Annak az identitásnak a fő azonosítója, amelyhez a szerepkördefiníciót hozzá kell rendelni.
A szerepkör-hozzárendelés hatóköre; A támogatott hatókörök a következők:
/
(fiókszintű)/dbs/<database-name>
(adatbázisszintű)/dbs/<database-name>/colls/<container-name>
(tárolószintű)
A hatókörnek meg kell egyeznie a szerepkördefiníció hozzárendelhető hatóköreinek egyikének almappájával.
Feljegyzés
Ha szerepkör-hozzárendelést szeretne létrehozni egy szolgáltatásnévhez, mindenképpen használja annak objektumazonosítóját a Microsoft Entra ID portál panel Nagyvállalati alkalmazások szakaszában található módon.
Feljegyzés
A leírt műveletek a következőkben érhetők el:
- Azure PowerShell: Az.CosmosDB 1.2.0-s vagy újabb verziója
- Azure CLI: 2.24.0-s vagy újabb verzió
Az Azure PowerShell használata
Szerepkör hozzárendelése identitáshoz:
$resourceGroupName = "<myResourceGroup>"
$accountName = "<myCosmosAccount>"
$readOnlyRoleDefinitionId = "<roleDefinitionId>" # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
$principalId = "<aadPrincipalId>"
New-AzCosmosDBSqlRoleAssignment -AccountName $accountName `
-ResourceGroupName $resourceGroupName `
-RoleDefinitionId $readOnlyRoleDefinitionId `
-Scope "/" `
-PrincipalId $principalId
Az Azure CLI-vel
Szerepkör hozzárendelése identitáshoz:
resourceGroupName='<myResourceGroup>'
accountName='<myCosmosAccount>'
readOnlyRoleDefinitionId='<roleDefinitionId>' # as fetched above
# For Service Principals make sure to use the Object ID as found in the Enterprise applications section of the Azure Active Directory portal blade.
principalId='<aadPrincipalId>'
az cosmosdb sql role assignment create --account-name $accountName --resource-group $resourceGroupName --scope "/" --principal-id $principalId --role-definition-id $readOnlyRoleDefinitionId --principal-type "ServicePrincipal"
Bicep-/Azure Resource Manager-sablonok használata
Bicep-sablonnal végzett beépített hozzárendelés esetén:
resource sqlRoleAssignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2023-04-15' = {
name: guid(<roleDefinitionId>, <aadPrincipalId>, <databaseAccountResourceId>)
parent: databaseAccount
properties:{
principalId: <aadPrincipalId>
roleDefinitionId: '/${subscription().id}/resourceGroups/<databaseAccountResourceGroup>/providers/Microsoft.DocumentDB/databaseAccounts/<myCosmosAccount>/sqlRoleDefinitions/<roleDefinitionId>'
scope: <databaseAccountResourceId>
}
}
Az Azure Resource Manager-sablonok szerepkör-hozzárendelések létrehozására való használatával kapcsolatos hivatkozásért és példákért lásd: Microsoft.DocumentDB
databaseAccounts/sqlRoleAssignments
.
Az SDK inicializálása a Microsoft Entra-azonosítóval
Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlés alkalmazásbeli használatához frissítenie kell az Azure Cosmos DB SDK inicializálásának módját. A fiók elsődleges kulcsának átadása helyett egy osztálypéldányt TokenCredential
kell átadnia. Ez a példány biztosítja az Azure Cosmos DB SDK számára a Microsoft Entra-jogkivonat lekéréséhez szükséges környezetet a használni kívánt identitás nevében.
A példányok létrehozásának TokenCredential
módja meghaladja a jelen cikk hatókörét. Az ilyen példányok sokféleképpen hozhatók létre a használni kívánt Microsoft Entra-identitás típusától függően (felhasználónév, szolgáltatásnév, csoport stb.). A legfontosabb, hogy a példánynak TokenCredential
meg kell oldania azt az identitást (egyszerű azonosítót), amelyhez a szerepköreit hozzárendelte. Példákat találhat egy osztály létrehozására TokenCredential
:
Az alábbi példák egy egyszerű szolgáltatást használnak egy ClientSecretCredential
példányhoz.
A .NET-ben
Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlése jelenleg támogatott a .NET SDK V3-ban.
TokenCredential servicePrincipal = new ClientSecretCredential(
"<azure-ad-tenant-id>",
"<client-application-id>",
"<client-application-secret>");
CosmosClient client = new CosmosClient("<account-endpoint>", servicePrincipal);
A Javában
Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlése jelenleg támogatott a Java SDK V4-ben.
TokenCredential ServicePrincipal = new ClientSecretCredentialBuilder()
.authorityHost("https://login.microsoftonline.com")
.tenantId("<azure-ad-tenant-id>")
.clientId("<client-application-id>")
.clientSecret("<client-application-secret>")
.build();
CosmosAsyncClient Client = new CosmosClientBuilder()
.endpoint("<account-endpoint>")
.credential(ServicePrincipal)
.build();
JavaScriptben
Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlése jelenleg támogatott a JavaScript SDK V3-ban.
const servicePrincipal = new ClientSecretCredential(
"<azure-ad-tenant-id>",
"<client-application-id>",
"<client-application-secret>");
const client = new CosmosClient({
endpoint: "<account-endpoint>",
aadCredentials: servicePrincipal
});
Pythonban
Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlését a Python SDK 4.3.0b4-s és újabb verziói támogatják.
aad_credentials = ClientSecretCredential(
tenant_id="<azure-ad-tenant-id>",
client_id="<client-application-id>",
client_secret="<client-application-secret>")
client = CosmosClient("<account-endpoint>", aad_credentials)
Kérelmek hitelesítése a REST API-n
A REST API engedélyezési fejlécének létrehozásakor állítsa a típusparamétert Microsoft Entra ID-ra, a kivonat-aláírást (sig) pedig az OAuth-jogkivonatra az alábbi példában látható módon:
type=aad&ver=1.0&sig=<token-from-oauth>
Az Adatkezelő használata
Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlését az Adatkezelőben (vagy az Azure Portalon vagy a következő címen https://cosmos.azure.com) az Entra ID RBAC engedélyezése beállítás szabályozza. Ezt a beállítást az Adatkezelő felületének jobb felső sarkában található "kerék" ikonnal érheti el.
A beállítás három lehetséges értékkel rendelkezik:
Automatikus (alapértelmezett): Ebben a módban a rendszer automatikusan szerepköralapú hozzáférés-vezérlést használ, ha a fiók letiltotta a kulcsok használatát. Ellenkező esetben az Adatkezelő fiókkulcsokat használ az adatkérésekhez.
Igaz: Ebben a módban a szerepköralapú hozzáférés mindig az Adatkezelő adatkéréseihez lesz használva. Ha a fiók nincs engedélyezve a szerepköralapú hozzáféréshez, a kérések sikertelenek lesznek.
Hamis: Ebben a módban a fiókkulcsok mindig az Adatkezelő adatkéréseihez lesznek használva. Ha a fiók letiltotta a kulcsok használatát, a kérések sikertelenek lesznek.
Ha olyan módokat használ, amelyek lehetővé teszik a szerepköralapú hozzáférést az Azure Portal Adatkezelőjében, az adatkérések végrehajtása előtt az Entra ID RBAC bejelentkezés gombján (az Adatkezelő parancssávján) kell választania. Ez nem szükséges, ha a Cosmos Explorert használja a cosmos.azure.com. Győződjön meg arról, hogy a bejelentkezett identitás megfelelő szerepkör-definíciókkal lett hozzárendelve az adathozzáférés engedélyezéséhez.
Azt is vegye figyelembe, hogy ha a módot a fiókkulcsokat használó módra módosítja, az elindíthat egy kérést az elsődleges kulcs beolvasására a bejelentkezett identitás nevében.
Feljegyzés
Korábban a szerepköralapú hozzáférés csak a Cosmos Explorerben https://cosmos.azure.com/?feature.enableAadDataPlane=true
támogatott. Ez továbbra is támogatott, és felülbírálja az Entra ID RBAC-beállítás értékét. A lekérdezési paraméter használata egyenértékű a korábban említett "True" móddal.
Adatkérések naplózása
Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlés használatakor a diagnosztikai naplók identitás- és engedélyezési információkkal bővülnek az egyes adatműveletekhez. Ezzel a kiegészítéssel részletes naplózást végezhet, és lekérheti az Azure Cosmos DB-fiókba küldött minden adatkéréshez használt Microsoft Entra-identitást.
A DataPlaneRequests naplókategória további információi két további oszlopból állnak:
aadPrincipalId_g
A kérelem hitelesítéséhez használt Microsoft Entra-identitás egyszerű azonosítóját jeleníti meg.aadAppliedRoleAssignmentId_g
A kérés engedélyezésekor teljesített szerepkör-hozzárendelést jeleníti meg.
Szerepköralapú hozzáférés-vezérlés kényszerítése egyetlen hitelesítési módszerként
Olyan helyzetekben, amikor az ügyfeleket kizárólag szerepköralapú hozzáférés-vezérléssel szeretné kikényszeríteni az Azure Cosmos DB-hez való csatlakozásra, letilthatja a fiók elsődleges/másodlagos kulcsait. Ha így tesz, a rendszer aktívan elutasítja az elsődleges/másodlagos kulcsot vagy erőforrás-jogkivonatot használó bejövő kéréseket.
Használjon Azure Resource Manager-sablonokat
Az Azure Cosmos DB-fiók Azure Resource Manager-sablonokkal történő létrehozásakor vagy frissítésekor állítsa a tulajdonságot a disableLocalAuth
következőre true
:
"resources": [
{
"type": " Microsoft.DocumentDB/databaseAccounts",
"properties": {
"disableLocalAuth": true,
// ...
},
// ...
},
// ...
]
Korlátok
- Azure Cosmos DB-fiókonként legfeljebb 100 szerepkördefiníciót és 2000 szerepkör-hozzárendelést hozhat létre.
- Szerepkördefiníciókat csak az Azure Cosmos DB-fiókhoz tartozó Microsoft Entra-bérlőhöz tartozó Microsoft Entra-identitásokhoz rendelhet.
- A Microsoft Entra-csoportfeloldás jelenleg nem támogatott a több mint 200 csoporthoz tartozó identitások esetében.
- A Microsoft Entra-jogkivonat jelenleg fejlécként van átadva az Azure Cosmos DB szolgáltatásnak küldött minden egyes kéréssel, növelve a teljes hasznos adatméretet.
Gyakori kérdések
Ez a szakasz a szerepköralapú hozzáférés-vezérléssel és az Azure Cosmos DB-sel kapcsolatos gyakori kérdéseket tartalmazza.
Mely Azure Cosmos DB API-k támogatják az adatsíkok szerepköralapú hozzáférés-vezérlését?
Jelenleg csak a NoSQL API támogatott.
Elvégezhető a szerepkör-definíciók és szerepkör-hozzárendelések kezelése az Azure Portalon?
Az Azure Portal szerepkör-kezelési támogatása még nem érhető el.
Az Azure Cosmos DB API for NoSQL mely SDK-jai támogatják a szerepköralapú hozzáférés-vezérlést?
A .NET V3, Java V4, JavaScript V3 és Python V4.3+ SDK-k jelenleg támogatottak.
Az Azure Cosmos DB SDK-k automatikusan frissítik a Microsoft Entra-jogkivonatot, amikor lejár?
Igen.
Le lehet tiltani a fiók elsődleges/másodlagos kulcsainak használatát a szerepköralapú hozzáférés-vezérlés használatakor?
Igen, tekintse meg a szerepköralapú hozzáférés-vezérlés kényszerítését egyetlen hitelesítési módszerként.