Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 NoSQL-account.
Een of meer bestaande identiteiten in Microsoft Entra ID.
Gebruik de Bash-omgeving in Azure Cloud Shell. Zie Aan de slag met Azure Cloud Shell voor meer informatie.
Als je de voorkeur geeft aan het lokaal uitvoeren van CLI-referentiecommando's, installeer dan de Azure CLI. Als je op Windows of macOS werkt, overweeg dan om Azure CLI in een Docker-container uit te voeren. Voor meer informatie, zie Hoe u de Azure CLI in een Docker-container kunt uitvoeren.
Als u een lokale installatie gebruikt, meldt u zich aan bij Azure CLI met de opdracht az login. Om het authenticatieproces te voltooien, volgt u de stappen die op uw terminal worden weergegeven. Zie Verifiëren bij Azure met behulp van Azure CLI voor andere aanmeldingsopties.
Wanneer u daarom wordt gevraagd, installeer de Azure CLI-extensie bij het eerste gebruik. Zie Extensies gebruiken en beheren met de Azure CLIvoor meer informatie over extensies.
Voer az version uit om de geïnstalleerde versie en de afhankelijke bibliotheken te vinden. Voer az upgrade uit om naar de nieuwste versie te upgraden.
- Als u ervoor kiest om Azure PowerShell lokaal te gebruiken:
- Installeer de nieuwste versie van de Az PowerShell-module.
- Maak verbinding met uw Azure-account met de cmdlet Connect-AzAccount.
- Als u ervoor kiest om Azure Cloud Shell te gebruiken:
- Raadpleeg Overzicht van Azure Cloud Shell voor meer informatie.
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.
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 } }Gebruik
az deployment group createom 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.
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.
Selecteer vervolgens Uitschakelen voor de optie Verificatie op basis van sleutels .
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 NoSQL 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 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();
}
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.
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"Controleer de uitvoer en zoek de roldefinitie met de naam Cosmos DB-operator. De uitvoer bevat de unieke id van de roldefinitie in de
ideigenschap. 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
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aazijn. 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.Gebruik
az group showdit om de metagegevens voor uw huidige resourcegroep op te halen.az group show \ --name "<name-of-existing-resource-group>"Bekijk de uitvoer van de vorige opdracht. Noteer de waarde van de
ideigenschap 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
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-examplezijn. 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.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 deid-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-examplewaarde gebruikt die is vastgelegd in de vorige stap. De werkelijke resource-id kan afwijken.Maak een nieuwe roldefinitie met behulp van
az role definition create. Gebruik het role-definition.json-bestand als invoer voor het--role-definitionargument.az role definition create \ --role-definition role-definition.jsonControleer de uitvoer van de opdracht voor het maken van de definitie. De uitvoer bevat de unieke id van de roldefinitie in de
ideigenschap. 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
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1zijn. 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.Gebruik
az group showdit om de metagegevens voor uw huidige resourcegroep opnieuw op te halen.az group show \ --name "<name-of-existing-resource-group>"Bekijk de uitvoer van de vorige opdracht. Noteer de waarde van de
ideigenschap 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
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-examplezijn. 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.Wijs de nieuwe rol toe met behulp van
az role assignment create. Gebruik de identificatie van de resourcegroep voor het--scopeargument, de identificatie van de rol voor het-roleargument, en de unieke identificatie voor uw identiteit voor het--assigneeargument.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
scopeopdracht ingesteld op het fictieve voorbeeld/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-exampleuit het voorbeeld van de vorige stap. De identificatie van uw resourcegroep is verschillend van dit voorbeeld. Derolewas 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.Bekijk de uitvoer van de opdracht. De uitvoer bevat een unieke id voor de toewijzing in de
ideigenschap.{ "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.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.
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"Controleer de uitvoer en zoek de roldefinitie met de naam Cosmos DB-operator. De uitvoer bevat de unieke id van de roldefinitie in de
ideigenschap. 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
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Authorization/roleDefinitions/230815da-be43-4aae-9cb4-875f7bd000aazijn. 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.Maak een nieuw Bicep-bestand om uw roldefinitie te definiëren. Geef het bestand de naam control-plane-role-definition.bicep. Voeg deze
actionstoe 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.idImplementeer 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.bicepControleer de uitvoer van de implementatie. De uitvoer bevat de unieke id van de roldefinitie in de
properties.outputs.definitionId.valueeigenschap. 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
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1zijn. 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.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 } }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 deroleDefinitionIdparameter en de unieke id voor uw identiteit aan deidentityIdparameter.using './control-plane-role-assignment.bicep' param roleDefinitionId = '<id-of-new-role-definition>' param identityId = '<id-of-existing-identity>'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.bicepHerhaal 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.
Meld u aan bij Azure Portal (https://portal.azure.com).
Voer de resourcegroep in de algemene zoekbalk in.
Selecteer resourcegroepen in Services.
Selecteer uw bestaande resourcegroep in het deelvenster Resourcegroepen .
Opmerking
Deze voorbeeldschermafbeelding bevat de
msdocs-identity-exampleresourcegroep. De werkelijke naam van de resourcegroep kan afwijken.Selecteer in het deelvenster voor de resourcegroep toegangsbeheer (IAM) in het servicemenu.
Selecteer Rollen in het deelvenster Toegangsbeheer (IAM).
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.
Bekijk in het dialoogvenster roldefinitie van Cosmos DB-operator de acties die zijn toegewezen als onderdeel van deze roldefinitie.
Sluit het dialoogvenster voor de roldefinitie van Cosmos DB-operator.
Ga terug naar het Toegangsbeheer (IAM)-paneel en selecteer Toevoegen. Selecteer vervolgens Aangepaste rol toevoegen.
Configureer in het deelvenster Basisbeginselen de volgende opties en selecteer vervolgens Volgende:
Waarde Aangepaste rolnaam Azure Cosmos DB Control Plane OwnerBeschrijving Can perform all control plane actions for an Azure Cosmos DB account.Standaardmachtigingen Helemaal opnieuw beginnen
Selecteer Machtigingen toevoegen in het deelvenster Machtigingen. Zoek vervolgens in het dialoogvenster Machtigingen naar
DocumentDB. Selecteer ten slotte de optie Microsoft.DocumentDB .
Selecteer in het machtigingen-dialoogvenster alle acties voor
Microsoft.DocumentDB. Selecteer Vervolgens Toevoegen om terug te keren naar het deelvenster *Machtigingen .
Ga weer naar het deelvenster Machtigingen en bekijk hoe de lijst met machtigingen eruitziet. Selecteer vervolgens Beoordelen en maken.
Controleer in het deelvenster Beoordelen en maken de opgegeven opties voor de nieuwe roldefinitie. Ten slotte, selecteer Maken.
Wacht totdat de portal klaar is met het maken van de roldefinitie.
Selecteer In het deelvenster Toegangsbeheer (IAM)de optie Toevoegen en vervolgens Roltoewijzing toevoegen.
Zoek in het deelnemervenster naar
Azure Cosmos DBen selecteer vervolgens de rol Azure Cosmos DB-besturingsvlakbeheerder die eerder in deze handleiding is aangemaakt. Klik vervolgens op Volgende.
Aanbeveling
U kunt desgewenst de lijst met rollen filteren om alleen aangepaste rollen op te nemen.
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.
Opmerking
Deze schermopname illustreert een voorbeeldgebruiker met de naam 'Kai Carter' met een principal van
kai@adventure-works.com.Terug in het deelvenster Leden controleert u het geselecteerde lid[s] en selecteert u Beoordelen en toewijzen.
Controleer in het deelvenster Beoordelen en toewijzen de opgegeven opties voor de nieuwe roltoewijzing. Selecteer ten slotte Beoordelen en toewijzen.
Wacht totdat de portal klaar is met het maken van de roltoewijzing.
Gebruik
Get-AzRoleDefinitiondit om alle roldefinities weer te geven die zijn gekoppeld aan uw Azure Cosmos DB-account.$parameters = @{ Name = "Cosmos DB Operator" } Get-AzRoleDefinition @parametersControleer 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
Ideigenschap. 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
Idwaarde230815da-be43-4aae-9cb4-875f7bd000aazijn. De id is wereldwijd uniek in alle roldefinities in Azure.Gebruik
Get-AzResourceGroupdit om de metagegevens voor uw huidige resourcegroep op te halen.$parameters = @{ Name = "<name-of-existing-resource-group>" } Get-AzResourceGroup @parametersBekijk de uitvoer van de vorige opdracht. Noteer de waarde van de
ResourceIdeigenschap 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-exampleOpmerking
In dit voorbeeld zou de
ResourceIdwaarde/subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourcegroups/msdocs-identity-examplezijn. 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.Importeer eerst de
Az.Resourcesmodule. Maak vervolgens een nieuwMicrosoft.Azure.Commands.Resources.Models.Authorization.PSRoleDefinitionobject. Maak in het object deze resourcedefinitie die de waarden opgeeft die hier worden vermeld. Voeg voor deAssignableScopes-lijst deResourceId-eigenschap toe van de resource-groep die in de vorige stap is genoteerd. Gebruik ten slotte het roldefinitieobject als invoer voor de-Roleparameter vanNew-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 $roleOpmerking
In dit voorbeeld wordt de
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-examplewaarde gebruikt die is vastgelegd in de vorige stap. De werkelijke resource-id kan afwijken.Controleer de uitvoer van de opdracht voor het maken van de definitie. De uitvoer bevat de unieke id van de roldefinitie in de
Nameeigenschap. 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
NamewaardeAzure Cosmos DB Control Plane Ownerzijn. Dit voorbeeld is een subset van typische uitvoer van de implementatie ter verduidelijking.Wijs de nieuwe rol toe met behulp van
New-AzRoleAssignment. Gebruik de naam van de rol voor deRoleDefinitionNameparameter en de unieke id voor uw identiteit voor deObjectIdparameter.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" ObjectId = "<your-principal-identifier>" RoleDefinitionName = "Azure Cosmos DB Control Plane Owner" } New-AzRoleAssignment @parametersBekijk de uitvoer van de opdracht. De uitvoer bevat een unieke id voor de toewijzing in de
RoleAssignmentIdeigenschap.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-c5c5c5c5c5c5Opmerking
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.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
- NoSQL-queries 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 toegang te verlenen voor het lezen, opvragen en beheren van gegevens in Azure Cosmos DB voor NoSQL. 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 NoSQL.
Belangrijk
Voor het verkrijgen van een bestaande roldefinitie voor het gegevensvlak zijn deze besturingsvlakmachtigingen vereist:
Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read
Voor het maken van een nieuwe roldefinitie voor het gegevensvlak zijn deze besturingsvlakmachtigingen vereist:
Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/readMicrosoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write
Voor het maken van een nieuwe roltoewijzing voor het gegevensvlak zijn de volgende besturingsvlakmachtigingen vereist:
Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/readMicrosoft.DocumentDB/databaseAccounts/sqlRoleAssignments/readMicrosoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write
Waarschuwing
Het systeemeigen toegangsbeheer op basis van rollen van Azure Cosmos DB voor NoSQL biedt geen ondersteuning voor de notDataActions eigenschap. Elke actie die niet is opgegeven als toegestaan dataAction , wordt automatisch uitgesloten.
Geef alle roldefinities weer die zijn gekoppeld aan uw Azure Cosmos DB for NoSQL-account met behulp van
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>"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
ideigenschap. 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/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" } ... ]Opmerking
In dit voorbeeld zou de
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.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/readMetadataKan 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 { "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/*" ] } ] }Gebruik vervolgens
az cosmosdb sql role definition createom de roldefinitie te maken. Gebruik de role-definition.json als invoer voor het--bodyargument.az cosmosdb sql role definition create \ --resource-group "<name-of-existing-resource-group>" \ --account-name "<name-of-existing-nosql-account>" \ --body "@role-definition.json"Vermeld nu alle roldefinities die zijn gekoppeld aan uw Azure Cosmos DB for NoSQL-account met behulp van
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>"Controleer de uitvoer van de vorige opdracht. Zoek de roldefinitie die u zojuist hebt gemaakt met de naam Azure Cosmos DB for NOSQL Data Plane Owner. De uitvoer bevat de unieke id van de roldefinitie in de
ideigenschap. 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/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" }Opmerking
In dit voorbeeld zou de
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/bbbbbbbb-1111-2222-3333-cccccccccccczijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.Gebruik
az cosmosdb showom de unieke id voor uw huidige account op te halen.az cosmosdb show \ --resource-group "<name-of-existing-resource-group>" \ --name "<name-of-existing-nosql-account>" \ --query "{id:id}"Bekijk de uitvoer van de vorige opdracht. Noteer de waarde van de
ideigenschap 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-nosql" }Opmerking
In dit voorbeeld zou de
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosqlzijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.Wijs de nieuwe rol toe met behulp van
az cosmosdb sql role assignment create. Gebruik de eerder vastgelegde roldefinitie-id's voor het--role-definition-idargument en de unieke id voor uw identiteit voor het--principal-idargument. Gebruik ten slotte de id van uw account voor het--scopeargument.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"Aanbeveling
Als u op rollen gebaseerd toegangsbeheer op basis van een gegevensvlak probeert te verlenen aan uw eigen identiteit, kunt u deze opdracht gebruiken om de identiteit op te halen:
az ad signed-in-user showZie
az ad signed-in-uservoor meer informatie.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:
/Gebruik
az cosmosdb sql role assignment listdeze indeling om alle roltoewijzingen voor uw Azure Cosmos DB for NoSQL-account weer te geven. Controleer de uitvoer om te bevestigen dat uw roltoewijzing is gemaakt.az cosmosdb sql role assignment list \ --resource-group "<name-of-existing-resource-group>" \ --account-name "<name-of-existing-nosql-account>"
Geef alle roldefinities weer die zijn gekoppeld aan uw Azure Cosmos DB for NoSQL-account met behulp van
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>"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
ideigenschap. 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/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" } ... ]Opmerking
In dit voorbeeld zou de
idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.Maak een nieuw Bicep-bestand om uw roldefinitie te definiëren. Geef het bestand de naam data-plane-role-definition.bicep. Voeg deze
dataActionstoe aan de definitie:Description Microsoft.DocumentDB/databaseAccounts/readMetadataKan 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 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.idAanbeveling
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:
/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 NoSQL-account toe aan deaccountNameparameter.using './data-plane-role-definition.bicep' param accountName = '<name-of-existing-nosql-account>'Implementeer de Bicep-sjabloon met behulp van
az deployment group create.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --parameters data-plane-role-definition.bicepparam \ --template-file data-plane-role-definition.bicepMaak een nieuw Bicep-bestand om uw roltoewijzing te definiëren. Geef het bestand de naam data-plane-role-assignment.bicep.
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.idMaak een nieuw Bicep-parametersbestand met de naam data-plane-role-assignment.
bicepparam. Wijs in dit parameterbestand de naam van uw bestaande Azure Cosmos DB for NoSQL-account toe aan deaccountNameparameter, de eerder vastgelegde roldefinitie-id's aan deroleDefinitionIdparameter en de unieke id voor uw identiteit aan deidentityIdparameter.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>'Aanbeveling
Als u op rollen gebaseerd toegangsbeheer voor het gegevensvlak probeert toe te kennen aan uw eigen identiteit, kunt u de
identityIdparameter weglaten. De Bicep-sjabloon gebruiktdeployer().objectIdvervolgens om de identiteit op te halen van de principal die de sjabloon heeft geïmplementeerd. Ziedeployervoor meer informatie.Implementeer de 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.bicepHerhaal 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. U kunt deze stappen ook herhalen om toepassingen toegang te geven tot resources met behulp van een beheerde identiteit.
Gebruik
Get-AzCosmosDBSqlRoleDefinitiondit om alle roldefinities weer te geven die zijn gekoppeld aan uw Azure Cosmos DB for NoSQL-account.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" AccountName = "<name-of-existing-nosql-account>" } Get-AzCosmosDBSqlRoleDefinition @parametersControleer 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
Ideigenschap. 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-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 :Opmerking
In dit voorbeeld zou de
Idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002zijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld. De id (00000000-0000-0000-0000-000000000002) is echter uniek voor alle roldefinities in uw account.Maak een nieuwe roldefinitie met behulp van
New-AzCosmosDBSqlRoleDefinition. Geef voor deDataActionparameter de gegevensacties op die hier worden vermeld:Description Microsoft.DocumentDB/databaseAccounts/readMetadataKan 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>" 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 @parametersAanbeveling
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:
/Gebruik
Get-AzCosmosDBSqlRoleDefinitiondit om alle roldefinities weer te geven die zijn gekoppeld aan uw Azure Cosmos DB for NoSQL-account.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" AccountName = "<name-of-existing-nosql-account>" } Get-AzCosmosDBSqlRoleDefinition @parametersControleer de uitvoer van de vorige opdracht. Zoek de roldefinitie die u zojuist hebt gemaakt met de naam Azure Cosmos DB for NOSQL Data Plane Owner. De uitvoer bevat de unieke id van de roldefinitie in de
Ideigenschap. 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-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 :Opmerking
In dit voorbeeld zou de
Idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosql/sqlRoleDefinitions/bbbbbbbb-1111-2222-3333-cccccccccccczijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.Gebruik
Get-AzCosmosDBAccountdit om de metagegevens voor uw huidige account op te halen.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" Name = "<name-of-existing-nosql-account>" } Get-AzCosmosDBAccount @parameters | Select -Property IdBekijk de uitvoer van de vorige opdracht. Noteer de waarde van de
Ideigenschap 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-nosqlOpmerking
In dit voorbeeld zou de
Idwaarde/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/msdocs-identity-example/providers/Microsoft.DocumentDB/databaseAccounts/msdocs-identity-example-nosqlzijn. In dit voorbeeld worden fictieve gegevens gebruikt en uw id is anders dan in dit voorbeeld.Gebruik
New-AzCosmosDBSqlRoleAssignmentdit om de nieuwe rol toe te wijzen. Gebruik de eerder vastgelegde roldefinitie-id's voor deRoleDefinitionIdparameter en de unieke id voor uw identiteit voor dePrincipalIdparameter. Gebruik ten slotte de id van uw account voor deScopeparameter.$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 @parametersAanbeveling
Als u op rollen gebaseerd toegangsbeheer op basis van een gegevensvlak probeert te verlenen aan uw eigen identiteit, kunt u deze opdracht gebruiken om de identiteit op te halen:
Get-AzADUser -SignedIn | Format-List ` -Property Id, DisplayName, Mail, UserPrincipalNameZie
Get-AzADUservoor meer informatie.Vermeld alle roltoewijzingen voor uw Azure Cosmos DB for NoSQL-account met behulp van
Get-AzCosmosDBSqlRoleAssignment. Controleer de uitvoer om te bevestigen dat uw roltoewijzing is gemaakt.$parameters = @{ ResourceGroupName = "<name-of-existing-resource-group>" AccountName = "<name-of-existing-nosql-account>" } Get-AzCosmosDBSqlRoleAssignment @parameters
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.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();
}