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.
Azure DocumentDB ondersteunt Microsoft Entra ID naast systeemeigen DocumentDB-verificatie. Elk cluster wordt gemaakt met systeemeigen verificatie ingeschakeld en één ingebouwde gebruiker met beheerdersrechten.
Op rollen gebaseerd toegangsbeheer biedt een gecentraliseerd mechanisme voor het toewijzen en afdwingen van machtigingen via Microsoft Entra ID, zodat alleen geautoriseerde identiteiten bewerkingen op uw clusters kunnen uitvoeren. Deze aanpak vereenvoudigt governance, ondersteunt beginselen met minimale bevoegdheden en maakt controle eenvoudig. Organisaties kunnen de operationele integriteit en naleving behouden naarmate de implementaties toenemen. Het beheren van toegang in Azure DocumentDB omvat twee verschillende niveaus:
- Op rollen gebaseerde toegang van Azure voor het beheren van het cluster als een Azure-resource (zoals het lezen van metagegevens, het beheren van firewallregels en het configureren van privé-eindpunten)
- DocumentDB-toegang voor het lezen en schrijven van gegevens in databases en verzamelingen in het cluster.
Schakel Microsoft Entra ID in om Microsoft Entra-principals (gebruikers, service-principals of beheerde identiteiten) toe te staan om te authenticeren bij het cluster. Microsoft Entra ID-verificatie wordt geïmplementeerd met behulp van OpenID Connect (OIDC). Clients presenteren een door Entra uitgegeven OIDC-toegangstoken aan het MongoDB-stuurprogramma. Voor een cluster moet systeemeigen verificatie zijn ingeschakeld; de ondersteunde configuraties zijn alleen systeemeigen verificatie of Microsoft Entra ID-verificatie of systeemeigen en Microsoft Entra ID-verificatie.
Opmerking
U kunt verificatiemethoden op elk gewenst moment na het inrichten in- of wijzigen in een cluster. Voor het wijzigen van verificatiemethoden is niet opnieuw opstarten van het cluster vereist en is dit niet storend. Wanneer een cluster wordt gemaakt, moet systeemeigen DocumentDB-verificatie zijn ingeschakeld. U kunt systeemeigen verificatie uitschakelen nadat het cluster is ingericht.
Voordelen van het gebruik van Microsoft Entra ID voor verificatie zijn:
- Uniforme identiteit en aanmelding bij Azure-services.
- Gecentraliseerd beheer van referenties, wachtwoordbeleid en rotatie.
- Ondersteuning voor methoden voor wachtwoordloze en meervoudige verificatie van Microsoft Entra ID.
- Verificatie op basis van tokens voor toepassingen, waardoor opgeslagen wachtwoorden worden geëlimineerd.
Wanneer Microsoft Entra ID-verificatie is ingeschakeld, kunt u een of meer Microsoft Entra-principals registreren als beheerder- of niet-beheerdergebruikers op de cluster. Geregistreerde principals worden Azure-resources onder Microsoft.DocumentDB/mongoClusters/users en worden gerepliceerd naar de database; het toewijzen van deze principals aan MongoDB-databaserollen verleent de bijbehorende databasebevoegdheden. Deze vorm van verificatie ondersteunt meerdere principal-typen, waaronder; menselijke gebruikers, service-principals (apps), door de gebruiker toegewezen en door het systeem toegewezen beheerde identiteiten.
Opmerking
U kunt meerdere Microsoft Entra ID-identiteiten en typen identiteiten tegelijk configureren als beheerders voor een cluster. Identiteitstypen voor Microsoft Entra-id's omvatten, maar zijn niet beperkt tot:
- Menselijke identiteiten
- Door de gebruiker toegewezen beheerde identiteiten
- Door het systeem toegewezen beheerde identiteiten
- Workload-identiteiten
Alle identiteitstypen kunnen tegelijkertijd beheerders zijn.
Gebruikers met beheerdersrechten hebben volledige bevoegdheden voor het beheren van het cluster en de bijbehorende gegevens. Niet-beheerders kunnen worden toegevoegd voor lopende productietaken waarvoor geen beheerdersbevoegdheden zijn vereist. Niet-beheerders hebben doorgaans beperkte rollen, zoals alleen-lezen of lees-schrijftoegang tot specifieke databases, maar beschikken niet over de mogelijkheid om beheeracties voor het hele cluster uit te voeren.
Bekijk de volgende overwegingen voordat u deze functie gebruikt:
- Verificatiemethoden op het primaire cluster en op het replicacluster worden onafhankelijk beheerd.
- Microsoft Entra-principals zijn persistent in de metagegevens van het cluster. Als een principal wordt verwijderd uit Microsoft Entra ID, blijft de bijbehorende clustergebruiker behouden, maar kan deze geen nieuwe tokens meer ontvangen. Bestaande tokens blijven geldig totdat ze verlopen (meestal tot 90 minuten na de uitgifte van het token).
- Als u de toegang onmiddellijk wilt intrekken, verwijdert u de principal uit het cluster (verwijdert u de
users/<principal-id>resource) en verwijdert u alle bijbehorende databaserollen. Databasebeheerders moeten de overdracht van eigendom afhandelen of opschonen voor verwijderde principals.
Vereiste voorwaarden
Een Azure-abonnement
- Als u geen Azure-abonnement hebt, maakt u een gratis account
Een bestaand Azure DocumentDB-cluster
- Als u geen cluster hebt, maakt u een nieuw cluster
- 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.
- Terraform 1.2.0 of hoger.
Op rollen gebaseerd toegangsbeheer van Azure beheren
Op rollen gebaseerd toegangsbeheer van Azure verwijst naar de mogelijkheid om resources voor een Azure-service te beheren zonder gegevens te beheren. Op rollen gebaseerde toegang voor Azure DocumentDB-clusters kan bijvoorbeeld de volgende mogelijkheden omvatten:
- Alle account- en resourcemetagegevens lezen
- Verbindingsreeksen lezen en opnieuw genereren
- Databases en verzamelingen beheren
- Accounteigenschappen wijzigen
Azure DocumentDB ondersteunt op rollen gebaseerd toegangsbeheer van Azure voor mongoCluster het resourcetype. De volgende acties voor mongoCluster het resourcetype zijn beschikbaar in op rollen gebaseerd toegangsbeheer van Azure voor afzonderlijke toewijzingen en het maken van aangepaste op rollen gebaseerd toegangsbeheer:
| Description | |
|---|---|
Microsoft.DocumentDB/mongoClusters/read |
U leest een mongoCluster-resource of geeft een lijst van alle mongoCluster-resources weer. |
Microsoft.DocumentDB/mongoClusters/write |
De eigenschappen of tags van de opgegeven mongoCluster resource maken of bijwerken. |
Microsoft.DocumentDB/mongoClusters/delete |
Hiermee verwijdert u de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/PrivateEndpointConnectionsApproval/action |
De privé-eindpuntverbinding van mongoCluster resource beheren |
Microsoft.DocumentDB/mongoClusters/listConnectionStrings/action |
Verbindingsreeksen voor een bepaalde mongoCluster resource weergeven |
Microsoft.DocumentDB/mongoClusters/firewallRules/read |
Leest een firewallregel of vermeldt alle firewallregels voor de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/firewallRules/write |
Een firewallregel voor een opgegeven mongoCluster resource maken of bijwerken. |
Microsoft.DocumentDB/mongoClusters/firewallRules/delete |
Hiermee verwijdert u een bestaande firewallregel voor de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/read |
Leest een proxy voor een privé-eindpuntverbinding voor de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/write |
Een privé-eindpuntverbindingsproxy maken of bijwerken voor een opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/delete |
Hiermee verwijdert u een bestaande proxy voor een privé-eindpuntverbinding voor de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/validate/action |
Valideert de proxy voor de privé-eindpuntverbinding voor de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/read |
Hiermee wordt een privé-eindpuntverbinding gelezen of worden alle privé-eindpuntverbindingen voor de opgegeven mongoCluster resource weergegeven. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/write |
Een privé-eindpuntverbinding maken of bijwerken voor een opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/delete |
Hiermee verwijdert u een bestaande privé-eindpuntverbinding voor de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/privateLinkResources/read |
Leest een private link-resource of geeft een lijst weer van alle private link-resources voor de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/users/read |
Leest een gebruiker of geeft een lijst weer van alle gebruikers voor de opgegeven mongoCluster resource. |
Microsoft.DocumentDB/mongoClusters/users/write |
Een gebruiker voor een opgegeven mongoCluster resource maken of bijwerken. |
Microsoft.DocumentDB/mongoClusters/users/delete |
Hiermee verwijdert u een bestaande gebruiker voor de opgegeven mongoCluster resource. |
Open een nieuwe terminal.
Meld u aan bij Azure CLI.
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 DocumentDB RBAC Owner", "IsCustom": true, "Description": "Can perform all Azure role-based access control actions for Azure DocumentDB clusters.", "Actions": [ "Microsoft.DocumentDb/mongoClusters/*" ], "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 Azure role-based access control actions for Azure DocumentDB clusters.", "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 DocumentDB RBAC 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.
Open een nieuwe terminal.
Meld u aan bij Azure CLI.
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/mongoClusters/*Hiermee schakelt u alle mogelijke acties in. metadata description = 'Create RBAC definition for Azure role-based access control access to Azure DocumentDB.' @description('Name of the role definition.') param roleDefinitionName string = 'Azure DocumentDB RBAC Owner' @description('Description of the role definition.') param roleDefinitionDescription string = 'Can perform all Azure role-based access control actions for Azure DocumentDB clusters.' 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/mongoClusters/*' ] } ] 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 Azure role-based access control access to Azure DocumentDB.' @description('Id of the role definition to assign to the targeted principal in the context of the cluster.') param roleDefinitionId string @description('Id of the identity/principal to assign this role in the context of the cluster.') 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.bicep
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 .
Selecteer in het deelvenster voor de resourcegroep toegangsbeheer (IAM) in het servicemenu.
Selecteer Toevoegen in het deelvenster Toegangsbeheer (IAM). Selecteer vervolgens Aangepaste rol toevoegen.
Configureer in het deelvenster Basisbeginselen de volgende opties en selecteer vervolgens Volgende:
Waarde Aangepaste rolnaam Azure DocumentDB RBAC OwnerBeschrijving Can perform all Azure role-based access control actions for Azure DocumentDB clusters.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/mongoClusters .Selecteer in het machtigingen-dialoogvenster alle acties voor
Microsoft.DocumentDB/mongoClusters. 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 en selecteer in het deelvenster
Azure DocumentDBde rol Azure DocumentDB RBAC-eigenaar die eerder in deze handleiding is gemaakt. 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 DocumentDB-clusters en gebruik vervolgens de optie Selecteren om uw keuze te bevestigen.
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.
Open een nieuwe terminal.
Meld u aan bij Azure CLI.
Controleer uw Azure-doelabonnement.
az account showMaak een nieuw Terraform-bestand om uw roldefinitie te definiëren. Noem het bestand control-plane-role-definition.
tf. Voeg dezeactionstoe aan de definitie:Description Microsoft.DocumentDb/mongoClusters/*Hiermee schakelt u alle mogelijke acties in. variable "role_definition_name" { type = string description = "Name of the role definition." default = "Azure DocumentDB RBAC Owner" } variable "role_definition_description" { type = string description = "Description of the role definition." default = "Can perform all Azure role-based access control actions for Azure DocumentDB clusters." } terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } data "azurerm_client_config" "current" {} data "azurerm_resource_group" "existing" { name = "<name-of-existing-resource-group>" } resource "azurerm_role_definition" "control_plane" { name = var.role_definition_name scope = data.azurerm_resource_group.existing.id description = var.role_definition_description permissions { actions = [ "Microsoft.DocumentDb/mongoClusters/*" ] } assignable_scopes = [ data.azurerm_resource_group.existing.id ] } output "definition_id" { value = azurerm_role_definition.control_plane.id }Initialiseer de Terraform-implementatie.
terraform init --upgradeMaak een uitvoeringsplan voor de roldefinitie en sla het op in een bestand met de naam role-definition.tfplan.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --out "role-definition.tfplan"Pas het uitvoeringsplan toe om de roldefinitie te implementeren in Azure.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "role-definition.tfplan"Controleer de uitvoer van de implementatie. De uitvoer bevat de unieke id van de roldefinitie in de
definition_ideigenschap. Noteer deze waarde omdat deze is vereist voor gebruik in de toewijzingsstap verderop in deze handleiding.Maak een nieuw Terraform-bestand om uw roltoewijzing te definiëren. Geef het bestand control-plane-role-assignment
tfde naam.variable "role_definition_id" { type = string description = "Id of the role definition to assign to the targeted principal in the context of the cluster." } variable "identity_id" { type = string description = "Id of the identity/principal to assign this role in the context of the cluster." } terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } data "azurerm_resource_group" "existing" { name = "<name-of-existing-resource-group>" } resource "azurerm_role_assignment" "control_plane" { scope = data.azurerm_resource_group.existing.id role_definition_id = var.role_definition_id principal_id = var.identity_id }Maak een nieuw Terraform-variabelenbestand met de naam control-plane-role-assignment.tfvars. In dit variabelenbestand; wijs de eerder vastgelegde roldefinitie-id's toe aan de
role_definition_idvariabele en de unieke id voor uw identiteit aan deidentity_idvariabele.role_definition_id = "<id-of-new-role-definition>" identity_id = "<id-of-existing-identity>"Initialiseer en pas deze Terraform-configuratie toe.
terraform init --upgradeARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --var-file="control-plane-role-assignment.tfvars" --out "role-assignment.tfplan"ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "role-assignment.tfplan"
Microsoft Entra ID-verificatie inschakelen
Wanneer u een Azure DocumentDB-cluster maakt, is het cluster geconfigureerd om standaard alleen systeemeigen verificatie te gebruiken. Als u verificatie wilt inschakelen met behulp van Microsoft Entra ID, schakelt u de verificatiemethode Microsoft Entra ID in en voegt u Microsoft Entra ID-identiteiten toe aan het cluster.
Verkrijg de gegevens voor het momenteel aangemelde account met behulp van
az ad signed-in-user.az ad signed-in-user showMet de opdracht wordt een JSON-antwoord uitgevoerd dat verschillende velden bevat.
{ "@odata.context": "<https://graph.microsoft.com/v1.0/$metadata#users/$entity>", "businessPhones": [], "displayName": "Kai Carter", "givenName": "Kai", "id": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb", "jobTitle": "Senior Sales Representative", "mail": "<kai@adventure-works.com>", "mobilePhone": null, "officeLocation": "Redmond", "preferredLanguage": null, "surname": "Carter", "userPrincipalName": "<kai@adventure-works.com>" }Aanbeveling
Noteer de waarde van het
idveld. In dit voorbeeld zou dataaaaaaaa-0000-1111-2222-bbbbbbbbbbbbzijn. Deze waarde kan vervolgens worden gebruikt in verschillende scripts om uw huidige op rollen gebaseerd toegangsbeheermachtigingen voor Azure-resources te verlenen. Als u in plaats daarvan een beheerde identiteit gebruikt, kunt u deidvoor die beheerde identiteit verkrijgen met behulp van deaz identity showopdracht.Schakel Microsoft Entra ID-verificatie in op het cluster door de clusterresource bij te werken om
MicrosoftEntraIDop te nemen in deauthConfig.allowedModesarray.az resource patch \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --properties '{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}' \ --latest-include-previewOpmerking
Vervang
<resource-group>en<cluster-name>door uw eigen waarden.Controleer of de wijziging is toegepast door de
authConfigeigenschap op het cluster te lezen met behulp vanaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewOpmerking
De uitvoer moet de
allowedModeslijst bevatten. Als Microsoft Entra-id is ingeschakeld, bevat de matrix zowelNativeAuthalsMicrosoftEntraID.
(Optioneel) Haal de unieke identificatie op voor de Microsoft Entra-principal (hoofdgebruiker) die je wilt registreren op het cluster. U kunt deze verkrijgen met de Azure CLI met behulp van een van de volgende opdrachten:
Huidige aanmeldingsidentiteit
az ad signed-in-user showEen andere menselijke identiteit met een vriendelijke naam
az ad user show \ --id "<user-alias-and-domain>"Service-principal met app-identificatie
az ad sp show \ --id "<application-id>"Beheerde identiteit met behulp van resourcegroep en naam
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Maak een kleine Bicep-sjabloon waarmee het cluster
authConfigwordt bijgewerkt om Microsoft Entra-id op te nemen (opslaan alsenable-entra-id.bicep):param clusterName string param location string = resourceGroup().location resource cluster 'Microsoft.DocumentDB/mongoClusters@2025-09-01' = { name: clusterName location: location properties: { authConfig: { allowedModes: [ 'MicrosoftEntraID' 'NativeAuth' ] } } }Implementeer de sjabloon om het cluster bij te werken:
az deployment group create \ --resource-group "<resource-group>" \ --template-file enable-entra-id.bicep \ --parameters clusterName="<cluster-name>"Controleer de
authConfigeigenschap op het cluster met behulp vanaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewOpmerking
De uitvoer moet de
allowedModeslijst bevatten. Als Microsoft Entra-id is ingeschakeld, bevat de matrix zowelNativeAuthalsMicrosoftEntraID.
Zoek en selecteer in het deelvenster Start van Azure Portal de optie Microsoft Entra-id .
Aanbeveling
Als deze optie niet wordt weergegeven, selecteert u Meer services en zoekt u naar Microsoft Entra-id met behulp van de zoekterm Entra.
Selecteer in het deelvenster Overzicht voor de Microsoft Entra ID-tenant Gebruikers in de sectie Beheren van het servicemenu.
Selecteer in de lijst met gebruikers de identiteit (gebruiker) waarover u meer informatie wilt krijgen.
Opmerking
Deze schermopname illustreert een voorbeeldgebruiker met de naam 'Kai Carter' met een principal van
kai@adventure-works.com.Bekijk in het detailvenster voor de specifieke gebruiker de waarde van de eigenschap Object-id .
Aanbeveling
Noteer de waarde van de eigenschap Object-id . In dit voorbeeld zou dat
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbbzijn. Deze waarde kan vervolgens worden gebruikt in verschillende scripts om uw huidige op rollen gebaseerd toegangsbeheermachtigingen voor Azure-resources te verlenen. De stappen zijn vergelijkbaar als u een beheerde identiteit gebruikt.Navigeer naar de bestaande Azure DocumentDB-clusterresource.
Selecteer Verificatie in het clustermenu onder Instellingen.
Selecteer in de sectie Verificatiemethodensysteemeigen DocumentDB en Microsoft Entra ID om Microsoft Entra ID-verificatie in te schakelen naast systeemeigen verificatie.
Selecteer Opslaan om de wijziging te behouden.
In de sectie Verificatiemethoden moeten nu zowel NativeAuth als MicrosoftEntraID worden vermeld als ingeschakelde methoden.
(Optioneel) Haal de unieke identificatie op voor de Microsoft Entra-principal (hoofdgebruiker) die je wilt registreren op het cluster. U kunt deze verkrijgen met de Azure CLI met behulp van een van de volgende opdrachten:
Huidige aanmeldingsidentiteit
az ad signed-in-user showEen andere menselijke identiteit met een vriendelijke naam
az ad user show \ --id "<user-alias-and-domain>"Service-principal met app-identificatie
az ad sp show \ --id "<application-id>"Beheerde identiteit met behulp van resourcegroep en naam
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Maak een Terraform-configuratiebestand om Microsoft Entra ID-verificatie in te schakelen op uw bestaande cluster. Sla het bestand op als enable-entra-id.
tf:variable "cluster_name" { type = string description = "Name of the existing cluster" } variable "resource_group_name" { type = string description = "Name of the existing resource group" } terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } data "azurerm_resource_group" "existing" { name = var.resource_group_name } data "azurerm_mongo_cluster" "existing" { name = var.cluster_name resource_group_name = data.azurerm_resource_group.existing.name } resource "azurerm_mongo_cluster" "enable_entra" { name = data.azurerm_mongo_cluster.existing.name resource_group_name = data.azurerm_resource_group.existing.name location = data.azurerm_mongo_cluster.existing.location administrator_username = data.azurerm_mongo_cluster.existing.administrator_username administrator_password = data.azurerm_mongo_cluster.existing.administrator_password shard_count = data.azurerm_mongo_cluster.existing.shard_count compute_tier = data.azurerm_mongo_cluster.existing.compute_tier high_availability_mode = data.azurerm_mongo_cluster.existing.high_availability_mode storage_size_in_gb = data.azurerm_mongo_cluster.existing.storage_size_in_gb version = data.azurerm_mongo_cluster.existing.version # Enable both Microsoft Entra ID and Native authentication authentication_enabled = true }Aanbeveling
Zie de providerdocumentatie in de Terraform Registry voor meer informatie over opties voor het gebruik van de
azurerm_mongo_clusterresource.Maak een variabelenbestand met de naam enable-entra-id.tfvars met de clustergegevens:
cluster_name = "<cluster-name>" resource_group_name = "<resource-group>"Initialiseer en pas de Terraform-configuratie toe om Microsoft Entra ID-verificatie in te schakelen:
terraform init --upgradeARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --var-file="enable-entra-id.tfvars" --out "enable-entra.tfplan"ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "enable-entra.tfplan"Controleer de
authConfigeigenschap op het cluster met behulp vanaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewOpmerking
De uitvoer moet de
allowedModeslijst bevatten. Als Microsoft Entra-id is ingeschakeld, bevat de matrix zowelNativeAuthalsMicrosoftEntraID.
Beheer Microsoft Entra ID-identiteiten en systeemeigen gebruikers van DocumentDB
Wanneer Microsoft Entra ID-verificatie is ingeschakeld op een Azure DocumetnDB-cluster, kunt u een of meer Microsoft Entra ID-principals toevoegen als beheerdersgebruikers aan dat cluster. De Microsoft Entra ID-beheerder kan een Microsoft Entra ID-gebruiker, een service-principal of een beheerde identiteit zijn. Meerdere Microsoft Entra ID-beheerders kunnen op elk gewenst moment worden geconfigureerd.
Administratieve Entra ID-gebruikers worden aangemaakt als Azure-entiteiten onder Microsoft.DocumentDB/mongoClusters/users en gerepliceerd naar de database.
Bovendien kunnen een of meer niet-beheerders van Microsoft Entra ID-gebruikers op elk gewenst moment aan een cluster worden toegevoegd zodra Microsoft Entra ID-verificatie is ingeschakeld. Niet-beheerders worden vaak gebruikt voor lopende productietaken waarvoor geen beheerdersbevoegdheden zijn vereist.
Voor Azure DocumentDB wordt deze toegang verleend door Microsoft Entra-principals in het cluster te registreren en deze toe te kennen aan MongoDB-databaserollen (bijvoorbeeld readWrite in een database of root in de admin database). Geregistreerde principals worden gemaakt als Azure-resources van het type Microsoft.DocumentDB/mongoClusters/users waarvan de namen de vorm <cluster-name>/users/<principal-id>aannemen.
Gebruikers met beheerdersrechten hebben volledige bevoegdheden voor het beheren van het cluster en de bijbehorende gegevens, inclusief volledige mogelijkheden voor gebruikersbeheer. Niet-beheerders kunnen machtigingen voor lezen/schrijven of alleen-lezen voor het cluster krijgen via specifieke MongoDB-databaserollen. De rollen readWriteAnyDatabase en clusterAdmin verlenen samen volledige lees-/schrijfmachtigingen voor het cluster, inclusief bevoegdheden voor databasebeheer en databasebewerkingen. De rol readAnyDatabase wordt gebruikt om alleen-lezenmachtigingen voor het cluster te verlenen. U kunt de rollen readWriteAnyDatabase en clusterAdmin niet afzonderlijk toewijzen. Ze moeten samen worden verleend voor volledige lees-/schrijftoegang.
Niet-beheerders (secundaire) gebruikers en beveiligingsprinciplen krijgen beperkte gebruikersbeheermachtigingen voor het cluster, zoals beschreven in de volgende tabel:
| Beveiligingsprovider | Rol | CreateUser | DeleteUser | UpdateUser | Gebruikerslijst |
|---|---|---|---|---|---|
| Microsoft Entra ID | Lezen en schrijven (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | ❌ | ✔️ |
| Microsoft Entra ID | Alleen-lezen (readAnyDatabase) | ❌ | ❌ | ❌ | ✔️ |
| Inheemse DocumentDB | Lezen en schrijven (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | Alleen om hun eigen wachtwoord te wijzigen | ✔️ |
| Inheemse DocumentDB | Alleen-lezen (readAnyDatabase) | ❌ | ❌ | Alleen om hun eigen wachtwoord te wijzigen | ✔️ |
Haal de unieke id (object-id) op van de Microsoft Entra-principal waaraan u toegang wilt verlenen met behulp van een van de volgende opdrachten:
Huidige aanmeldingsidentiteit
az ad signed-in-user showEen andere menselijke identiteit met een vriendelijke naam
az ad user show \ --id "<user-alias-and-domain>"Service-principal met app-identificatie
az ad sp show \ --id "<application-id>"Beheerde identiteit met behulp van resourcegroep en naam
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Registreer de principal in het cluster en wijs deze toe aan MongoDB-databaserollen. In het volgende voorbeeld wordt een principal geregistreerd als gebruiker
readWritein desalesdatabase:az resource create \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --location "<cluster-region>" \ --properties '{"identityProvider":{"type":"MicrosoftEntraID","properties":{"principalType":"User"}},"roles":[{"db":"sales","role":"readWrite"}]}' \ --latest-include-preview- Vervang
principalTypedoorservicePrincipalvoor app-/service-principals ofManagedIdentityvoor beheerde identiteiten. - Als u beheerdersbevoegdheden wilt verlenen, gebruikt u
{"db":"admin","role":"root"}in derolesarray.
- Vervang
Alle geregistreerde principals en hun toegewezen rollen weergeven (weergave op clusterniveau):
az rest \ --method "GET" \ --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users?api-version=2025-09-01"- Het antwoord bevat een matrix met gebruikersbronnen, elk met
identityProvidermetagegevens en eenrolesmatrix met toegewezen databaserollen.
- Het antwoord bevat een matrix met gebruikersbronnen, elk met
Details voor een specifieke geregistreerde principal ophalen (vervangen
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewEen geregistreerde Principal verwijderen (toegang tot dataplane intrekken):
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Maak een Bicep-bestand (bijvoorbeeld
register-principal.bicep) om de principal te registreren en database rollen toe te wijzen.param clusterName string param principalId string param location string = resourceGroup().location param principalType string = 'User' param roles array = [ { db: 'sales' role: 'readWrite' } ] resource user 'Microsoft.DocumentDB/mongoClusters/users@2025-09-01' = { name: '${clusterName}/users/${principalId}' location: location properties: { identityProvider: { type: 'Microsoft.EntraID' properties: { principalType: principalType } } roles: roles } }Implementeer de Bicep-sjabloon om de principal te registreren:
az deployment group create \ --resource-group "<resource-group>" \ --template-file register-principal.bicep \ --parameters clusterName="<cluster-name>" principalId="<principal-id>"Geef alle geregistreerde principals voor het cluster weer met behulp van de REST API (handig na bicep-implementatie):
az rest \ --method GET \ --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users?api-version=2025-09-01"Details ophalen voor een specifieke geregistreerde principal die door Bicep is aangemaakt (vervang
<principal-id>).az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewVerwijder de principal door de resource te verwijderen (of implementeer een sjabloon zonder de gebruikersresource):
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Open het Azure DocumentDB-doelcluster in Azure Portal.
Selecteer bij Instellingen de optie Verificatie.
In de sectie Verificatie van Microsoft Entra-id's worden in de portal de geregistreerde Microsoft Entra-principals per object-id vermeld. Gebruik deze weergave om het volgende te doen:
- Scan de lijst op verwachte object-id's.
- Inspecteer de details voor een enkele principal door een vermelde entry te selecteren (of gebruik de zoekfunctie in de portal).
- Gebruik de actie Verwijderen naast een vermelding om de toegang tot de gegevensvlak van die principal onmiddellijk in te trekken.
Als u vriendelijke namen wilt ophalen voor object-ID's die worden weergegeven in de portallijst, gebruikt u de pagina Gebruikers in de sectie van Microsoft Entra ID. Zoek vervolgens op object-ID of vriendelijke naam.
Haal de unieke id (object-id) op van de Microsoft Entra-principal waaraan u toegang wilt verlenen met behulp van een van de volgende opdrachten:
Huidige aanmeldingsidentiteit
az ad signed-in-user showEen andere menselijke identiteit met een vriendelijke naam
az ad user show \ --id "<user-alias-and-domain>"Service-principal met app-identificatie
az ad sp show \ --id "<application-id>"Beheerde identiteit met behulp van resourcegroep en naam
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Maak een Terraform-bestand (bijvoorbeeld
register-principal.tf) om de hoofdgebruiker te registreren en database rollen toe te wijzen met behulp van de AzAPI-provider.variable "cluster_name" { type = string description = "Name of the existing cluster" } variable "resource_group_name" { type = string description = "Name of the existing resource group" } variable "principal_id" { type = string description = "Object ID of the Microsoft Entra principal" } variable "principal_type" { type = string description = "Type of principal: User, ServicePrincipal, or ManagedIdentity" default = "User" } variable "roles" { type = list(object({ db = string role = string })) description = "Database roles to assign" default = [ { db = "sales" role = "readWrite" } ] } terraform { required_providers { azapi = { source = "azure/azapi" version = "~> 2.0" } azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } } } provider "azurerm" { features {} } provider "azapi" {} data "azurerm_resource_group" "existing" { name = var.resource_group_name } data "azurerm_mongo_cluster" "existing" { name = var.cluster_name resource_group_name = var.resource_group_name } resource "azapi_resource" "mongo_cluster_user" { type = "Microsoft.DocumentDB/mongoClusters/users@2025-09-01" name = var.principal_id parent_id = data.azurerm_mongo_cluster.existing.id location = data.azurerm_resource_group.existing.location body = { properties = { identityProvider = { type = "MicrosoftEntraID" properties = { principalType = var.principal_type } } roles = var.roles } } }Aanbeveling
Zie de documentatie van de Azure AzAPI-provider voor meer informatie over de AzAPI-provider.
- Vervang
principalTypedoorservicePrincipalvoor app-/service-principals ofManagedIdentityvoor beheerde identiteiten. - Als u beheerdersbevoegdheden wilt verlenen, gebruikt u
{"db":"admin","role":"root"}in derolesarray.
- Vervang
Maak een variabelenbestand met de naam
register-principal.tfvars:cluster_name = "<cluster-name>" resource_group_name = "<resource-group>" principal_id = "<principal-id>" principal_type = "User" roles = [ { db = "sales" role = "readWrite" } ]Initialiseer en pas de Terraform-configuratie toe om de principal te registreren:
terraform init --upgradeARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --var-file="register-principal.tfvars" --out "register-principal.tfplan"ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "register-principal.tfplan"Geef alle geregistreerde principals voor het cluster weer met behulp van de REST API (handig na terraform-implementatie):
az rest \ --method GET \ --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.DocumentDB/mongoClusters/<cluster-name>/users?api-version=2025-09-01"Details ophalen voor een specifieke geregistreerde principal die is gemaakt door Terraform (vervangen
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewVerwijder de principal door de Terraform-resource te vernietigen:
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform destroy --var-file="register-principal.tfvars"
Opmerking
Er wordt een Azure DocumentDB-cluster gemaakt met één ingebouwde systeemeigen DocumentDB-gebruiker met beheerdersrechten. U kunt meer systeemeigen DocumentDB-gebruikers met beheerdersrechten toevoegen nadat het inrichten van clusters is voltooid. Gebruikers met beheerdersrechten voor Microsoft Entra ID die aan het cluster zijn toegevoegd, komen bovenop de systeemeigen DocumentDB-gebruikers met beheerdersrechten die op hetzelfde cluster zijn gedefinieerd. Alle beheeridentiteiten van Microsoft Entra-id's worden gerepliceerd naar de database.
Niet-administratieve Microsoft Entra ID-identiteiten worden in de database aangemaakt. Wanneer u niet-administratieve gebruikers in de database vermeldt, bevat de lijst alle administratieve en niet-administratieve Microsoft Entra ID-identiteiten en alle secundaire (niet-administratieve) systeemeigen DocumentDB-gebruikers.
Clusterreferenties ophalen
U kunt verbinding maken met het cluster met behulp van een verbindings-URI of een aangepast instellingenobject van het stuurprogramma voor uw voorkeurstaal. Bij beide opties moet het schema worden ingesteld op mongodb+srv om verbinding te maken met het cluster. De host bevindt zich op het *.global.mongocluster.cosmos.azure.com- of *.mongocluster.cosmos.azure.com-domein, afhankelijk van het gebruik van het huidige cluster of de globale lees-/schrijfpunt. Het +srv schema en de *.global.* host zorgen ervoor dat uw client dynamisch is verbonden met het juiste beschrijfbare cluster in een configuratie met meerdere clusters, zelfs als er een regiowisselingsbewerking plaatsvindt. In een configuratie met één cluster kunt u afzonderlijke verbindingsreeksen gebruiken.
De tls instelling moet ook zijn ingeschakeld. De overige aanbevolen instellingen zijn best practice-configuratie-instellingen.
| Optie | Waarde |
|---|---|
scheme |
mongodb+srv |
host |
<cluster-name>.global.mongocluster.cosmos.azure.com of <cluster-name>.mongocluster.cosmos.azure.com |
tls |
true |
authMechanism |
MONGODB-OIDC |
retrywrites |
false |
maxIdleTimeMS |
120000 |
Belangrijk
Gebruik Azure Portal om de verbindingsreeks op te halen.
Navigeer naar het Azure DocumentDB-cluster.
Selecteer de navigatiemenuoptie Verbindingsreeksen .
Kopieer of noteer de waarde uit het veld Verbindingsreeks .
Aanbeveling
Microsoft Entra ID-verbindingsreeksen bevinden zich in de sectie Microsoft Entra-id .
Verbinding maken met behulp van Microsoft Entra ID in MongoDB Shell
Gebruik een clientapparaat waarop MongoDB Shell is geïnstalleerd om verbinding te maken met uw Azure DocumentDB-cluster met behulp van een Microsoft Entra ID-identiteit.
Open een terminal op een client waarop MongoDB-shell is geïnstalleerd.
Haal de naam op van uw Azure DocumentDB-cluster en de client-id voor de doelidentiteit.
Maak verbinding met behulp van de volgende verbindingsreeks:
mongosh "mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000"
Verbinding maken met behulp van Microsoft Entra ID in Visual Studio Code
Gebruik Visual Studio Code met de DocumentDB-extensie om verbinding te maken met uw Azure DocumentDB-cluster met behulp van een Microsoft Entra ID-identiteit.
Belangrijk
Wanneer u zich verifieert bij een Azure DocumentDB-cluster met behulp van Microsoft Entra ID in Visual Studio Code met de DocumentDB-extensie, shell wordt de functionaliteit niet ondersteund. Als u MongoDB-shell wilt gebruiken met Microsoft Entra ID-verificatie, gebruikt u MongoDB Shell rechtstreeks op een clientcomputer.
Open Visual Studio Code.
Navigeer door de DocumentDB-extensie in de zijbalk.
Selecteer + Nieuwe verbinding...in de sectie Verbindingen.
Selecteer verbindingsreeks in het dialoogvenster verbindingstype.
Gebruik de volgende verbindingsreeks:
mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000Wacht op de automatische vraag om Microsoft Entra ID-verificatie te gebruiken. Voer de juiste inloggegevens in voor uw soort identiteit.
Opmerking
Als u zich bijvoorbeeld aanmeldt met uw eigen identiteit (een menselijke identiteit), gebruikt u de ervaring voor verificatie zonder wachtwoord.
Wacht tot de verbinding is voltooid. Er wordt vervolgens een nieuwe DocumentDB-vermelding toegevoegd aan de sectie Verbindingen voor het cluster.
Verbinding maken met behulp van Microsoft Entra-id in MongoDB Compass
Maak rechtstreeks verbinding met uw Azure DocumentDB-cluster met behulp van een Microsoft Entra ID-identiteit met de MongoDB Compass-toepassing .
Start de MongoDB Compass-toepassing.
Selecteer + in het menu Verbindingen om een nieuwe verbinding toe te voegen.
Schakel de instelling Verbindingsreeks bewerken in om in te schakelen in het dialoogvenster Nieuwe verbinding .
Voer de volgende verbindingsreeks in het invoervak van de URI in.
mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:https://ossrdbms-aad.database.windows.netOpen nu het dialoogvenster Geavanceerde verbindingsopties .
Selecteer in de sectie
mongodb+srvvoor het verbindingsreeksschema.Navigeer vervolgens naar de sectie Verificatie .
Zorg ervoor dat de OIDC-optie is geselecteerd.
Navigeer nu naar de sectie OIDC-opties .
Zorg ervoor dat de optie Vertrouwd doeleindpunt ook is geselecteerd.
Selecteer Opslaan en verbinden.
Secundaire DocumentDB-identiteiten beheren (niet-beheerder) Microsoft Entra ID-identiteiten
Meld u aan bij het cluster met een beheeridentiteit van Microsoft Entra ID om beheerbewerkingen uit te voeren voor niet-beheerdersidentiteiten van Microsoft Entra ID.
Opmerking
Alle beheercommando's voor niet-beheerders worden ondersteund voor SecurityPrincipal en user principaaltypen.
Meld u aan bij het cluster met behulp van een Microsoft Entra ID-identiteit met beheerdersrechten en met behulp van een hulpprogramma zoals MongoDB Shell.
Voeg een niet-beheerdersidentiteit van Microsoft Entra ID toe met lees-/schrijfmachtigingen voor het cluster met behulp van de
createUseropdracht:db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Voeg een niet-administratieve Microsoft Entra ID-identiteit toe met alleen-lezenmachtigingen voor het cluster met
createUseren een andere set rollen.db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "readAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Verwijder een niet-beheerdersidentiteit van Microsoft Entra ID uit het cluster met de
dropUseropdracht.db.runCommand( { dropUser: "<entra-id-unique-identifier>" } )Geef alle Microsoft Entra-id en systeemeigen DocumentDB-gebruikers op het cluster weer met behulp van
userInfo.db.runCommand( { usersInfo: 1 } )Opmerking
Alle Microsoft Entra ID en systeemeigen DocumentDB-beheerders worden gerepliceerd naar de database. Vanwege deze replicatie bevat de lijst met gebruikers alle beheerders- en niet-beheerdersrechten voor Microsoft Entra ID en systeemeigen DocumentDB-gebruikers in het cluster.
Verbinden met behulp van Microsoft Entra ID in code
Controleer of u de juiste toegang hebt verleend met behulp van toepassingscode en de juiste clientbibliotheek voor uw voorkeurstaal.
class AzureIdentityTokenCallback(OIDCCallback):
def __init__(self, credential):
self.credential = credential
def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult:
token = self.credential.get_token(
"https://ossrdbms-aad.database.windows.net/.default").token
return OIDCCallbackResult(access_token=token)
clusterName = "<cluster-name>"
credential = DefaultAzureCredential()
authProperties = {"OIDC_CALLBACK": AzureIdentityTokenCallback(credential)}
client = MongoClient(
f"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/",
connectTimeoutMS=120000,
tls=True,
retryWrites=True,
authMechanism="MONGODB-OIDC",
authMechanismProperties=authProperties
)
const AzureIdentityTokenCallback = async (params: OIDCCallbackParams, credential: TokenCredential): Promise<OIDCResponse> => {
const tokenResponse: AccessToken | null = await credential.getToken(['https://ossrdbms-aad.database.windows.net/.default']);
return {
accessToken: tokenResponse?.token || '',
expiresInSeconds: (tokenResponse?.expiresOnTimestamp || 0) - Math.floor(Date.now() / 1000)
};
};
const clusterName: string = '<cluster-name>';
const credential: TokenCredential = new DefaultAzureCredential();
const client = new MongoClient(
`mongodb+srv://${clusterName}.global.mongocluster.cosmos.azure.com/`, {
connectTimeoutMS: 120000,
tls: true,
retryWrites: true,
authMechanism: 'MONGODB-OIDC',
authMechanismProperties: {
OIDC_CALLBACK: (params: OIDCCallbackParams) => AzureIdentityTokenCallback(params, credential),
ALLOWED_HOSTS: ['*.azure.com']
}
}
);
string tenantId = "<microsoft-entra-tenant-id>";
string clusterName = "<cluster-name>";
DefaultAzureCredential credential = new();
AzureIdentityTokenHandler tokenHandler = new(credential, tenantId);
MongoUrl url = MongoUrl.Create($"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/");
MongoClientSettings settings = MongoClientSettings.FromUrl(url);
settings.UseTls = true;
settings.RetryWrites = false;
settings.MaxConnectionIdleTime = TimeSpan.FromMinutes(2);
settings.Credential = MongoCredential.CreateOidcCredential(tokenHandler);
settings.Freeze();
MongoClient client = new(settings);
internal sealed class AzureIdentityTokenHandler(
TokenCredential credential,
string tenantId
) : IOidcCallback
{
private readonly string[] scopes = ["https://ossrdbms-aad.database.windows.net/.default"];
public OidcAccessToken GetOidcAccessToken(OidcCallbackParameters parameters, CancellationToken cancellationToken)
{
AccessToken token = credential.GetToken(
new TokenRequestContext(scopes, tenantId: tenantId),
cancellationToken
);
return new OidcAccessToken(token.Token, token.ExpiresOn - DateTimeOffset.UtcNow);
}
public async Task<OidcAccessToken> GetOidcAccessTokenAsync(OidcCallbackParameters parameters, CancellationToken cancellationToken)
{
AccessToken token = await credential.GetTokenAsync(
new TokenRequestContext(scopes, parentRequestId: null, tenantId: tenantId),
cancellationToken
);
return new OidcAccessToken(token.Token, token.ExpiresOn - DateTimeOffset.UtcNow);
}
}