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


Csatlakozás az Azure Cosmos DB for NoSQL-hez szerepköralapú hozzáférés-vezérléssel és Microsoft Entra-azonosítóval

A szerepköralapú hozzáférés-vezérlés az Azure-beli erőforrásokhoz való hozzáférés kezelésére szolgáló módszer. Ez a módszer azon meghatározott identitásokon alapul, amelyek szerepkörökhöz vannak rendelve, amelyek egy vagy több erőforráshoz való hozzáférésük szintjét kezelik. A szerepköralapú hozzáférés-vezérlés rugalmas, részletes hozzáférés-kezelési rendszert biztosít, amely biztosítja, hogy az identitások csak a legkevésbé emelt szintű hozzáféréssel rendelkezzenek a feladatuk elvégzéséhez.

További információ: szerepköralapú hozzáférés-vezérlés.

Előfeltételek

  • Egy Azure-fiók, aktív előfizetéssel. Hozzon létre egy fiókot ingyenesen.

  • Egy meglévő Azure Cosmos DB NoSQL-fiók.

  • Egy vagy több meglévő identitás a Microsoft Entra-azonosítóban.

Kulcsalapú hitelesítés letiltása

A kulcsalapú engedélyezés letiltása megakadályozza, hogy a fiók a biztonságosabb Microsoft Entra ID hitelesítési módszer nélkül legyen használatban. Ez az eljárás egy olyan lépés, amelyet biztonságos számítási feladatokban lévő új fiókokon kell végrehajtani. Másik lehetőségként hajtsa végre ezt az eljárást egy biztonságos számítási feladatmintára migrált meglévő fiókokon.

Először tiltsa le a kulcsalapú hitelesítést a meglévő fiókjában, hogy az alkalmazásoknak Microsoft Entra-azonosítós hitelesítést kelljen használniuk. A meglévő fiók módosítására az resource update használhatóproperties.disableLocalAuth.

az resource update \
    --resource-group "<name-of-existing-resource-group>" \
    --name "<name-of-existing-account>" \
    --resource-type "Microsoft.DocumentDB/databaseAccounts" \
    --set properties.disableLocalAuth=true

Először hozzon létre egy új fiókot, amely letiltotta a kulcsalapú hitelesítést, így az alkalmazásoknak Microsoft Entra-hitelesítést kell használniuk.

  1. Hozzon létre egy új Bicep-fájlt az új fiók telepítéséhez a kulcsalapú hitelesítés letiltásával. Nevezze el a deploy-new-account.bicep fájlt.

    metadata description = 'Deploys a new Azure Cosmos DB account with key-based auth disabled.'
    
    @description('Name of the Azure Cosmos DB account.')
    param name string = 'csms-${uniqueString(resourceGroup().id)}'
    
    @description('Primary location for the Azure Cosmos DB account.')
    param location string = resourceGroup().location
    
    resource account 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' = {
      name: name
      location: location
      kind: 'GlobalDocumentDB'
      properties: {
        databaseAccountOfferType: 'Standard'
        locations: [
          {
            locationName: location
          }
        ]
        disableLocalAuth: true
      }
    }
    
  2. A Bicep-fájl üzembe helyezésére használható az deployment group create az új fiókkal.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --template-file deploy-new-account.bicep
    

Először tiltsa le a kulcsalapú hitelesítést a meglévő fiókjában, hogy az alkalmazásoknak Microsoft Entra-hitelesítést kelljen használniuk. A meglévő fiókot Get-AzResource olvasásra és Set-AzResource frissítésre kell használni.

$parameters = @{
    ResourceGroupName = "<name-of-existing-resource-group>"
    ResourceName = "<name-of-existing-account>"
    ResourceType = "Microsoft.DocumentDB/databaseAccounts"
}
$resource = Get-AzResource @parameters

$resource.Properties.DisableLocalAuth = $true

$resource | Set-AzResource -Force

Ezekkel a lépésekkel létrehozhat egy új Azure Cosmos DB for NoSQL-fiókot, amelynek kulcsalapú hitelesítése le van tiltva, így az alkalmazások csak a Microsoft Entra-hitelesítés használatához szükségesek.

  1. Új Azure Cosmos DB for NoSQL-fiók beállításakor navigáljon a(z) fióklétrehozás Biztonság részéhez.

  2. Ezután válassza a Kulcsalapú hitelesítésletiltása lehetőséget.

    Képernyőkép a kulcsalapú hitelesítés letiltásának lehetőségéről, amikor új fiókot hoz létre az Azure Portalon.

Fontos

