Delen via


Verbinding maken met Azure Cosmos DB for Table met behulp van op rollen gebaseerd toegangsbeheer en Microsoft Entra-id

Op rollen gebaseerd toegangsbeheer verwijst naar een methode voor het beheren van toegang tot resources in Azure. Deze methode is gebaseerd op specifieke identiteiten waaraan rollen worden toegewezen die beheren welk toegangsniveau ze hebben voor een of meer resources. Op rollen gebaseerd toegangsbeheer biedt een flexibel systeem van gedetailleerd toegangsbeheer dat ervoor zorgt dat identiteiten alleen het minst bevoegde toegangsniveau hebben dat ze nodig hebben om hun taak uit te voeren.

Zie op rollen gebaseerd toegangsbeheer voor meer informatie.

Vereiste voorwaarden

  • Een Azure-account met een actief abonnement. Gratis een account maken

  • Een bestaand Azure Cosmos DB for Table-account.

  • Een of meer bestaande identiteiten in Microsoft Entra ID.

Verificatie op basis van sleutels uitschakelen

Als u verificatie op basis van sleutels uitschakelt, voorkomt u dat uw account wordt gebruikt zonder de veiligere verificatiemethode voor Microsoft Entra ID. Deze procedure is een stap die moet worden uitgevoerd op nieuwe accounts in beveiligde workloads. U kunt deze procedure ook uitvoeren voor bestaande accounts die worden gemigreerd naar een beveiligd workloadpatroon.

Schakel eerst verificatie op basis van sleutels uit voor uw bestaande account, zodat toepassingen Microsoft Entra ID-verificatie moeten gebruiken. Gebruik az resource update om properties.disableLocalAuth van het bestaande account te wijzigen.

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

Maak eerst een nieuw account met verificatie op basis van sleutels uitgeschakeld, zodat toepassingen Microsoft Entra-verificatie moeten gebruiken.

  1. Maak een nieuw Bicep-bestand om uw nieuwe account te implementeren met verificatie op basis van sleutels uitgeschakeld. Geef het bestand de naam deploy-new-account.bicep.

    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. Gebruik az deployment group create om het Bicep-bestand met het nieuwe account te implementeren.

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

Schakel eerst verificatie op basis van sleutels uit voor uw bestaande account, zodat toepassingen Microsoft Entra-verificatie moeten gebruiken. Gebruik Get-AzResource om het bestaande account te lezen en Set-AzResource om het bij te werken.

$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

Gebruik deze stappen om een nieuw Azure Cosmos DB for NoSQL-account te maken waarvoor verificatie op basis van sleutels is uitgeschakeld, zodat toepassingen alleen Microsoft Entra-verificatie moeten gebruiken.

  1. Wanneer u een nieuw Azure Cosmos DB for NoSQL-account instelt, gaat u naar de sectie Beveiliging van het proces voor het maken van accounts.

  2. Selecteer vervolgens Uitschakelen voor de optie Verificatie op basis van sleutels .

    Schermopname van de optie om verificatie op basis van sleutels uit te schakelen bij het maken van een nieuw account in Azure Portal.

Belangrijk

