Megosztás a következőn keresztül:


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 aktuális hely (szerepköralapú hozzáférés-vezérlés) diagramja az üzembe helyezési útmutató sorrendjében.

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.

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.

  1. Jelentkezzen be az Azure Portalra (https://portal.azure.com).

  2. Adja meg az erőforráscsoportot a globális keresősávon.

    Képernyőkép az Azure Portal globális keresősávjáról.

  3. A Szolgáltatások területen válassza ki az Erőforráscsoportokat.

    Képernyőkép a keresési menüben kiválasztott

  4. Az Erőforráscsoportok panelen válassza ki a meglévő erőforráscsoportot.

    Képernyőkép egy meglévő erőforráscsoportról az előfizetés erőforráscsoportjainak listájában.

    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ő.

  5. 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.

    Képernyőkép az erőforráscsoport szolgáltatásmenüjének Hozzáférés-vezérlés (IAM) lehetőségéről.

  6. A Hozzáférés-vezérlés (IAM) panelen válassza a Szerepkörök lehetőséget.

    Képernyőkép a

  7. 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.

    Képernyőkép az aktuális hozzárendelhető hatókör szerepkördefinícióinak listájáról, amely úgy szűrt, hogy csak a Cosmos DB-vel rendelkező definíciókat tartalmazza a címben.

  8. 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.

    Képernyőkép a Cosmos DB-operátor párbeszédpanelről a beépített szerepkördefiníció részleteivel.

  9. 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.

  1. 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>"
    
  2. 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.

  3. 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. A role 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.

  4. 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.

  5. 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.

  1. 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
      }
    }
    
  2. 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 a roleDefinitionId paraméterhez, valamint az identitás egyedi azonosítóját a identityId paraméterhez.

    using './control-plane-role-assignment.bicep'
    
    param roleDefinitionId = '<id-of-new-role-definition>'
    param identityId = '<id-of-existing-identity>'
    
  3. 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
    
  4. 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.

  1. 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.

    Képernyőkép a

  2. A Szerepkör panelen keresse megAzure 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.

    Képernyőkép a szerepkör-hozzárendelés hozzáadására szolgáló

    Tipp.

    A szerepkörök listáját szűrheti úgy is, hogy csak egyéni szerepköröket tartalmazzon.

  3. 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.

    Képernyőkép a

    Képernyőkép a szerepkör-hozzárendelés hozzáadására szolgáló identitáskijelölési párbeszédpanelről.

    Feljegyzés

    Ez a képernyőkép egy "Kai Carter" nevű példafelhasználót mutat be, akinek a neve kai@adventure-works.coma következő: .

  4. A Tagok panelen tekintse át a kijelölt tagokat, majd válassza a Véleményezés + hozzárendelés lehetőséget.

    Képernyőkép a

  5. 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.

    Képernyőkép egy szerepkör-hozzárendelés

  6. Várja meg, amíg a portál befejezi a szerepkör-hozzárendelés létrehozását.

  1. Az új szerepkör hozzárendelése a következővel New-AzRoleAssignment: . Használja a paraméter szerepkörnevét RoleDefinitionName és az identitás egyedi azonosítóját a ObjectId paraméterhez.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        ObjectId = "<your-principal-identifier>"
        RoleDefinitionName = "Azure Cosmos DB Control Plane Owner"
    }
    New-AzRoleAssignment @parameters
    
  2. 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.

  3. 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.

Következő lépés