Az Azure Cosmos DB-fiók módosításához legalább engedéllyel Microsoft.DocumentDb/databaseAccounts/*/write rendelkező Azure-szerepkör szükséges. További információkért tekintse meg az Azure Cosmos DB engedélyeit.

Ellenőrizze, hogy a kulcsalapú hitelesítés le van-e tiltva

A kulcsalapú hozzáférés letiltásának ellenőrzéséhez próbálja meg az Azure SDK használatával csatlakozni az Azure Cosmos DB for NoSQL-hez egy erőforrás-tulajdonosi jelszó hitelesítő adataival (ROPC). Ennek a kísérletnek sikertelennek kell lennie. Ha szükséges, itt a gyakori programozási nyelvekhez tartozó kódmintákat talál.

using Microsoft.Azure.Cosmos;

string connectionString = "AccountEndpoint=<nosql-endpoint>;AccountKey=<key>;";

CosmosClient client = new(connectionString);
const { CosmosClient } = require('@azure/cosmos');

const connectionString = 'AccountEndpoint=<nosql-endpoint>;AccountKey=<key>;';

const client = new CosmosClient(connectionString);
import { CosmosClient } from '@azure/cosmos'

let connectionString: string = 'AccountEndpoint=<nosql-endpoint>;AccountKey=<key>;';

const client: CosmosClient = new CosmosClient(connectionString);
from azure.cosmos import CosmosClient

connection_string = "AccountEndpoint=<nosql-endpoint>;AccountKey=<key>;"

client = CosmosClient(connection_string)
package main

import (
    "github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos"
)

const connectionString = "AccountEndpoint=<nosql-endpoint>;AccountKey=<key>;"

func main() {
    client, _ := azcosmos.NewClientFromConnectionString(connectionString, nil)
}
import com.azure.cosmos.CosmosClient;
import com.azure.cosmos.CosmosClientBuilder;

public class NoSQL{
    public static void main(String[] args){
        CosmosClient client = new CosmosClientBuilder()
            .endpoint("<nosql-endpoint>")
            .key("<key>")
            .buildClient();
    }
}
use azure_data_cosmos::CosmosClient;

fn main() {
    let client = CosmosClient::new_with_access_key(
        "<account-endpoint>",
        "<account-key>",
        None,
    ).unwrap();

    let container = client.database_client("<database-name>").container_client("<container-name>");

    let response = container.read_item("<partition-key>", "<item-id>", None);
    tokio::runtime::Runtime::new().unwrap().block_on(response).unwrap();
}

Szerepköralapú hozzáférés biztosítása az irányítósíkhoz

A vezérlősík-hozzáférés azt jelenti, hogy az Azure-szolgáltatások erőforrásait az adatok kezelése nélkül kezelheti. Az Azure Cosmos DB vezérlősík-hozzáférése például magában foglalhatja a következőket:

  • Az összes fiók és erőforrás metaadatainak olvasása
  • Fiókkulcsok és kapcsolati sztringek olvasása és újragenerálása
  • Fiók biztonsági mentésének és visszaállításának végrehajtása
  • Adatátviteli feladatok indítása és nyomon követése
  • Adatbázisok és tárolók kezelése
  • Fióktulajdonságok módosítása

Fontos

Az Azure Cosmos DB-ben vezérlősík-hozzáférésre van szükség a natív adatsík szerepköralapú hozzáférés-vezérlési definícióinak és hozzárendeléseinek kezeléséhez. Mivel az Azure Cosmos DB adatsíkjának szerepköralapú hozzáférés-vezérlési mechanizmusa natív, vezérlősík-hozzáférésre van szükség a definíciók és hozzárendelések létrehozásához és erőforrásokként való tárolásához egy Azure Cosmos DB-fiókban.

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. Ebben az útmutatóban egy beépített és egyéni szerepkört készít elő. Ezután rendelje hozzá az újonnan definiált szerepköröket egy identitáshoz, hogy az alkalmazások hozzáférhessenek az Azure Cosmos DB erőforrásaihoz.

  1. Listázhatja az Azure Cosmos DB-fiókhoz társított összes szerepkördefiníciót a használatával az role definition list.

    az role definition list \
        --name "Cosmos DB Operator"
    
  2. Tekintse át a kimenetet, és keresse meg a Cosmos DB-operátor 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.

    [
      {
        "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",
      }
    ]
    

    Megjegyzés:

    Ebben a példában a id érték a 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.

  3. Az aktuális erőforráscsoport metaadatainak lekérésére használható az group show .

    az group show \
        --name "<name-of-existing-resource-group>"
    
  4. 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"
    }
    

    Megjegyzés:

    Ebben a példában a id érték a 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 karakterlánc a kimeneti csonkolt példája.

  5. Hozzon létre egyrole-definition.jsonnevű új JSON-fájlt . A fájlban hozza létre ezt az erőforrásdefiníciót, amely megadja az itt felsorolt értékeket. AssignableScopes A listához adja hozzá az id előző lépésben rögzített erőforráscsoport tulajdonságát.

    {
      "Name": "Azure Cosmos DB Control Plane Owner",
      "IsCustom": true,
      "Description": "Can perform all control plane actions for an Azure Cosmos DB account.",
      "Actions": [
        "Microsoft.DocumentDb/*"
      ],
      "AssignableScopes": [
        "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example"
      ]
    }
    

    Megjegyzés:

    Ez a példa az /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example előző lépésben rögzített értéket használja. A tényleges erőforrás-azonosító eltérő lehet.

  6. Hozzon létre egy új szerepkördefiníciót a következő használatával az role definition create: . Használja a role-definition.json fájlt az --role-definition argumentum bemeneteként.

    az role definition create \
        --role-definition role-definition.json
    
  7. Tekintse át a definíciólétrehozás parancs kimeneté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.

    {
      "assignableScopes": [
        "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example"
      ],
      "description": "Can perform all control plane actions for an Azure Cosmos DB account.",
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
      "name": "e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5",
      "permissions": [
        {
          "actions": [
            "Microsoft.DocumentDb/*"
          ]
        }
      ],
      "roleName": "Azure Cosmos DB Control Plane Owner",
      "roleType": "CustomRole"
    }
    

    Megjegyzés:

    Ebben a példában a id érték a következő lenne: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. Ez a példa fiktív adatokat használ, és az azonosító eltér a példától. Ez a példa az üzembe helyezésből származó tipikus JSON-kimenet egy részhalmaza az egyértelműség kedvéért.

  8. 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>"
    
  9. 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"
    }
    

    Megjegyzés:

    Ebben a példában a id érték a 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 karakterlánc a kimeneti csonkolt példája.

  10. 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 a --scope argumentumhoz, a szerepkör azonosítóját a -role argumentumhoz, és az identitás egyedi azonosítóját a --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/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1" \
        --scope "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example"
    

    Megjegyzés:

    Ebben a példaparancsban a scope értékét az előző lépés példájában szereplő fiktív példára, /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example-re állították be. Az erőforráscsoport azonosítója eltér a példától. A role is beállították a fiktív /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. A szerepkör-azonosító ismét eltérő lesz.

  11. 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/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
      "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/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1",
      "scope": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example",
      "type": "Microsoft.Authorization/roleAssignments"
    }
    

    Megjegyzés:

    Ebben a példában a id tulajdonság /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1, ami egy másik fiktív példa.

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

    Jótanács

    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 hogy az alkalmazások egy felügyelt identitással férhessenek hozzá az adatokhoz.

  1. Listázhatja az Azure Cosmos DB-fiókhoz társított összes szerepkördefiníciót a használatával az role definition list.

    az role definition list \
        --name "Cosmos DB Operator"
    
  2. Tekintse át a kimenetet, és keresse meg a Cosmos DB-operátor 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.

    [
      {
        "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",
      }
    ]
    

    Megjegyzés:

    Ebben a példában a id érték a 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.

  3. Hozzon létre egy új Bicep-fájlt a szerepkördefiníció definiálásához. Nevezze el a fájlt control-plane-role-definition.bicep néven. Adja hozzá ezeket actions a definícióhoz:

    Description
    Microsoft.DocumentDb/* Engedélyezi az összes lehetséges műveletet.
    metadata description = 'Create RBAC definition for control plane access to Azure Cosmos DB.'
    
    @description('Name of the role definition.')
    param roleDefinitionName string = 'Azure Cosmos DB Control Plane Owner'
    
    @description('Description of the role definition.')
    param roleDefinitionDescription string = 'Can perform all control plane actions for an Azure Cosmos DB account.'
    
    resource definition 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
      name: guid(subscription().id, resourceGroup().id, roleDefinitionName)
      scope: resourceGroup()
      properties: {
        roleName: roleDefinitionName
        description: roleDefinitionDescription
        type: 'CustomRole'
        permissions: [
          {
            actions: [
              'Microsoft.DocumentDb/*'
            ]
          }
        ]
        assignableScopes: [
          resourceGroup().id
        ]
      }
    }
    
    output definitionId string = definition.id
    
  4. A Bicep sablon üzembe helyezése az deployment group create segítségével. Adja meg a Bicep-sablon és az Azure-erőforráscsoport nevét.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --template-file control-plane-role-definition.bicep
    
  5. Tekintse át az üzembe helyezés kimenetét. A kimenet a tulajdonság szerepkördefiníciójának egyedi azonosítóját properties.outputs.definitionId.value 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.

    {
      "properties": {
        "outputs": {
          "definitionId": {
            "type": "String",
            "value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1"
          }
        }
      }
    }
    

    Megjegyzés:

    Ebben a példában a id érték a következő lenne: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. Ez a példa fiktív adatokat használ, és az azonosító eltér a példától. Ez a példa az üzembe helyezésből származó tipikus JSON-kimenet egy részhalmaza az egyértelműség kedvéért.

  6. Hozzon létre egy új Bicep-fájlt a szerepkör-hozzárendelés definiálásához. Nevezze el a fájlt vezérlő-sík-szerepkiosztás.bicep.

    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
      }
    }
    
  7. 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>'
    
  8. Bicep-sablont helyezzen üzembe 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
    
  9. 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.

    Jótanács

    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 hogy az alkalmazások egy felügyelt identitással férhessenek hozzá az adatokhoz.

  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.

    Megjegyzés:

    Ez a példa képernyőképe tartalmazza az msdocs-identity-example erőforráscsoportot. A tényleges erőforráscsoport neve eltérő lehet.

  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.

  10. A Hozzáférés-vezérlés (IAM) panelen válassza a Hozzáadás lehetőséget. Ezután válassza az Egyéni szerepkör hozzáadása lehetőséget.

    Képernyőkép az

  11. Az Alapszintű beállítások panelen konfigurálja a következő beállításokat, majd válassza a Tovább elemet:

    Érték
    Egyéni szerepkör neve Azure Cosmos DB Control Plane Owner
    Leírás Can perform all control plane actions for an Azure Cosmos DB account.
    Alapterv engedélyei Kezdés az alapoktól

    Képernyőkép az egyéni szerepkör hozzáadására szolgáló

  12. Az Engedélyek panelen válassza az Engedélyek hozzáadása lehetőséget. Ezután keressen rá DocumentDB az engedélyek párbeszédpanelen. Végül válassza a Microsoft.DocumentDB lehetőséget.

    Képernyőkép az

    Képernyőkép az

  13. Az engedélyek párbeszédpanelen válassza ki az összes műveletetMicrosoft.DocumentDB. Ezután válassza a Hozzáadás lehetőséget a *Engedélyek panelre való visszatéréshez.

    Képernyőkép a DocumentDB-hez kijelölt összes engedélyről egy egyéni szerepkörhöz tartozó párbeszédpanelen.

  14. Az Engedélyek panelen tekintse meg az engedélyek listáját. Ezután válassza a Véleményezés + létrehozás lehetőséget.

    Képernyőkép az

  15. A Véleményezés + létrehozás panelen tekintse át az új szerepkördefinícióhoz megadott beállításokat. Végül válassza a Létrehozás lehetőséget.

    Képernyőkép a

  16. Várja meg, amíg a portál befejezi a szerepkördefiníció létrehozását.

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

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

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

    Jótanács

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

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

    Megjegyzés:

    Ez a képernyőkép egy "Kai Carter" nevű példafelhasználót mutat be az alábbi főösszeggel: kai@adventure-works.com.

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

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

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

  1. Az Azure Cosmos DB-fiókhoz társított szerepkördefiníciók felsorolására használható Get-AzRoleDefinition .

    $parameters = @{
        Name = "Cosmos DB Operator"
    }
    Get-AzRoleDefinition @parameters
    
  2. 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.

    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 : {/}
    

    Megjegyzés:

    Ebben a példában a Id érték a következő lenne: 230815da-be43-4aae-9cb4-875f7bd000aa. Az azonosító globálisan egyedi az Azure-beli szerepkör-definíciókban.

  3. Az aktuális erőforráscsoport metaadatainak lekérésére használható Get-AzResourceGroup .

    $parameters = @{
        Name = "<name-of-existing-resource-group>"
    }
    Get-AzResourceGroup @parameters
    
  4. Figyelje meg az előző parancs kimenetét. Jegyezze fel az ResourceId erőforráscsoport tulajdonságának értékét, ahogyan azt a következő lépésben használni kell.

    ResourceGroupName : msdocs-identity-example
    Location          : westus
    ProvisioningState : Succeeded
    ResourceId        : /subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourcegroups/msdocs-identity-example
    

    Megjegyzés:

    Ebben a példában a ResourceId érték a következő lenne: /subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/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 karakterlánc a tipikus kimenet lerövidített példája.

  5. Először importálja a modult Az.Resources . Ezután hozzon létre egy új Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition objektumot. Az objektumban hozza létre ezt az erőforrásdefiníciót, amely megadja az itt felsorolt értékeket. AssignableScopes A listához adja hozzá az ResourceId előző lépésben rögzített erőforráscsoport tulajdonságát. Végül használja a szerepkör-definíciós objektumot a -Role paraméter bemeneteként a New-AzRoleDefinition számára.

    Import-Module Az.Resources
    
    $parameters = @{
        TypeName = "Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition"
        Property = @{
            Name = "Azure Cosmos DB Control Plane Owner"
            Description = "Can perform all control plane actions for an Azure Cosmos DB account."
            IsCustom = $true
            Actions = @(
                "Microsoft.DocumentDb/*"
            )
            AssignableScopes = @(
                "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example"
            )
        }
    }
    $role = New-Object @parameters
    
    New-AzRoleDefinition -Role $role
    

    Megjegyzés:

    Ez a példa az /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example előző lépésben rögzített értéket használja. A tényleges erőforrás-azonosító eltérő lehet.

  6. Tekintse át a definíciólétrehozás parancs kimenetét. A kimenet a tulajdonság szerepkördefiníciójának egyedi azonosítóját Name 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.

    Name             : Azure Cosmos DB Control Plane Owner
    Id               : e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5
    IsCustom         : True
    Description      : Can perform all control plane actions for an Azure Cosmos DB account.
    Actions          : {Microsoft.DocumentDb/*}
    AssignableScopes : {/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example}
    

    Megjegyzés:

    Ebben a példában a Name érték a következő lenne: Azure Cosmos DB Control Plane Owner. Ez a példa az üzembe helyezés tipikus kimenetének egy részhalmaza az egyértelműség kedvéért.

  7. 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
    
  8. 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/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1
    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
    

    Megjegyzés:

    Ebben a példában a RoleAssignmentId tulajdonság /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1, ami egy másik fiktív példa. Ez a példa az üzembe helyezés tipikus kimenetének egy részhalmaza az egyértelműség kedvéért.

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

    Jótanács

    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 hogy az alkalmazások egy felügyelt identitással férhessenek hozzá az adatokhoz.

Fontos

A szerepkördefiníció hozzárendeléséhez már rendelkeznie kell annak az identitásnak az egyedi azonosítójával, amelyhez szerepköralapú hozzáférés-vezérlési engedélyeket kíván adni.

Vezérlősík szerepköralapú hozzáférésének ellenőrzése kódban

Ellenőrizze, hogy helyesen adta-e meg a hozzáférést az alkalmazáskód és az Azure Management SDK használatával.

using Azure.Identity;
using Azure.ResourceManager;

DefaultAzureCredential credential = new();

ArmClient client = new(credential);
const { CosmosDBManagementClient } = require('@azure/arm-cosmosdb');
const { DefaultAzureCredential } = require('@azure/identity');

const subscriptionId = "<subscription-id>";

const credential = new DefaultAzureCredential();

const client = new CosmosDBManagementClient(credential, subscriptionId);
import { CosmosDBManagementClient } from '@azure/arm-cosmosdb';
import { TokenCredential, DefaultAzureCredential } from '@azure/identity';

let subscriptionId: string = "<subscription-id>";

let credential: TokenCredential = new DefaultAzureCredential();

const client: CosmosDBManagementClient = new CosmosDBManagementClient(credential, subscriptionId);
from azure.mgmt.cosmosdb import CosmosDBManagementClient
from azure.identity import DefaultAzureCredential

subscription_id = "<subscription-id>"

credential = DefaultAzureCredential()

client = CosmosDBManagementClient(credential=credential, subscription=subscription_id)
package main

import (
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos"
)

const subscriptionId = "<subscription-id>"

func main() {
    credential, _ := azidentity.NewDefaultAzureCredential(nil)
    
    client, _ := armcosmos.NewDatabaseClient(subscriptionId, credential, nil)
}
package com.example;

import com.azure.core.management.profile.AzureProfile;
import com.azure.core.management.AzureEnvironment;
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.azure.resourcemanager.cosmos.CosmosManager;

public class CosmosDB {
    public static void main(String[] args) {
        AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
        DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
          .build();

        CosmosManager manager = CosmosManager.authenticate(credential, profile);
    }
}

Adatsík szerepköralapú hozzáférésének biztosítása

Az adatsík hozzáférés azt jelenti, hogy adatok olvasása és írása az Azure-szolgáltatásban elérhető anélkül, hogy hozzáférne a fiók erőforrásainak kezeléséhez. Az Azure Cosmos DB adatsík-hozzáférése például a következőket teheti lehetővé:

  • Olvassa el a fiók- és erőforrás-metaadatokat.
  • Elemek létrehozása, olvasása, frissítése, javítása és törlése
  • NoSQL-lekérdezések végrehajtása
  • Beolvasás egy tároló változáscsatornájából
  • Tárolt eljárások végrehajtása
  • Ütközések kezelése a konfliktusfolyamban

Először elő kell készítenie egy szerepkördefiníciót egy listával dataActions , amely hozzáférést biztosít az adatok olvasásához, lekérdezéséhez és kezeléséhez az Azure Cosmos DB for NoSQL-ben. Ebben az útmutatóban egy egyéni szerepkört készít elő. Ezután rendelje hozzá az újonnan definiált szerepkört egy identitáshoz, hogy az alkalmazások hozzáférhessenek az Adatokhoz az Azure Cosmos DB for NoSQL-ben.

Fontos

Egy meglévő adatsík szerepkördefiníciójának beszerzéséhez az alábbi vezérlősík-engedélyek szükségesek:

  • Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read

Új adatsík szerepkördefiníciójának létrehozásához a vezérlősík engedélyei szükségesek:

  • Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read
  • Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write

Új adatsík-szerepkör-hozzárendelés létrehozásához a vezérlősík engedélyei szükségesek:

  • Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read
  • Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read
  • Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write

Figyelmeztetés

Az Azure Cosmos DB for NoSQL natív szerepköralapú hozzáférés-vezérlése nem támogatja a tulajdonságot notDataActions . A nem engedélyezettként dataAction megadott műveletek automatikusan ki lesznek zárva.

  1. Listázhatja az Azure Cosmos DB for NoSQL-fiókhoz társított szerepkördefiníciókat a használatával az cosmosdb sql role definition list.

    az cosmosdb sql role definition list \
        --resource-group "<name-of-existing-resource-group>" \
        --account-name "<name-of-existing-nosql-account>"
    
  2. Hozzon létre egy role-definition.jsonnevű új JSON-fájlt, amely az egyéni szerepkör létrehozásához használatos. Ebben a fájlban hozzon létre egy erőforrásdefiníciót, amely megadja az itt felsorolt adatműveleteket:

    Description
    Microsoft.DocumentDB/databaseAccounts/readMetadata Képes a fiókszintű metaadatok olvasására
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/* Bármilyen tárolószintű adatműveletet végrehajthat
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/* Bármilyen műveletet végrehajthat tárolókkal rendelkező elemeken
    {
      "RoleName": "Azure Cosmos DB for NoSQL Data Plane Owner",
      "Type": "CustomRole",
      "AssignableScopes": [
        "/"
      ],
      "Permissions": [
        {
          "DataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*"
          ]
        }
      ]
    }
    
  3. Ezután használja a az cosmosdb sql role definition create elemet a szerepkördefiníció létrehozásához. Használja a role-definition.json-t az --body argumentum bemeneteként.

    az cosmosdb sql role definition create \
        --resource-group "<name-of-existing-resource-group>" \
        --account-name "<name-of-existing-nosql-account>" \
        --body "@role-definition.json"
    
  4. Tekintse át az előző parancs kimenetét. Keresse meg az imént létrehozott , a NOSQL-adatsík tulajdonosához készült Azure Cosmos DB 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 úgy, ahogyan azt a jelen útmutató későbbi, hozzárendelési lépésében használni kell: --role-definition-id

    {
      "assignableScopes": [
        "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql"
      ],
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/bbbbbbbb-1111-2222-3333-cccccccccccc",
      "name": "bbbbbbbb-1111-2222-3333-cccccccccccc",
      "permissions": [
        {
          "dataActions": [
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*"
          ],
          "notDataActions": []
        }
      ],
      "resourceGroup": "msdocs-identity-example",
      "roleName": "Azure Cosmos DB for NoSQL Data Plane Owner",
      "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions",
      "typePropertiesType": "CustomRole"
    }
    

    Megjegyzés:

    Ebben a példában a --role-definition-id érték a következő lenne: bbbbbbbb-1111-2222-3333-cccccccccccc. Ez a példa fiktív adatokat használ, és az azonosító eltér a példától.

  5. Használja az előző lépésben kapott id-t, és --scope-t úgy határozza meg, hogy eltávolít mindent a fiók neve után.

    Megjegyzés:

    Ebben a példában a --scope érték a következő lenne: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql. Ez a példa fiktív adatokat használ, és az azonosító eltér a példától.

  6. Az új szerepkör hozzárendelése a következővel az cosmosdb sql role assignment create: .
    Használja a korábban rögzített szerepkördefiníció-azonosítókat az --role-definition-id argumentumhoz,
    az identitás egyedi azonosítóját az --principal-id argumentumhoz,
    végül pedig használja a fiók azonosítóját az --scope argumentumhoz.

    az cosmosdb sql role assignment create \
        --resource-group "<name-of-existing-resource-group>" \
        --account-name "<name-of-existing-nosql-account>" \
        --role-definition-id "<id-of-new-role-definition>" \ 
        --principal-id "<id-of-existing-identity>" \
        --scope "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql"
    

    Jótanács

    Ha az adatsík szerepköralapú hozzáférés-vezérlését szeretné biztosítani a saját identitásának, az alábbi paranccsal szerezheti be az identitást:

    az ad signed-in-user show
    

    További információért lásd az ad signed-in-user.

    Jótanács

    Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlés natív implementációjában a hatókör azoknak a fiókoknak az erőforrásainak részletességére vonatkozik, amelyekre engedélyt szeretne alkalmazni. A legmagasabb szinten az adatsíkhoz kapcsolódó szerepkör-alapú hozzáférés-vezérlés hozzárendelését a teljes fiókra helyezheti a lehető legszélesebb hatókör alkalmazásával. Ez a hatókör a fiókon belüli összes adatbázist és tárolót tartalmazza:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/
    

    Az adatsík szerepkör-hozzárendelését egy adott adatbázisra is kiterjedheti:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>
    

    Végül hatókört adhat a hozzárendelésnek egyetlen tárolóra, a legrészletesebb hatókörre:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>/colls/<container-name>
    

    Sok esetben a relatív hatókört használhatja a teljes hatókör helyett. Ezzel a relatív hatókörrel például az adatsík szerepköralapú hozzáférés-vezérlési engedélyeit adhat egy adott adatbázishoz és tárolóhoz egy Azure CLI-parancsból:

    /dbs/<database-name>/colls/<container-name>
    

    A relatív hatókör használatával univerzális hozzáférést is biztosíthat az összes adatbázishoz és tárolóhoz:

    /
    
  7. Az Azure Cosmos DB for NoSQL-fiókhoz tartozó összes szerepkör-hozzárendelés listázásához használja a az cosmosdb sql role assignment list . Tekintse át a kimenetet, és győződjön meg arról, hogy a szerepkör-hozzárendelés létrejött.

    az cosmosdb sql role assignment list \
        --resource-group "<name-of-existing-resource-group>" \
        --account-name "<name-of-existing-nosql-account>"
    
  1. Listázhatja az Azure Cosmos DB for NoSQL-fiókhoz társított szerepkördefiníciókat a használatával az cosmosdb sql role definition list.

    az cosmosdb sql role definition list \
        --resource-group "<name-of-existing-resource-group>" \
        --account-name "<name-of-existing-nosql-account>"
    
  2. 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.

    [
      ...,
      {
        "assignableScopes": [
          "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql"
        ],
        "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002",
        "name": "00000000-0000-0000-0000-000000000002",
        "permissions": [
          {
            "dataActions": [
              "Microsoft.DocumentDB/databaseAccounts/readMetadata",
              "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*",
              "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*"
            ],
            "notDataActions": []
          }
        ],
        "resourceGroup": "msdocs-identity-example",
        "roleName": "Cosmos DB Built-in Data Contributor",
        "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions",
        "typePropertiesType": "BuiltInRole"
      }
      ...
    ]
    

    Megjegyzés:

    Ebben a példában a id érték a következő lenne: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002. Ez a példa fiktív adatokat használ, és az azonosító eltér a példától.

  3. Hozzon létre egy új Bicep-fájlt a szerepkördefiníció definiálásához. Adja a fájlnak a data-plane-role-definition.bicep nevet. Adja hozzá ezeket dataActions a definícióhoz:

    Description
    Microsoft.DocumentDB/databaseAccounts/readMetadata Képes a fiókszintű metaadatok olvasására
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/* Bármilyen tárolószintű adatműveletet végrehajthat
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/* Bármilyen műveletet végrehajthat tárolókkal rendelkező elemeken
    metadata description = 'Create RBAC definition for data plane access to Azure Cosmos DB for NoSQL.'
    
    @description('Name of the Azure Cosmos DB for NoSQL account.')
    param accountName string
    
    @description('Name of the role definition.')
    param roleDefinitionName string = 'Azure Cosmos DB for NoSQL Data Plane Owner'
    
    resource account 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' existing = {
      name: accountName
    }
    
    resource definition 'Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions@2024-05-15' = {
      name: guid(account.id, roleDefinitionName)
      parent: account
      properties: {
        roleName: roleDefinitionName
        type: 'CustomRole'
        assignableScopes: [
          account.id
        ]
        permissions: [
          {
            dataActions: [
              'Microsoft.DocumentDB/databaseAccounts/readMetadata'
              'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*'
              'Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*'
            ]
          }
        ]
      }
    }
    
    output definitionId string = definition.id
    

    Jótanács

    Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlés natív implementációjában a hatókör azoknak a fiókoknak az erőforrásainak részletességére vonatkozik, amelyekre engedélyt szeretne alkalmazni. A legmagasabb szinten az adatsíkhoz kapcsolódó szerepkör-alapú hozzáférés-vezérlés hozzárendelését a teljes fiókra helyezheti a lehető legszélesebb hatókör alkalmazásával. Ez a hatókör a fiókon belüli összes adatbázist és tárolót tartalmazza:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/
    

    Az adatsík szerepkör-hozzárendelését egy adott adatbázisra is kiterjedheti:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>
    

    Végül hatókört adhat a hozzárendelésnek egyetlen tárolóra, a legrészletesebb hatókörre:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>/colls/<container-name>
    

    Sok esetben a relatív hatókört használhatja a teljes hatókör helyett. Ezzel a relatív hatókörrel például az adatsík szerepköralapú hozzáférés-vezérlési engedélyeit adhat egy adott adatbázishoz és tárolóhoz egy Azure CLI-parancsból:

    /dbs/<database-name>/colls/<container-name>
    

    A relatív hatókör használatával univerzális hozzáférést is biztosíthat az összes adatbázishoz és tárolóhoz:

    /
    
  4. Hozzon létre egy új Bicep-paraméterfájlt data-plane-role-definition néven.bicepparam Ebben a paraméterfájlban rendelje hozzá a meglévő Azure Cosmos DB for NoSQL-fiók nevét a accountName paraméterhez.

    using './data-plane-role-definition.bicep'
    
    param accountName = '<name-of-existing-nosql-account>'
    
  5. A Bicep sablon üzembe helyezése az deployment group create segítségével.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --parameters data-plane-role-definition.bicepparam \
        --template-file data-plane-role-definition.bicep
    
  6. Hozzon létre egy új Bicep-fájlt a szerepkör-hozzárendelés definiálásához. Adja a fájlnak a data-plane-role-assignment.bicep nevet.

    metadata description = 'Assign RBAC role for data plane access to Azure Cosmos DB for NoSQL.'
    
    @description('Name of the Azure Cosmos DB for NoSQL account.')
    param accountName string
    
    @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 = deployer().objectId
    
    resource account 'Microsoft.DocumentDB/databaseAccounts@2024-05-15' existing = {
      name: accountName
    }
    
    resource assignment 'Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments@2024-05-15' = {
      name: guid(roleDefinitionId, identityId, account.id)
      parent: account
      properties: {
        principalId: identityId
        roleDefinitionId: roleDefinitionId
        scope: account.id
      }
    }
    
    output assignmentId string = assignment.id
    
  7. Hozzon létre egy új Bicep-paraméterfájlt data-plane-role-assignment néven.bicepparam Ebben a paraméterfájlban rendelje hozzá a meglévő Azure Cosmos DB for NoSQL-fiók nevét a accountName paraméterhez, 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 './data-plane-role-assignment.bicep'
    
    param accountName = '<name-of-existing-nosql-account>'
    param roleDefinitionId = '<id-of-new-role-definition>'
    param identityId = '<id-of-existing-identity>'
    

    Jótanács

    Ha az adatsík szerepköralapú hozzáférés-vezérlését szeretné biztosítani a saját identitásának, kihagyhatja a paramétert identityId . A Bicep-sablon ezután a sablont üzembe helyező tag identitásának lekérésére szolgál deployer().objectId . További információért lásd deployer.

  8. A Bicep sablon üzembe helyezése az deployment group create segítségével.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --parameters data-plane-role-assignment.bicepparam \
        --template-file data-plane-role-assignment.bicep
    
  9. 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.

    Jótanács

    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. Ezeket a lépéseket meg is ismételheti, hogy az alkalmazások felügyelt identitással férhessenek hozzá az erőforrásokhoz.

  1. Használja a Get-AzCosmosDBSqlRoleDefinition a szerepkördefiníciók listázására, amelyeket az Azure Cosmos DB for NoSQL-fiókhoz társított.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        AccountName = "<name-of-existing-nosql-account>"
    }
    Get-AzCosmosDBSqlRoleDefinition @parameters
    
  2. 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.

    Id                         : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002
    RoleName                   : Cosmos DB Built-in Data Contributor
    Type                       : BuiltInRole
    AssignableScopes           : {/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccountsmsdocs-identity-example-nosql}
    Permissions.DataActions    : {Microsoft.DocumentDB/databaseAccounts/readMetadata, Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*, Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*}
    Permissions.NotDataActions : 
    

    Megjegyzés:

    Ebben a példában a Id érték a következő lenne: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002. Ez a példa fiktív adatokat használ, és az azonosító eltér a példától. Az azonosító (00000000-0000-0000-0000-000000000002) azonban a fiók összes szerepkördefiníciójában egyedi.

  3. Hozzon létre egy új szerepkördefiníciót a következő használatával New-AzCosmosDBSqlRoleDefinition: . A paraméterhez DataAction adja meg az itt felsorolt adatműveleteket:

    Description
    Microsoft.DocumentDB/databaseAccounts/readMetadata Képes a fiókszintű metaadatok olvasására
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/* Bármilyen tárolószintű adatműveletet végrehajthat
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/* Bármilyen műveletet végrehajthat tárolókkal rendelkező elemeken
    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        AccountName = "<name-of-existing-nosql-account>"
        RoleName = "Azure Cosmos DB for NoSQL Data Plane Owner"
        Type = "CustomRole"
        AssignableScope = @(
            "/"
        )
        DataAction = @(
            "Microsoft.DocumentDB/databaseAccounts/readMetadata",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*",
            "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*"
        )
    }
    New-AzCosmosDBSqlRoleDefinition @parameters
    

    Jótanács

    Az Azure Cosmos DB szerepköralapú hozzáférés-vezérlés natív implementációjában a hatókör azoknak a fiókoknak az erőforrásainak részletességére vonatkozik, amelyekre engedélyt szeretne alkalmazni. A legmagasabb szinten az adatsíkhoz kapcsolódó szerepkör-alapú hozzáférés-vezérlés hozzárendelését a teljes fiókra helyezheti a lehető legszélesebb hatókör alkalmazásával. Ez a hatókör a fiókon belüli összes adatbázist és tárolót tartalmazza:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/
    

    Az adatsík szerepkör-hozzárendelését egy adott adatbázisra is kiterjedheti:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>
    

    Végül hatókört adhat a hozzárendelésnek egyetlen tárolóra, a legrészletesebb hatókörre:

    /subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/Microsoft.DocumentDB/databaseAccounts/<account-name>/dbs/<database-name>/colls/<container-name>
    

    Sok esetben a relatív hatókört használhatja a teljes hatókör helyett. Ezzel a relatív hatókörrel például az adatsík szerepköralapú hozzáférés-vezérlési engedélyeit adhat egy adott adatbázishoz és tárolóhoz egy Azure CLI-parancsból:

    /dbs/<database-name>/colls/<container-name>
    

    A relatív hatókör használatával univerzális hozzáférést is biztosíthat az összes adatbázishoz és tárolóhoz:

    /
    
  4. Használja a Get-AzCosmosDBSqlRoleDefinition a szerepkördefiníciók listázására, amelyeket az Azure Cosmos DB for NoSQL-fiókhoz társított.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        AccountName = "<name-of-existing-nosql-account>"
    }
    Get-AzCosmosDBSqlRoleDefinition @parameters    
    
  5. Tekintse át az előző parancs kimenetét. Keresse meg az imént létrehozott , a NOSQL-adatsík tulajdonosához készült Azure Cosmos DB 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.

    Id                         : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/bbbbbbbb-1111-2222-3333-cccccccccccc
    RoleName                   : Azure Cosmos DB for NoSQL Data Plane Owner
    Type                       : CustomRole
    AssignableScopes           : {/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql}
    Permissions.DataActions    : {Microsoft.DocumentDB/databaseAccounts/readMetadata, Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/*, Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/*}
    Permissions.NotDataActions :
    

    Megjegyzés:

    Ebben a példában a Id érték a következő lenne: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/bbbbbbbb-1111-2222-3333-cccccccccccc. Ez a példa fiktív adatokat használ, és az azonosító eltér a példától.

  6. A jelenlegi fiók metaadatainak lekérésére használható Get-AzCosmosDBAccount .

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-nosql-account>"
    }    
    Get-AzCosmosDBAccount @parameters | Select -Property Id
    
  7. Figyelje meg az előző parancs kimenetét. Jegyezze fel a Id fiók tulajdonságának értékét, ahogy azt a következő lépésben használni kell.

    Id
    --    
    /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql
    

    Megjegyzés:

    Ebben a példában a Id érték a következő lenne: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql. Ez a példa fiktív adatokat használ, és az azonosító eltér a példától.

  8. Az új szerepkör hozzárendelésére használható New-AzCosmosDBSqlRoleAssignment . Használja 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 PrincipalId paraméterhez. Végül használja a fiók azonosítóját a Scope paraméterhez.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        AccountName = "<name-of-existing-nosql-account>"
        RoleDefinitionId = "<id-of-new-role-definition>"
        PrincipalId = "<id-of-existing-identity>"
        Scope = "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql"
    }    
    New-AzCosmosDBSqlRoleAssignment @parameters
    

    Jótanács

    Ha az adatsík szerepköralapú hozzáférés-vezérlését szeretné biztosítani a saját identitásának, az alábbi paranccsal szerezheti be az identitást:

    Get-AzADUser -SignedIn | Format-List `
        -Property Id, DisplayName, Mail, UserPrincipalName
    

    További információért lásd Get-AzADUser.

  9. Felsorolhatja az Azure Cosmos DB for NoSQL-fiók összes szerepkör-hozzárendelését a Get-AzCosmosDBSqlRoleAssignment használatával. Tekintse át a kimenetet, és győződjön meg arról, hogy a szerepkör-hozzárendelés létrejött.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        AccountName = "<name-of-existing-nosql-account>"
    }
    Get-AzCosmosDBSqlRoleAssignment @parameters
    

Figyelmeztetés

Az adatsík szerepköralapú hozzáférés-vezérlésének kezelése nem támogatott az Azure Portalon.

Adatsík szerepköralapú hozzáférésének ellenőrzése kódban

Ellenőrizze, hogy helyesen adta-e meg a hozzáférést az alkalmazáskód és az Azure SDK használatával.

using Azure.Core;
using Azure.Identity;
using Microsoft.Azure.Cosmos;

string endpoint = "<account-endpoint>";

TokenCredential credential = new DefaultAzureCredential();

CosmosClient client = new(endpoint, credential);

Container container = client.GetContainer("<database-name>", "<container-name>");

await container.ReadItemAsync<dynamic>("<item-id>", new PartitionKey("<partition-key>"));
const { CosmosClient } = require('@azure/cosmos');
const { DefaultAzureCredential } = require('@azure/identity');

const endpoint = '<account-endpoint>';

const credential = new DefaultAzureCredential();

const client = new CosmosClient({ endpoint, aadCredentials:credential});

const container = client.database('<database-name>').container('<container-name>');

await container.item('<item-id>', '<partition-key>').read<String>();
import { Container, CosmosClient, CosmosClientOptions } from '@azure/cosmos'
import { TokenCredential, DefaultAzureCredential } from '@azure/identity'

let endpoint: string = '<account-endpoint>';

let credential: TokenCredential = new DefaultAzureCredential();

let options: CosmosClientOptions = {
  endpoint: endpoint,
  aadCredentials: credential
};

const client: CosmosClient = new CosmosClient(options);

const container: Container = client.database('<database-name>').container('<container-name>');

await container.item('<item-id>', '<partition-key>').read<String>();
from azure.cosmos import CosmosClient
from azure.identity import DefaultAzureCredential

endpoint = "<account-endpoint>"

credential = DefaultAzureCredential()

client = CosmosClient(endpoint, credential=credential)

container = client.get_database_client("<database-name>").get_container_client("<container-name>")

container.read_item(
    item="<item-id>",
    partition_key="<partition-key>",
)
import (
    "context"
    
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/data/azcosmos"
)

const endpoint = "<account-endpoint>"

func main() {
    credential, _ := azidentity.NewDefaultAzureCredential(nil)
    client, _ := azcosmos.NewClient(endpoint, credential, nil)
    
    database, _ := client.NewDatabase("<database-name>")
    container, _ := database.NewContainer("<container-name>")
    
    _, err := container.ReadItem(context.TODO(), azcosmos.NewPartitionKeyString("<partition-key>"), "<item-id>", nil)
    if err != nil {
        panic(err)
    }
}
import com.azure.cosmos.CosmosClient;
import com.azure.cosmos.CosmosClientBuilder;
import com.azure.cosmos.CosmosContainer;
import com.azure.cosmos.models.PartitionKey;
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;

public class NoSQL {
    public static void main(String[] args) {   
        DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
            .build();
            
        CosmosClient client = new CosmosClientBuilder()
            .endpoint("<account-endpoint>")
            .credential(credential)
            .buildClient();

        CosmosContainer container = client.getDatabase("<database-name>").getContainer("<container-name>");

        container.readItem("<item-id>", new PartitionKey("<partition-key>"), Object.class);
    }
}
use azure_data_cosmos::CosmosClient;
use azure_identity::DefaultAzureCredential;

fn main() {
    let credential = DefaultAzureCredential::new().unwrap();
    let client = CosmosClient::new("<account-endpoint>", credential, None).unwrap();

    let container = client.database_client("<database-name>").container_client("<container-name>");

    let response = container.read_item("<partition-key>", "<item-id>", None);
    tokio::runtime::Runtime::new().unwrap().block_on(response).unwrap();
}