Voor het wijzigen van een Azure Cosmos DB-account is een Azure-rol met ten minste de Microsoft.DocumentDb/databaseAccounts/*/write machtiging vereist. Zie machtigingen voor Azure Cosmos DB voor meer informatie.

Controleren of verificatie op basis van sleutels is uitgeschakeld

Als u wilt valideren dat toegang op basis van sleutels is uitgeschakeld, probeert u de Azure SDK te gebruiken om verbinding te maken met Azure Cosmos DB for Table met behulp van een wachtwoordreferentie voor de resource-eigenaar (ROPC). Deze poging zou moeten mislukken. Indien nodig worden hier codevoorbeelden voor algemene programmeertalen gegeven.

using Azure.Data.Tables;
using Azure.Core;

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

TableServiceClient client = new(connectionString);
const { TableServiceClient } = require('@azure/data-tables');

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

const client = new TableServiceClient(connectionString);
import { TableServiceClient } from '@azure/data-tables';

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

const client: TableServiceClient = new TableServiceClient(connectionString);
from azure.data.tables import TableServiceClient

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

client = TableServiceClient(endpoint, connection_string)
package main

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

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

func main() {
  client, _ := aztables.NewServiceClientFromConnectionString(connectionString, nil)
}
import com.azure.data.tables.TableServiceClient;
import com.azure.data.tables.TableServiceClientBuilder;

public class Table{
    public static void main(String[] args){
        TableServiceClient tableServiceClient = new TableServiceClientBuilder()
            .connectionString("AccountEndpoint=<table-endpoint>;AccountKey=<key>;")
            .buildClient();
    }
}

Controlevlak toegang op basis van rollen verlenen

Toegang tot het besturingsvlak verwijst naar de mogelijkheid om resources voor een Azure-service te beheren zonder gegevens te beheren. Zo kan de toegang tot het besturingsvlak van Azure Cosmos DB bijvoorbeeld de volgende mogelijkheden bevatten:

  • Alle account- en resourcemetagegevens lezen
  • Accountsleutels en verbindingsreeksen lezen en opnieuw genereren
  • Accountback-ups en herstel uitvoeren
  • Taken voor gegevensoverdracht starten en bijhouden
  • Databases en containers beheren
  • Accounteigenschappen wijzigen

Belangrijk

In Azure Cosmos DB hebt u toegang tot het besturingsvlak nodig voor het beheren van systeemeigen op rollen gebaseerd toegangsbeheerdefinities en -toewijzingen op basis van gegevensvlakken. Omdat het op rollen gebaseerde toegangsbeheermechanisme van Azure Cosmos DB van Azure Cosmos DB systeemeigen is, hebt u toegang tot het besturingsvlak nodig om definities en toewijzingen te maken en op te slaan als resources in een Azure Cosmos DB-account.

Eerst moet u een roldefinitie voorbereiden met een lijst om toegang te verlenen voor het beheren van accountbronnen in actions Azure Cosmos DB. In deze handleiding bereidt u een ingebouwde en aangepaste rol voor. Wijs vervolgens de zojuist gedefinieerde rol[s] toe aan een identiteit, zodat uw toepassingen toegang hebben tot resources in Azure Cosmos DB.

  1. Vermeld alle roldefinities die zijn gekoppeld aan uw Azure Cosmos DB-account met behulp van az role definition list.

    az role definition list \
        --name "Cosmos DB Operator"
    
  2. Controleer de uitvoer en zoek de roldefinitie met de naam Cosmos DB-operator. De uitvoer bevat de unieke id van de roldefinitie in de id eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

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

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. De id (230815da-be43-4aae-9cb4-875f7bd000aa) is echter wereldwijd uniek in alle roldefinities in Azure.

  3. Gebruik az group show dit om de metagegevens voor uw huidige resourcegroep op te halen.

    az group show \
        --name "<name-of-existing-resource-group>"
    
  4. Bekijk de uitvoer van de vorige opdracht. Noteer de waarde van de id eigenschap voor deze resourcegroep, omdat deze in de volgende stap moet worden gebruikt.

    {
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example",
      "location": "westus",
      "name": "msdocs-identity-example",
      "type": "Microsoft.Resources/resourceGroups"
    }
    

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Deze tekenreeks is een ingekort voorbeeld van de uitvoer.

  5. Maak een nieuw JSON-bestand met de naamrole-definition.json. Maak in het bestand deze resourcedefinitie die de waarden opgeeft die hier worden vermeld. Voeg voor de AssignableScopes-lijst de id-eigenschap toe van de resource-groep die in de vorige stap is genoteerd.

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

    Opmerking

    In dit voorbeeld wordt de /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example waarde gebruikt die is vastgelegd in de vorige stap. De werkelijke resource-id kan afwijken.

  6. Maak een nieuwe roldefinitie met behulp van az role definition create. Gebruik het role-definition.json-bestand als invoer voor het --role-definition argument.

    az role definition create \
        --role-definition role-definition.json
    
  7. Controleer de uitvoer van de opdracht voor het maken van de definitie. De uitvoer bevat de unieke id van de roldefinitie in de id eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

    {
      "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"
    }
    

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Dit voorbeeld is een subset van de typische JSON die wordt uitgevoerd vanuit de implementatie voor duidelijkheid.

  8. Gebruik az group show dit om de metagegevens voor uw huidige resourcegroep opnieuw op te halen.

    az group show \
        --name "<name-of-existing-resource-group>"
    
  9. Bekijk de uitvoer van de vorige opdracht. Noteer de waarde van de id eigenschap voor deze resourcegroep, omdat deze in de volgende stap moet worden gebruikt.

    {
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example",
      "location": "westus",
      "name": "msdocs-identity-example",
      "type": "Microsoft.Resources/resourceGroups"
    }
    

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Deze tekenreeks is een ingekort voorbeeld van de uitvoer.

  10. Wijs de nieuwe rol toe met behulp van az role assignment create. Gebruik de identificatie van de resourcegroep voor het --scope argument, de identificatie van de rol voor het -role argument, en de unieke identificatie voor uw identiteit voor het --assignee argument.

    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"
    

    Opmerking

    In deze voorbeeldopdracht is de scope opdracht ingesteld op het fictieve voorbeeld /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example uit het voorbeeld van de vorige stap. De identificatie van uw resourcegroep is verschillend van dit voorbeeld. De role was ook ingesteld op de fictieve /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. Nogmaals, uw rol-id zou uniek zijn.

  11. Bekijk de uitvoer van de opdracht. De uitvoer bevat een unieke id voor de toewijzing in de id eigenschap.

    {
      "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"
    }
    

    Opmerking

    In dit voorbeeld is de eigenschap id/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1, wat een ander fictief voorbeeld is.

  12. Herhaal deze stappen om toegang te verlenen tot het account vanaf andere identiteiten die u wilt gebruiken.

    Aanbeveling

    U kunt deze stappen herhalen voor zo veel identiteiten als u wilt. Deze stappen worden doorgaans ten minste herhaald om ontwikkelaars toegang te geven tot een account met behulp van hun menselijke identiteit en om toepassingen toegang te geven tot de gegevens met behulp van een beheerde identiteit.

  1. Vermeld alle roldefinities die zijn gekoppeld aan uw Azure Cosmos DB-account met behulp van az role definition list.

    az role definition list \
        --name "Cosmos DB Operator"
    
  2. Controleer de uitvoer en zoek de roldefinitie met de naam Cosmos DB-operator. De uitvoer bevat de unieke id van de roldefinitie in de id eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

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

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aa zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. De id (230815da-be43-4aae-9cb4-875f7bd000aa) is echter wereldwijd uniek in alle roldefinities in Azure.

  3. Maak een nieuw Bicep-bestand om uw roldefinitie te definiëren. Geef het bestand de naam control-plane-role-definition.bicep. Voeg deze actions toe aan de definitie:

    Description
    Microsoft.DocumentDb/* Hiermee schakelt u alle mogelijke acties in.
    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. Implementeer de Bicep-sjabloon met behulp van az deployment group create. Geef de naam op van de Bicep-sjabloon en de Azure-resourcegroep.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --template-file control-plane-role-definition.bicep
    
  5. Controleer de uitvoer van de implementatie. De uitvoer bevat de unieke id van de roldefinitie in de properties.outputs.definitionId.value eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

    {
      "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"
          }
        }
      }
    }
    

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1 zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Dit voorbeeld is een subset van de typische JSON die wordt uitgevoerd vanuit de implementatie voor duidelijkheid.

  6. Maak een nieuw Bicep-bestand om uw roltoewijzing te definiëren. Geef het bestand de naam control-plane-role-assignment.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. Maak een nieuw Bicep-parametersbestand met de naam control-plane-role-assignment.bicepparam. In dit parameterbestand; wijs de eerder vastgelegde roldefinitie-id's toe aan de roleDefinitionId parameter en de unieke id voor uw identiteit aan de identityId parameter.

    using './control-plane-role-assignment.bicep'
    
    param roleDefinitionId = '<id-of-new-role-definition>'
    param identityId = '<id-of-existing-identity>'
    
  8. Implementeer deze Bicep-sjabloon met behulp van 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. Herhaal deze stappen om toegang te verlenen tot het account vanaf andere identiteiten die u wilt gebruiken.

    Aanbeveling

    U kunt deze stappen herhalen voor zo veel identiteiten als u wilt. Deze stappen worden doorgaans ten minste herhaald om ontwikkelaars toegang te geven tot een account met behulp van hun menselijke identiteit en om toepassingen toegang te geven tot de gegevens met behulp van een beheerde identiteit.

  1. Meld u aan bij Azure Portal (https://portal.azure.com).

  2. Voer de resourcegroep in de algemene zoekbalk in.

    Schermopname van de algemene zoekbalk in Azure Portal.

  3. Selecteer resourcegroepen in Services.

    Schermopname van de optie Resourcegroepen geselecteerd in het zoekmenu.

  4. Selecteer uw bestaande resourcegroep in het deelvenster Resourcegroepen .

    Schermopname van een bestaande resourcegroep in de lijst met resourcegroepen voor het abonnement.

    Opmerking

    Deze voorbeeldschermafbeelding bevat de msdocs-identity-example resourcegroep. De werkelijke naam van de resourcegroep kan afwijken.

  5. Selecteer in het deelvenster voor de resourcegroep toegangsbeheer (IAM) in het servicemenu.

    Schermopname van de optie Toegangsbeheer (IAM) in het servicemenu voor een resourcegroep.

  6. Selecteer Rollen in het deelvenster Toegangsbeheer (IAM).

    Schermopname van de optie Rollen in het deelvenster Toegangsbeheer (IAM).

  7. Gebruik in de sectie Rollen de zoekterm Cosmos DB en zoek de roldefinitie van de Cosmos DB-operator . Selecteer vervolgens de optie Weergave die aan die definitie is gekoppeld.

    Schermopname van een lijst met roldefinities in het huidige toewijsbaar bereik die zijn gefilterd om alleen definities met 'Cosmos DB' in de titel te tonen.

  8. Bekijk in het dialoogvenster roldefinitie van Cosmos DB-operator de acties die zijn toegewezen als onderdeel van deze roldefinitie.

    Schermopname van het dialoogvenster Cosmos DB-operator met details over de ingebouwde roldefinitie.

  9. Sluit het dialoogvenster voor de roldefinitie van Cosmos DB-operator.

  10. Ga terug naar het Toegangsbeheer (IAM)-paneel en selecteer Toevoegen. Selecteer vervolgens Aangepaste rol toevoegen.

    Schermopname van de optie Aangepaste rol toevoegen in het menu Toegangsbeheer (IAM) voor de optie Toevoegen.

  11. Configureer in het deelvenster Basisbeginselen de volgende opties en selecteer vervolgens Volgende:

    Waarde
    Aangepaste rolnaam Azure Cosmos DB Control Plane Owner
    Beschrijving Can perform all control plane actions for an Azure Cosmos DB account.
    Standaardmachtigingen Helemaal opnieuw beginnen

    Schermopname van het deelvenster Basisbeginselen voor het toevoegen van een aangepaste rol.

  12. Selecteer Machtigingen toevoegen in het deelvenster Machtigingen. Zoek vervolgens in het dialoogvenster Machtigingen naar DocumentDB. Selecteer ten slotte de optie Microsoft.DocumentDB .

    Schermopname van het deelvenster Machtigingen voor het toevoegen van een aangepaste rol.

    Schermopname van het dialoogvenster Machtigingen toevoegen gefilterd op machtigingen met betrekking tot DocumentDB voor het toevoegen van een aangepaste rol.

  13. Selecteer in het machtigingen-dialoogvenster alle acties voor Microsoft.DocumentDB. Selecteer Vervolgens Toevoegen om terug te keren naar het deelvenster *Machtigingen .

    Schermopname van alle machtigingen die zijn geselecteerd voor DocumentDB in een dialoogvenster voor een aangepaste rol.

  14. Ga weer naar het deelvenster Machtigingen en bekijk hoe de lijst met machtigingen eruitziet. Selecteer vervolgens Beoordelen en maken.

    Schermopname van het deelvenster Machtigingen met meerdere machtigingen toegevoegd aan de lijst voor een aangepaste rol.

  15. Controleer in het deelvenster Beoordelen en maken de opgegeven opties voor de nieuwe roldefinitie. Ten slotte, selecteer Maken.

    Schermopname van het deelvenster Beoordelen en maken voor het toevoegen van een aangepaste rol.

  16. Wacht totdat de portal klaar is met het maken van de roldefinitie.

  17. Selecteer In het deelvenster Toegangsbeheer (IAM)de optie Toevoegen en vervolgens Roltoewijzing toevoegen.

    Schermopname van de optie Roltoewijzing toevoegen in het menu Toegangsbeheer (IAM) voor de optie Toevoegen.

  18. Zoek in het deelnemervenster naar Azure Cosmos DB en selecteer vervolgens de rol Azure Cosmos DB-besturingsvlakbeheerder die eerder in deze handleiding is aangemaakt. Klik vervolgens op Volgende.

    Schermopname van het deelvenster Rol voor het toevoegen van een roltoewijzing.

    Aanbeveling

    U kunt desgewenst de lijst met rollen filteren om alleen aangepaste rollen op te nemen.

  19. Selecteer in het deelvenster Leden de optie Leden selecteren . Selecteer in het dialoogvenster Leden de identiteit die u dit toegangsniveau wilt verlenen voor uw Azure Cosmos DB-account en gebruik vervolgens de optie Selecteren om uw keuze te bevestigen.

    Schermopname van het deelvenster Leden voor het toevoegen van een roltoewijzing.

    Schermopname van het dialoogvenster voor identiteitsselectie voor het toevoegen van een roltoewijzing.

    Opmerking

    Deze schermopname illustreert een voorbeeldgebruiker met de naam 'Kai Carter' met een principal van kai@adventure-works.com.

  20. Terug in het deelvenster Leden controleert u het geselecteerde lid[s] en selecteert u Beoordelen en toewijzen.

    Schermopname van het deelvenster Leden met een geselecteerde identiteit voor een roltoewijzing.

  21. Controleer in het deelvenster Beoordelen en toewijzen de opgegeven opties voor de nieuwe roltoewijzing. Selecteer ten slotte Beoordelen en toewijzen.

    Schermopname van het deelvenster Beoordelen en maken voor een roltoewijzing.

  22. Wacht totdat de portal klaar is met het maken van de roltoewijzing.

  1. Gebruik Get-AzRoleDefinition dit om alle roldefinities weer te geven die zijn gekoppeld aan uw Azure Cosmos DB-account.

    $parameters = @{
        Name = "Cosmos DB Operator"
    }
    Get-AzRoleDefinition @parameters
    
  2. Controleer de uitvoer en zoek de roldefinitie met de naam Ingebouwde Gegevensbijdrager van Cosmos DB. De uitvoer bevat de unieke id van de roldefinitie in de Id eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

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

    Opmerking

    In dit voorbeeld zou de Id waarde 230815da-be43-4aae-9cb4-875f7bd000aa zijn. De id is wereldwijd uniek in alle roldefinities in Azure.

  3. Gebruik Get-AzResourceGroup dit om de metagegevens voor uw huidige resourcegroep op te halen.

    $parameters = @{
        Name = "<name-of-existing-resource-group>"
    }
    Get-AzResourceGroup @parameters
    
  4. Bekijk de uitvoer van de vorige opdracht. Noteer de waarde van de ResourceId eigenschap voor deze resourcegroep, omdat deze in de volgende stap moet worden gebruikt.

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

    Opmerking

    In dit voorbeeld zou de ResourceId waarde /subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourcegroups/msdocs-identity-example zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Deze tekenreeks is een ingekort voorbeeld van de typische uitvoer.

  5. Importeer eerst de Az.Resources module. Maak vervolgens een nieuw Microsoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinition object. Maak in het object deze resourcedefinitie die de waarden opgeeft die hier worden vermeld. Voeg voor de AssignableScopes-lijst de ResourceId-eigenschap toe van de resource-groep die in de vorige stap is genoteerd. Gebruik ten slotte het roldefinitieobject als invoer voor de -Role parameter van New-AzRoleDefinition.

    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
    

    Opmerking

    In dit voorbeeld wordt de /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example waarde gebruikt die is vastgelegd in de vorige stap. De werkelijke resource-id kan afwijken.

  6. Controleer de uitvoer van de opdracht voor het maken van de definitie. De uitvoer bevat de unieke id van de roldefinitie in de Name eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

    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}
    

    Opmerking

    In dit voorbeeld zou de Name waarde Azure Cosmos DB Control Plane Owner zijn. Dit voorbeeld is een subset van typische uitvoer van de implementatie ter verduidelijking.

  7. Wijs de nieuwe rol toe met behulp van New-AzRoleAssignment. Gebruik de naam van de rol voor de RoleDefinitionName parameter en de unieke id voor uw identiteit voor de ObjectId parameter.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        ObjectId = "<your-principal-identifier>"
        RoleDefinitionName = "Azure Cosmos DB Control Plane Owner"
    }
    New-AzRoleAssignment @parameters
    
  8. Bekijk de uitvoer van de opdracht. De uitvoer bevat een unieke id voor de toewijzing in de RoleAssignmentId eigenschap.

    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
    

    Opmerking

    In dit voorbeeld is de eigenschap RoleAssignmentId/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleAssignments/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1, wat een ander fictief voorbeeld is. Dit voorbeeld is een subset van typische uitvoer van de implementatie ter verduidelijking.

  9. Herhaal deze stappen om toegang te verlenen tot het account vanaf andere identiteiten die u wilt gebruiken.

    Aanbeveling

    U kunt deze stappen herhalen voor zo veel identiteiten als u wilt. Deze stappen worden doorgaans ten minste herhaald om ontwikkelaars toegang te geven tot een account met behulp van hun menselijke identiteit en om toepassingen toegang te geven tot de gegevens met behulp van een beheerde identiteit.

Belangrijk

Als u een roldefinitie toewijst, moet u al de unieke id hebben van elke gebruikersaccount waaraan u rolgebaseerde toegangsrechten wilt verlenen.

Toegang op basis van rollen in het besturingsvlak valideren in code

Controleer of u de juiste toegang hebt verleend met behulp van toepassingscode en de Azure Management SDK.

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);
    }
}

Toegang op basis van rollen op gegevensvlak verlenen

Toegang tot gegevensvlakken verwijst naar de mogelijkheid om gegevens in een Azure-service te lezen en te schrijven zonder de mogelijkheid om resources in het account te beheren. Azure Cosmos DB-gegevensvlaktoegang kan bijvoorbeeld de volgende mogelijkheden bieden:

  • Enkele account- en resourcemetagegevens lezen
  • Items maken, lezen, bijwerken, patchen en verwijderen
  • Tabelquery's uitvoeren
  • Lezen uit de wijzigingenfeed van een container
  • Opgeslagen procedures uitvoeren
  • Conflicten in de conflictfeed beheren

Eerst moet u een roldefinitie voorbereiden met een lijst van dataActions om lees-, opvraag- en beheertoegang te verlenen tot gegevens in Azure Cosmos DB voor Table. In deze handleiding bereidt u een ingebouwde en aangepaste rol voor. Wijs vervolgens de zojuist gedefinieerde rol[s] toe aan een identiteit, zodat uw toepassingen toegang hebben tot gegevens in Azure Cosmos DB for Table.

  1. Haal eerst de resource-id van het bestaande Azure Cosmos DB for Table-account op met az cosmsodb show en sla deze op in een variabele.

    resourceId=$( \
        az cosmosdb show \
            --resource-group "<name-of-existing-resource-group>" \
            --name "<name-of-existing-table-account>" \
            --query "id" \
            --output tsv \
    )
    
    az rest \
        --method "GET" \
        --url $resourceId/tableRoleDefinitions?api-version=2023-04-15
    
  2. Vermeld vervolgens alle roldefinities die zijn gekoppeld aan uw Azure Cosmos DB for Table-account met behulp van az rest. Controleer ten slotte de uitvoer en zoek de roldefinitie met de naam Cosmos DB Built-in Data Contributor. De uitvoer bevat de unieke id van de roldefinitie in de id eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

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

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table/tableRoleDefinitions/00000000-0000-0000-0000-000000000002 zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Deze voorbeelduitvoer wordt afgekapt.

  3. Maak een nieuw JSON-bestand met de naamrole-definition.json. Maak in dit bestand een resourcedefinitie die de hier vermelde gegevensacties opgeeft:

    Description
    Microsoft.DocumentDB/databaseAccounts/readMetadata Kan metagegevens op accountniveau lezen
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/* Kan gegevensbewerkingen op containerniveau uitvoeren
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/* Kan elke bewerking uitvoeren op items met containers
    {
      "properties": {
        "roleName": "Azure Cosmos DB for Table Data Plane Owner",
        "type": "CustomRole",
        "assignableScopes": [
          "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sidandrews-rbac/providers/Microsoft.DocumentDB/databaseAccounts/sidandrews-rbac-table/"
        ],
        "permissions": [
          {
            "dataActions": [
              "Microsoft.DocumentDB/databaseAccounts/readMetadata",
              "Microsoft.DocumentDB/databaseAccounts/tables/*",
              "Microsoft.DocumentDB/databaseAccounts/tables/containers/entities/*"
            ]
          }
        ]
      }
    }
    
  4. Maak of werk nu een roldefinitie bij met behulp van az cosmosdb show en az rest samen om een HTTP-aanvraag PUT uit te geven. Geef als onderdeel van deze aanvraag een unieke GUID op voor uw roldefinitie.

    resourceId=$( \
        az cosmosdb show \
            --resource-group "<name-of-existing-resource-group>" \
            --name "<name-of-existing-table-account>" \
            --query "id" \
            --output tsv \
    )
    
    az rest \
        --method "PUT" \
        --url $resourceId/tableRoleDefinitions/d3d3d3d3-eeee-ffff-aaaa-b4b4b4b4b4b4?api-version=2023-04-15 \
        --body @role-definition.json
    

    Opmerking

    In dit voorbeeld is de unieke GUID d3d3d3d3-eeee-ffff-aaaa-b4b4b4b4b4b4 opgegeven. U kunt elke unieke GUID opgeven voor uw eigen roldefinitie.

  5. De uitvoer moet nu aangeven dat de aanvraag in de wachtrij staat. Wacht nu tot de implementatie van de roldefinitie in de wachtrij is voltooid. Deze taak kan enkele minuten duren.

    {
      "status": "Enqueued"
    }
    
  6. Controleer ten slotte opnieuw de lijst met roldefinities met behulp van az rest.

    resourceId=$( \
        az cosmosdb show \
            --resource-group "<name-of-existing-resource-group>" \
            --name "<name-of-existing-table-account>" \
            --query "id" \
            --output tsv \
    )
    
    az rest \
        --method "GET" \
        --url $resourceId/tableRoleDefinitions?api-version=2023-04-15
    
  7. Gebruik az cosmosdb show om de unieke id voor uw huidige account op te halen.

    az cosmosdb show \
        --resource-group "<name-of-existing-resource-group>" \
        --name "<name-of-existing-resource-group>" \
        --query "{id:id}"
    
  8. Bekijk de uitvoer van de vorige opdracht. Noteer de waarde van de id eigenschap voor dit account omdat deze in de volgende stap moet worden gebruikt.

    {
      "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table"
    }
    

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.

  9. Maak een nieuw JSON-bestand met de naamrole-assignment.json. Voeg in het JSON-bestand de unieke identificatie van uw identiteit en de unieke identificatie van de accountresource toe.

    {
      "properties": {
        "roleDefinitionId": "<account-resource-id>/tableRoleDefinitions/d3d3d3d3-eeee-ffff-aaaa-b4b4b4b4b4b4",
        "scope": "<account-resource-id>",
        "principalId": "<id-of-existing-identity>"
      }
    }
    

    Opmerking

    In dit voorbeeld is de unieke GUID d3d3d3d3-eeee-ffff-aaaa-b4b4b4b4b4b4 opgegeven. U kunt de unieke GUID gebruiken die u eerder hebt gebruikt voor uw eigen roldefinitie.

    Aanbeveling

    In de systeemeigen implementatie van op rollen gebaseerd toegangsbeheer van Azure Cosmos DB verwijst het bereik naar de granulariteit van resources binnen een account waarvoor u machtigingen wilt toepassen. Op het hoogste niveau kunt u een toewijzing van op rollen gebaseerd toegangsbeheer op basis van een gegevensvlak opgeven voor het hele account met behulp van het grootste bereik. Dit bereik omvat alle databases en containers binnen het account:

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

    U kunt ook de roltoewijzing van uw datavlak toewijzen aan een specifieke database:

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

    Ten slotte kunt u de opdracht beperken tot één container, de meest fijnmazige reikwijdte:

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

    In veel gevallen kunt u het relatieve bereik gebruiken in plaats van het volledig gekwalificeerde bereik. U kunt dit relatieve bereik bijvoorbeeld gebruiken om machtigingen voor op rollen gebaseerd toegangsbeheer op basis van gegevensvlak te verlenen aan een specifieke database en container vanuit een Azure CLI-opdracht:

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

    U kunt ook universele toegang verlenen tot alle databases en containers met behulp van het relatieve bereik:

    /
    
  10. Maak nu een roltoewijzing aan of werk deze bij door az cosmosdb show en az rest samen te gebruiken om een HTTP-verzoek uit te voeren met PUT. Geef als onderdeel van deze aanvraag een unieke GUID op voor uw roltoewijzing.

    resourceId=$( \
        az cosmosdb show \
            --resource-group "<name-of-existing-resource-group>" \
            --name "<name-of-existing-table-account>" \
            --query "id" \
            --output tsv \
    )
    
    az rest \
        --method "PUT" \
        --url $resourceId/tableRoleAssignments/e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5?api-version=2023-04-15 \
        --body @role-assignment.json
    

    Opmerking

    In dit voorbeeld is de unieke GUID e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5 opgegeven. U kunt elke unieke GUID opgeven voor uw eigen roltoewijzing.

  1. Haal eerst de resource-id van het bestaande Azure Cosmos DB for Table-account op met az cosmsodb show en sla deze op in een variabele.

    resourceId=$( \
        az cosmosdb show \
            --resource-group "<name-of-existing-resource-group>" \
            --name "<name-of-existing-table-account>" \
            --query "id" \
            --output tsv \
    )
    
    az rest \
        --method "GET" \
        --url $resourceId/tableRoleDefinitions?api-version=2023-04-15
    
  2. Vermeld vervolgens alle roldefinities die zijn gekoppeld aan uw Azure Cosmos DB for Table-account met behulp van az rest. Controleer ten slotte de uitvoer en zoek de roldefinitie met de naam Cosmos DB Built-in Data Contributor. De uitvoer bevat de unieke id van de roldefinitie in de id eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

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

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table/tableRoleDefinitions/00000000-0000-0000-0000-000000000002 zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Deze voorbeelduitvoer wordt afgekapt.

  3. Maak een nieuw Bicep-bestand om uw roldefinitie te definiëren. Geef het bestand de naam data-plane-role-definition.bicep. Voeg deze dataActions toe aan de definitie:

    Description
    Microsoft.DocumentDB/databaseAccounts/readMetadata
    Microsoft.DocumentDB/databaseAccounts/tables/*
    Microsoft.DocumentDB/databaseAccounts/tables/containers/entities/*
    metadata description = 'Create RBAC definition for data plane access to Azure Cosmos DB for Table.'
    
    @description('Name of the Azure Cosmos DB for Table account.')
    param accountName string
    
    @description('Name of the role definition.')
    param roleDefinitionName string = 'API for Table Data Plane Owner'
    
    resource account 'Microsoft.DocumentDB/databaseAccounts@2023-04-15' existing = {
      name: accountName
    }
    
    resource definition 'Microsoft.DocumentDB/databaseAccounts/tableRoleDefinitions@2023-04-15' = {
      name: guid('table-role-definition', account.id)
      parent: account
      properties: {
        roleName: roleDefinitionName
        type: 'CustomRole'
        assignableScopes: [
          account.id
        ]
        permissions: [
          {
            dataActions: [
              'Microsoft.DocumentDB/databaseAccounts/readMetadata'
              'Microsoft.DocumentDB/databaseAccounts/tables/*'
              'Microsoft.DocumentDB/databaseAccounts/tables/containers/entities/*'
            ]
          }
        ]
      }
    }
    
    output definitionId string = definition.id
    

    Aanbeveling

    In de systeemeigen implementatie van op rollen gebaseerd toegangsbeheer van Azure Cosmos DB verwijst het bereik naar de granulariteit van resources binnen een account waarvoor u machtigingen wilt toepassen. Op het hoogste niveau kunt u een toewijzing van op rollen gebaseerd toegangsbeheer op basis van een gegevensvlak opgeven voor het hele account met behulp van het grootste bereik. Dit bereik omvat alle databases en containers binnen het account:

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

    U kunt ook de roltoewijzing van uw datavlak toewijzen aan een specifieke database:

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

    Ten slotte kunt u de opdracht beperken tot één container, de meest fijnmazige reikwijdte:

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

    In veel gevallen kunt u het relatieve bereik gebruiken in plaats van het volledig gekwalificeerde bereik. U kunt dit relatieve bereik bijvoorbeeld gebruiken om machtigingen voor op rollen gebaseerd toegangsbeheer op basis van gegevensvlak te verlenen aan een specifieke database en container vanuit een Azure CLI-opdracht:

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

    U kunt ook universele toegang verlenen tot alle databases en containers met behulp van het relatieve bereik:

    /
    
  4. Maak een nieuw Bicep-parametersbestand met de naam data-plane-role-definition.bicepparam. Wijs in dit parameterbestand de naam van uw bestaande Azure Cosmos DB for Table-account toe aan de accountName parameter.

    using './data-plane-role-definition.bicep'
    
    param accountName = '<name-of-existing-table-account>'
    
  5. Implementeer de Bicep-sjabloon met behulp van az deployment group create. Geef de naam op van de Bicep-sjabloon, het parameterbestand en de Azure-resourcegroep.

    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. Controleer de uitvoer van de implementatie. De uitvoer bevat de unieke id van de roldefinitie in de properties.outputs.definitionId.value eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

    {
      "properties": {
        "outputs": {
          "definitionId": {
            "type": "String",
            "value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table-account/tableRoleDefinitions/dddddddd-9999-0000-1111-eeeeeeeeeeee"
          }
        }
      }
    }
    

    Opmerking

    In dit voorbeeld zou de id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table-account/tableRoleDefinitions/dddddddd-9999-0000-1111-eeeeeeeeeeee zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Dit voorbeeld is een subset van de typische JSON die wordt uitgevoerd vanuit de implementatie voor duidelijkheid.

  7. Maak een extra Bicep-bestand aan om een rol aan een identiteit toe te wijzen. Geef dit bestand de naam data-plane-role-assignment.bicep.

    metadata description = 'Assign RBAC role for data plane access to Azure Cosmos DB for Table.'
    
    @description('Name of the Azure Cosmos DB for Table 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
    
    resource account 'Microsoft.DocumentDB/databaseAccounts@2023-04-15' existing = {
      name: accountName
    }
    
    resource assignment 'Microsoft.DocumentDB/databaseAccounts/tableRoleAssignments@2023-04-15' = {
      name: guid(roleDefinitionId, identityId, account.id)
      parent: account
      properties: {
        principalId: identityId
        roleDefinitionId: roleDefinitionId
        scope: account.id
      }
    }
    
    output id string = assignment.id
    
  8. Maak een nieuw Bicep-parametersbestand met de naam data-plane-role-assignment.bicepparam. In dit parameterbestand; wijs de naam van uw bestaande Azure Cosmos DB for Table-account toe aan de accountName parameter, de eerder vastgelegde roldefinitie-id's aan de roleDefinitionId parameter en de unieke id voor uw identiteit aan de identityId parameter.

    using './data-plane-role-assignment.bicep'
    
    param accountName = '<name-of-existing-table-account>'
    param roleDefinitionId = '<id-of-new-role-definition>'
    param identityId = '<id-of-existing-identity>'
    
  9. Implementeer deze Bicep-sjabloon met behulp van az deployment group create.

    az deployment group create \
        --resource-group "<name-of-existing-resource-group>" \
        --parameters data-plane-role-assignment.bicepparam \
        --template-file data-plane-role-assignment.bicep
    
  10. Herhaal deze stappen om toegang te verlenen tot het account vanaf andere identiteiten die u wilt gebruiken.

    Aanbeveling

    U kunt deze stappen herhalen voor zo veel identiteiten als u wilt. Deze stappen worden doorgaans ten minste herhaald om ontwikkelaars toegang te geven tot een account met behulp van hun menselijke identiteit en om toepassingen toegang te geven tot gegevens met behulp van een beheerde identiteit.

  1. Gebruik Get-AzCosmosDBAccount dit om de resource-id van het bestaande Azure Cosmos DB for Table-account op te halen en op te slaan in een variabele.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-table-account>"
    }
    $resourceId = (
        Get-AzCosmosDBAccount @parameters |
            Select-Object -Property Id -First 1
    ).Id
    
    $parameters = @{
      Path = "$resourceId/tableRoleDefinitions?api-version=2023-04-15"
      Method = "GET"
    }
    Invoke-AzRestMethod @parameters
    
  2. Gebruik vervolgens Invoke-AzRestMethod om alle roldefinities weer te geven die zijn gekoppeld aan uw Azure Cosmos DB for Table-account. Controleer de uitvoer en zoek de roldefinitie met de naam Ingebouwde Gegevensbijdrager van Cosmos DB. De uitvoer bevat de unieke id van de roldefinitie in de Id eigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.

    StatusCode : 200
    Content    : {
        "value": [
          ...,
          {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table/tableRoleDefinitions/00000000-0000-0000-0000-000000000002",
            "name": "00000000-0000-0000-0000-000000000002",
            "properties": {
              "assignableScopes": [
                "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table"
              ],
              "permissions": [
                {
                  "dataActions": [
                    "Microsoft.DocumentDB/databaseAccounts/readMetadata",
                    "Microsoft.DocumentDB/databaseAccounts/tables/*",
                    "Microsoft.DocumentDB/databaseAccounts/tables/containers/entities/*"
                  ],
                  "notDataActions": []
                }
              ],
              "roleName": "Cosmos DB Built-in Data Contributor",
              "type": "BuiltInRole"
            },
            "type": "Microsoft.DocumentDB/databaseAccounts/tableRoleDefinitions"
          }
          ...
          ]
        },
        ...
      ]
    }
    

    Opmerking

    In dit voorbeeld zou de Id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table/tableRoleDefinitions/00000000-0000-0000-0000-000000000002 zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. Deze voorbeelduitvoer wordt afgekapt.

  3. Maak of werk uw roldefinitie bij met behulp van Get-AzCosmosDBAccount en Invoke-AzRestMethod samen om een HTTP-aanvraag PUT uit te geven. Geef als onderdeel van deze aanvraag ook een unieke GUID op voor uw roldefinitie. Maak ten slotte een payload van een resourcedefinitie die de gegevensacties specificeert die hier worden vermeld:

    Description
    Microsoft.DocumentDB/databaseAccounts/readMetadata Kan metagegevens op accountniveau lezen
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/* Kan gegevensbewerkingen op containerniveau uitvoeren
    Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/items/* Kan elke bewerking uitvoeren op items met containers
    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-table-account>"
    }
    $resourceId = (
        Get-AzCosmosDBAccount @parameters |
            Select-Object -Property Id -First 1
    ).Id
    
    $payload = @{
      properties = @{
        roleName = "Azure Cosmos DB for Table Data Plane Owner"
        type = "CustomRole"
        assignableScopes = @(
          "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sidandrews-rbac/providers/Microsoft.DocumentDB/databaseAccounts/sidandrews-rbac-table/"
        )
        permissions = @(
          @{
            dataActions = @(
              "Microsoft.DocumentDB/databaseAccounts/readMetadata",
              "Microsoft.DocumentDB/databaseAccounts/tables/*",
              "Microsoft.DocumentDB/databaseAccounts/tables/containers/entities/*"
            )
          }
        )
      }
    }
    
    $parameters = @{
      Path = "$resourceId/tableRoleDefinitions/d3d3d3d3-eeee-ffff-aaaa-b4b4b4b4b4b4?api-version=2023-04-15"
      Method = "PUT"
      Payload = $payload | ConvertTo-Json -Depth 4
    }
    Invoke-AzRestMethod @parameters
    

    Opmerking

    In dit voorbeeld is de unieke GUID d3d3d3d3-eeee-ffff-aaaa-b4b4b4b4b4b4 opgegeven. U kunt elke unieke GUID opgeven voor uw eigen roldefinitie.

    Aanbeveling

    In de systeemeigen implementatie van op rollen gebaseerd toegangsbeheer van Azure Cosmos DB verwijst het bereik naar de granulariteit van resources binnen een account waarvoor u machtigingen wilt toepassen. Op het hoogste niveau kunt u een toewijzing van op rollen gebaseerd toegangsbeheer op basis van een gegevensvlak opgeven voor het hele account met behulp van het grootste bereik. Dit bereik omvat alle databases en containers binnen het account:

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

    U kunt ook de roltoewijzing van uw datavlak toewijzen aan een specifieke database:

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

    Ten slotte kunt u de opdracht beperken tot één container, de meest fijnmazige reikwijdte:

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

    In veel gevallen kunt u het relatieve bereik gebruiken in plaats van het volledig gekwalificeerde bereik. U kunt dit relatieve bereik bijvoorbeeld gebruiken om machtigingen voor op rollen gebaseerd toegangsbeheer op basis van gegevensvlak te verlenen aan een specifieke database en container vanuit een Azure CLI-opdracht:

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

    U kunt ook universele toegang verlenen tot alle databases en containers met behulp van het relatieve bereik:

    /
    
  4. De uitvoer moet worden geretourneerd met een statuscode van 200. Wacht nu tot de implementatie van de roldefinitie in de wachtrij is voltooid. Deze taak kan enkele minuten duren.

    StatusCode : 200
    ...
    
  5. Controleer ten slotte opnieuw de lijst met roldefinities met behulp van Invoke-AzRestMethod.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-table-account>"
    }
    $resourceId = (
        Get-AzCosmosDBAccount @parameters |
            Select-Object -Property Id -First 1
    ).Id
    
    $parameters = @{
      Path = "$resourceId/tableRoleDefinitions?api-version=2023-04-15"
      Method = "GET"
    }
    Invoke-AzRestMethod @parameters
    
  6. Gebruik `Get-AzCosmosDBAccount` om de unieke ID voor uw huidige account op te halen.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-table-account>"
    }
    Get-AzCosmosDBAccount @parameters | Select -Property Id
    
  7. Bekijk de uitvoer van de vorige opdracht. Noteer de waarde van de Id eigenschap voor dit account omdat deze in de volgende stap moet worden gebruikt.

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

    Opmerking

    In dit voorbeeld zou de Id waarde /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-table zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.

  8. Maak nu een roltoewijzing aan of werk deze bij door Get-AzCosmosDBAccount en Invoke-AzRestMethod samen te gebruiken om een HTTP-verzoek uit te voeren met PUT. Geef als onderdeel van deze aanvraag een unieke GUID op voor uw roltoewijzing. Maak ten slotte een payload voor resourcetoewijzing die de unieke id voor uw identiteit specificeert.

    $parameters = @{
        ResourceGroupName = "<name-of-existing-resource-group>"
        Name = "<name-of-existing-table-account>"
    }
    $resourceId = (
        Get-AzCosmosDBAccount @parameters |
            Select-Object -Property Id -First 1
    ).Id    
    
    $payload = @{
      properties = @{
        roleDefinitionId = "$resourceId/tableRoleDefinitions/00000000-0000-0000-0000-000000000002"
        scope = "$resourceId"
        principalId = "<id-of-existing-identity>"
      }
    }
    
    $parameters = @{
      Path = "$resourceId/tableRoleAssignments/e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5?api-version=2023-04-15"
      Method = "PUT"
      Payload = $payload | ConvertTo-Json -Depth 2
    }
    Invoke-AzRestMethod @parameters
    

    Opmerking

    In dit voorbeeld is de unieke GUID e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5 opgegeven. U kunt elke unieke GUID opgeven voor uw eigen roltoewijzing.

Waarschuwing

Het beheren van op rollen gebaseerd toegangsbeheer op basis van gegevensvlak wordt niet ondersteund in Azure Portal.

Toegang op basis van rollen in gegevensvlak valideren in code

Controleer of u de juiste toegang hebt verleend met behulp van toepassingscode en de Azure SDK.

using Azure.Identity;
using Azure.Data.Tables;

string endpoint = "<account-endpoint>";

DefaultAzureCredential credential = new();

TableServiceClient client = new(
    endpoint: new Uri(endpoint),
    tokenCredential: credential
);

TableClient table = client.GetTableClient(
    tableName: "<name-of-table>"
);

await table.GetEntityAsync<TableEntity>(
    partitionKey: "<partition-key>",
    rowKey: "<row-key>"
);
const { TableServiceClient, TableClient } = require('@azure/data-tables');
const { DefaultAzureCredential } = require('@azure/identity');

const endpoint = '<account-endpoint>';

let credential = new DefaultAzureCredential();

let client = new TableServiceClient(endpoint, credential);

let table = new TableClient(endpoint, "<table-name>", credential);

await table.getEntity("<partition-key>", "<row-key>");
import { TableServiceClient, TableClient } from '@azure/data-tables';
import { TokenCredential, DefaultAzureCredential } from '@azure/identity';

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

let credential: TokenCredential = new DefaultAzureCredential();

let client: TableServiceClient = new TableServiceClient(endpoint, credential);

let table: TableClient = new TableClient(endpoint, "<table-name>", credential);

await table.getEntity("<partition-key>", "<row-key>");
from azure.data.tables import TableServiceClient
from azure.identity import DefaultAzureCredential

endpoint = "<account-endpoint>"

credential = DefaultAzureCredential()

client = TableServiceClient(endpoint, credential=credential)

table = client.get_table_client("<table-name>")

table.get_entity(
    row_key="<row-key>",
    partition_key="<partition-key>"
)
import (
    "context"
    
    "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
    "github.com/Azure/azure-sdk-for-go/sdk/data/aztables"
)

const endpoint = "<account-endpoint>"

func main() {
    credential, _ := azidentity.NewDefaultAzureCredential(nil)
    client, _ := aztables.NewServiceClient(endpoint, credential, nil)
    table := client.NewClient("<table-name>")
    
    _, err := table.GetEntity(context.TODO(), "<partition-key>", "<row-key>", nil)
    if err != nil {
        panic(err)
    }
}
import com.azure.data.tables.TableClient;
import com.azure.data.tables.TableServiceClient;
import com.azure.data.tables.TableServiceClientBuilder;
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;

public class Table{
    public static void main(String[] args){
        DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
            .build();
        
        TableServiceClient client = new TableServiceClientBuilder()
            .endpoint("<table-endpoint>")
            .credential(credential)
            .buildClient();

        TableClient table = client
            .getTableClient("<table-name>");

        table.getEntity("<partition-key>", "<row-key>");
    }
}