Vezérlősík szerepköralapú hozzáférés-vezérlés használata a NoSQL-hez készült Azure Cosmos DB-vel
A KÖVETKEZŐRE VONATKOZIK: NoSQL
Az üzembe helyezési útmutató sorrendjének diagramja a következő helyekkel együtt: Áttekintés, Fogalmak, Előkészítés, Szerepköralapú hozzáférés-vezérlés, Hálózat és Referencia. A szerepköralapú hozzáférés-vezérlés helye jelenleg ki van emelve.
Ez a cikk végigvezeti azokat a lépéseket, amelyek segítségével identitás-hozzáférést biztosíthat egy Azure Cosmos DB for NoSQL-fiók és erőforrásai kezeléséhez.
Fontos
A cikkben ismertetett lépések csak a vezérlősík hozzáférését ismertetik a fiók hierarchiájában lévő erőforrások saját maga által végzett műveletek végrehajtásához. A vezérlősík szerepköreinek, definícióinak és hozzárendeléseinek kezeléséről az adatsík szerepköralapú hozzáférésének biztosításáról olvashat.
Előfeltételek
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Egy meglévő Azure Cosmos DB-fiók.
- Egy vagy több meglévő identitás a Microsoft Entra-azonosítóban.
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
- Ha az Azure PowerShell helyi használatát választja:
- Telepítse az Az PowerShell-modul legújabb verzióját.
- Csatlakozzon az Azure-fiókjához a Connect-AzAccount parancsmag használatával.
- Ha az Azure Cloud Shell használata mellett dönt:
- További információkért tekintse meg az Azure Cloud Shell áttekintését.
Szerepkördefiníció előkészítése
Először elő kell készítenie egy szerepkördefiníciót egy listával actions
, amely hozzáférést biztosít a fiókerőforrások kezeléséhez az Azure Cosmos DB-ben.
Listázhatja az Azure Cosmos DB-fiókhoz társított összes szerepkördefiníciót a használatával az role definition list
. Tekintse át a kimenetet, és keresse meg a Cosmos DB beépített adatszolgáltató nevű szerepkördefiníciót. A kimenet a tulajdonság szerepkördefiníciójának egyedi azonosítóját id
tartalmazza. Jegyezze fel ezt az értéket az útmutató későbbi részében, a hozzárendelési lépésben használni kívánt módon.
az role definition list \
--name "Cosmos DB Operator"
[
{
"assignableScopes": [
"/"
],
"description": "Lets you manage Azure Cosmos DB accounts, but not access data in them. Prevents access to account keys and connection strings.",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa",
"name": "230815da-be43-4aae-9cb4-875f7bd000aa",
"permissions": [
{
"actions": [
"Microsoft.DocumentDb/databaseAccounts/*",
"Microsoft.Insights/alertRules/*",
"Microsoft.Authorization/*/read",
"Microsoft.ResourceHealth/availabilityStatuses/read",
"Microsoft.Resources/deployments/*",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Support/*",
"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action"
],
"condition": null,
"conditionVersion": null,
"dataActions": [],
"notActions": [
"Microsoft.DocumentDB/databaseAccounts/dataTransferJobs/*",
"Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*",
"Microsoft.DocumentDB/databaseAccounts/regenerateKey/*",
"Microsoft.DocumentDB/databaseAccounts/listKeys/*",
"Microsoft.DocumentDB/databaseAccounts/listConnectionStrings/*",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/delete",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write",
"Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/delete",
"Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/delete",
"Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write",
"Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/delete"
],
"notDataActions": []
}
],
"roleName": "Cosmos DB Operator",
"roleType": "BuiltInRole",
"type": "Microsoft.Authorization/roleDefinitions",
}
]
Feljegyzés
Ebben a példában az érték a id
következő lenne /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa
: . Ez a példa fiktív adatokat használ, és az azonosító eltér a példától. Az azonosító (230815da-be43-4aae-9cb4-875f7bd000aa
) azonban globálisan egyedi az Azure-beli szerepkör-definíciókban.
Jelentkezzen be az Azure Portalra (https://portal.azure.com).
Adja meg az erőforráscsoportot a globális keresősávon.
A Szolgáltatások területen válassza ki az Erőforráscsoportokat.
Az Erőforráscsoportok panelen válassza ki a meglévő erőforráscsoportot.
Feljegyzés
Ez a példa képernyőképe tartalmazza az
msdocs-identity-example
erőforráscsoportot. Előfordulhat, hogy a tényleges erőforráscsoport neve eltérő.Az erőforráscsoport paneljén válassza a Hozzáférés-vezérlés (IAM) lehetőséget a szolgáltatás menüjében.
A Hozzáférés-vezérlés (IAM) panelen válassza a Szerepkörök lehetőséget.
A Szerepkörök szakaszban használja a Cosmos DB keresőkifejezést, és keresse meg a Cosmos DB-operátor szerepkördefinícióját. Ezután válassza ki a definícióhoz társított Nézet lehetőséget.
A Cosmos DB-operátor szerepkördefiníció párbeszédpanelén figyelje meg a szerepkördefiníció részeként hozzárendelt műveleteket.
Zárja be a Cosmos DB Operátor szerepkördefiníció párbeszédpanelt.
Az Azure Cosmos DB-fiókhoz társított szerepkördefiníciók felsorolására használható Get-AzRoleDefinition
. Tekintse át a kimenetet, és keresse meg a Cosmos DB beépített adatszolgáltató nevű szerepkördefiníciót. A kimenet a tulajdonság szerepkördefiníciójának egyedi azonosítóját Id
tartalmazza. Jegyezze fel ezt az értéket az útmutató későbbi részében, a hozzárendelési lépésben használni kívánt módon.
$parameters = @{
Name = "Cosmos DB Operator"
}
Get-AzRoleDefinition @parameters
Name : Cosmos DB Operator
Id : 230815da-be43-4aae-9cb4-875f7bd000aa
IsCustom : False
Description : Lets you manage Azure Cosmos DB accounts, but not access data in them. Prevents access to account keys and connection strings.
Actions : {Microsoft.DocumentDb/databaseAccounts/*, Microsoft.Insights/alertRules/*, Microsoft.Authorization/*/read, Microsoft.ResourceHealth/availabilityStatuses/read…}
NotActions : {Microsoft.DocumentDB/databaseAccounts/dataTransferJobs/*, Microsoft.DocumentDB/databaseAccounts/readonlyKeys/*, Microsoft.DocumentDB/databaseAccounts/regenerateKey/*, Microsoft.DocumentDB/databaseAccounts/listKeys/*…}
DataActions : {}
NotDataActions : {}
AssignableScopes : {/}
Feljegyzés
Ebben a példában az érték a Id
következő lenne 230815da-be43-4aae-9cb4-875f7bd000aa
: . Az azonosító globálisan egyedi az Azure-beli szerepkör-definíciókban.
Szerepkör hozzárendelése identitáshoz
Most rendelje hozzá az újonnan definiált szerepkört egy identitáshoz, hogy az alkalmazások hozzáférhessenek az Azure Cosmos DB erőforrásaihoz.
Fontos
Ehhez a hozzárendelési feladathoz már rendelkeznie kell minden olyan identitás egyedi azonosítóval, amelyet szerepköralapú hozzáférés-vezérlési engedélyekhez szeretne adni.
Az aktuális erőforráscsoport metaadatainak újbóli lekérésére használható
az group show
.az group show \ --name "<name-of-existing-resource-group>"
Figyelje meg az előző parancs kimenetét. Jegyezze fel az
id
erőforráscsoport tulajdonságának értékét, ahogyan azt a következő lépésben használni kell.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "location": "westus", "name": "msdocs-identity-example", "type": "Microsoft.Resources/resourceGroups" }
Feljegyzés
Ebben a példában az érték a
id
következő lenne/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example
: . Ez a példa fiktív adatokat használ, és az azonosító eltér a példától. Ez a kimenet csonkolt példája.Az új szerepkör hozzárendelése a következővel
az role assignment create
: . Használja az erőforráscsoport azonosítóját az--scope
argumentumhoz, az argumentum szerepkör-azonosítóját-role
és az identitás egyedi azonosítóját az--assignee
argumentumhoz.az role assignment create \ --assignee "<your-principal-identifier>" \ --role "subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0" \ --scope "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example"
Feljegyzés
Ebben a példaparancsban az
scope
előző lépés példájából származó fiktív példára/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example
lett beállítva. Az erőforráscsoport azonosítója eltér a példától. Arole
fiktív/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
. A szerepkör-azonosító ismét eltérő lesz.Figyelje meg a parancs kimenetét. A kimenet egy egyedi azonosítót tartalmaz a tulajdonság hozzárendeléséhez
id
.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "name": "ffffffff-5555-6666-7777-aaaaaaaaaaaa", "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222", "resourceGroup": "msdocs-identity-example", "roleDefinitionId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0", "scope": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "type": "Microsoft.Authorization/roleAssignments" }
Feljegyzés
Ebben a példában a
id
tulajdonság egy/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
másik fiktív példa.Ismételje meg ezeket a lépéseket, hogy hozzáférést biztosítson a fiókhoz bármely más identitásból, amelyet használni szeretne.
Tipp.
Ezeket a lépéseket tetszőleges számú identitás esetében megismételheti. Ezek a lépések általában legalább ismétlődnek, hogy a fejlesztők hozzáférhessenek egy fiókhoz az emberi identitásuk használatával, és lehetővé tegyék az alkalmazások számára a felügyelt identitással való hozzáférést.
Hozzon létre egy új Bicep-fájlt a szerepkör-hozzárendelés definiálásához. Nevezze el a fájlvezérlő-plane-role-assignment.bicep nevet.
metadata description = 'Assign RBAC role for control plane access to Azure Cosmos DB.' @description('Id of the role definition to assign to the targeted principal in the context of the account.') param roleDefinitionId string @description('Id of the identity/principal to assign this role in the context of the account.') param identityId string resource assignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = { name: guid(subscription().id, resourceGroup().id, roleDefinitionId, identityId) scope: resourceGroup() properties: { roleDefinitionId: roleDefinitionId principalId: identityId } }
Hozzon létre egy új Bicep-paraméterfájlt control-plane-role-assignment néven.
bicepparam
Ebben a paraméterfájlban; rendelje hozzá a korábban rögzített szerepkördefiníció-azonosítókat aroleDefinitionId
paraméterhez, valamint az identitás egyedi azonosítóját aidentityId
paraméterhez.using './control-plane-role-assignment.bicep' param roleDefinitionId = '<id-of-new-role-definition>' param identityId = '<id-of-existing-identity>'
A Bicep-sablon üzembe helyezése a következővel
az deployment group create
: .az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters control-plane-role-assignment.bicepparam \ --template-file control-plane-role-assignment.bicep
Ismételje meg ezeket a lépéseket, hogy hozzáférést biztosítson a fiókhoz bármely más identitásból, amelyet használni szeretne.
Tipp.
Ezeket a lépéseket tetszőleges számú identitás esetében megismételheti. Ezek a lépések általában legalább ismétlődnek, hogy a fejlesztők hozzáférhessenek egy fiókhoz az emberi identitásuk használatával, és lehetővé tegyék az alkalmazások számára a felügyelt identitással való hozzáférést.
A Hozzáférés-vezérlés (IAM) panelen válassza a Hozzáadás, majd a Szerepkör-hozzárendelés hozzáadása lehetőséget.
A Szerepkör panelen keresse meg
Azure Cosmos DB
, majd válassza ki az útmutatóban korábban létrehozott Azure Cosmos DB vezérlősík-tulajdonosi szerepkört. Ezután válassza a Tovább gombot.Tipp.
A szerepkörök listáját szűrheti úgy is, hogy csak egyéni szerepköröket tartalmazzon.
A Tagok panelen válassza a Tagok kijelölése lehetőséget. A tagok párbeszédpanelen válassza ki azt az identitást, amelyet meg szeretne adni az Azure Cosmos DB-fiókhoz, majd a Kiválasztás lehetőséggel erősítse meg a választását.
Feljegyzés
Ez a képernyőkép egy "Kai Carter" nevű példafelhasználót mutat be, akinek a neve
kai@adventure-works.com
a következő: .A Tagok panelen tekintse át a kijelölt tagokat, majd válassza a Véleményezés + hozzárendelés lehetőséget.
A Véleményezés + hozzárendelés panelen tekintse át az új szerepkör-hozzárendelés megadott beállításait. Végül válassza a Véleményezés + hozzárendelés lehetőséget.
Várja meg, amíg a portál befejezi a szerepkör-hozzárendelés létrehozását.
Az új szerepkör hozzárendelése a következővel
New-AzRoleAssignment
: . Használja a paraméter szerepkörnevétRoleDefinitionName
és az identitás egyedi azonosítóját aObjectId
paraméterhez.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" ObjectId = "<your-principal-identifier>" RoleDefinitionName = "Azure Cosmos DB Control Plane Owner" } New-AzRoleAssignment @parameters
Figyelje meg a parancs kimenetét. A kimenet egy egyedi azonosítót tartalmaz a tulajdonság hozzárendeléséhez
RoleAssignmentId
.RoleAssignmentName : ffffffff-5555-6666-7777-aaaaaaaaaaaa RoleAssignmentId : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0 Scope : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example DisplayName : Kai Carter SignInName : <kai@adventure-works.com> RoleDefinitionName : Azure Cosmos DB Control Plane Owner RoleDefinitionId : e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5
Feljegyzés
Ebben a példában a
RoleAssignmentId
tulajdonság egy/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0
másik fiktív példa. Ez az üzembe helyezés jellemző kimenetének egy részhalmaza az egyértelműség érdekében.Ismételje meg ezeket a lépéseket, hogy hozzáférést biztosítson a fiókhoz bármely más identitásból, amelyet használni szeretne.
Tipp.
Ezeket a lépéseket tetszőleges számú identitás esetében megismételheti. Ezek a lépések általában legalább ismétlődnek, hogy a fejlesztők hozzáférhessenek egy fiókhoz az emberi identitásuk használatával, és lehetővé tegyék az alkalmazások számára a felügyelt identitással való hozzáférést.
Vezérlősík hozzáférésének ellenőrzése kódban
Végül ellenőrizze, hogy helyesen adta-e meg a hozzáférést az alkalmazáskód és az Azure Management SDK használatával az előnyben részesített programozási nyelven.
using Azure.Identity;
using Azure.ResourceManager;
DefaultAzureCredential credential = new();
ArmClient client = new(credential);
Fontos
Ez a kódminta a Azure.ResourceManager.CosmosDB
NuGetből származó kódtárakat Azure.Identity
használja.