Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DocumentDB unterstützt die Microsoft Entra-ID zusammen mit der nativen DocumentDB-Authentifizierung. Jeder Cluster wird mit aktivierter systemeigener Authentifizierung und einem integrierten Administratorbenutzer erstellt.
Die rollenbasierte Zugriffssteuerung bietet einen zentralen Mechanismus zum Zuweisen und Erzwingen von Berechtigungen über die Microsoft Entra-ID, um sicherzustellen, dass nur autorisierte Identitäten Vorgänge auf Ihren Clustern ausführen können. Dieser Ansatz vereinfacht die Governance, unterstützt das Prinzip der minimalen Rechtevergabe und erleichtert das Audit – Organisationen wird dabei geholfen, die operative Integrität und Compliance aufrechtzuerhalten, wenn die Bereitstellungen wachsen. Das Verwalten des Zugriffs in Azure DocumentDB umfasst zwei unterschiedliche Ebenen:
- Azure-rollenbasierter Zugriff zum Verwalten des Clusters als Azure-Ressource (z. B. Lesen von Metadaten, Verwalten von Firewallregeln und Konfigurieren privater Endpunkte)
- DocumentDB-Zugriff zum Lesen und Schreiben von Daten in Datenbanken und Sammlungen im Cluster.
Aktivieren Sie die Microsoft Entra-ID, damit Microsoft Entra-Prinzipale (Benutzer, Dienstprinzipale oder verwaltete Identitäten) sich beim Cluster authentifizieren können. Die Microsoft Entra ID-Authentifizierung wird mithilfe von OpenID Connect (OIDC) implementiert. Clients legen ein von Entra ausgestelltes OIDC-Zugriffstoken dem MongoDB-Treiber vor. Für einen Cluster muss die native Authentifizierung aktiviert sein. Die unterstützten Konfigurationen sind ausschließlich native Authentifizierung, native Authentifizierung und Microsoft Entra ID-Authentifizierung. Die Microsoft Entra-ID kann nicht die einzige Authentifizierungsmethode sein.
Hinweis
Sie können Authentifizierungsmethoden auf einem Cluster jederzeit nach der Bereitstellung aktivieren oder ändern. Das Ändern von Authentifizierungsmethoden erfordert keinen Clusterneustart und ist unterbrechungsfrei. Wenn ein Cluster erstellt wird, muss die systemeigene DocumentDB-Authentifizierung aktiviert sein. Sie können die systemeigene Authentifizierung deaktivieren, nachdem die Bereitstellung des Clusters abgeschlossen ist.
Zu den Vorteilen der Verwendung der Microsoft Entra-ID für die Authentifizierung gehören:
- Einheitliche Identität und Anmeldung über Azure-Dienste hinweg.
- Zentrale Verwaltung von Anmeldeinformationen, Kennwortrichtlinien und Rotation.
- Unterstützung für kennwortlose und mehrstufige Authentifizierungsmethoden von Microsoft Entra ID.
- Tokenbasierte Authentifizierung für Anwendungen, wodurch gespeicherte Kennwörter eliminiert werden.
Wenn die Microsoft Entra-ID-Authentifizierung aktiviert ist, können Sie einen oder mehrere Microsoft Entra-Prinzipale als administrative oder nichtadministrative Benutzer im Cluster registrieren. Registrierte Prinzipale werden zu Azure-Ressourcen unter Microsoft.DocumentDB/mongoClusters/users und werden in die Datenbank repliziert. Die Zuordnung dieser Prinzipale zu MongoDB-Datenbankrollen gewährt die entsprechenden Datenbankberechtigungen. Diese Authentifizierungsform unterstützt mehrere Prinzipaltypen, einschließlich; Benutzer, Dienstprinzipale (Apps), vom Benutzer zugewiesene und vom System zugewiesene verwaltete Identitäten.
Hinweis
Sie können mehrere Microsoft Entra-ID-Identitäten und Identitätstypen als Administratoren für einen Cluster gleichzeitig konfigurieren. Microsoft Entra ID-Identitätstypen umfassen, sind jedoch nicht auf Folgendes beschränkt:
- Menschliche Identitäten
- Vom Benutzer zugewiesene verwaltete Identitäten
- Vom System zugewiesene verwaltete Identitäten
- Workloadidentitäten
Alle Identitätstypen können Administratoren gleichzeitig sein.
Administrative Benutzer verfügen über vollständige Berechtigungen zum Verwalten des Clusters und der zugehörigen Daten. Nichtadministrative Benutzer können für laufende Produktionsaufgaben hinzugefügt werden, die keine Administratorrechte erfordern. Nichtadministrative Benutzer haben in der Regel eingeschränkte Rollen, z. B. schreibgeschützten oder Lese-/Schreibzugriff auf bestimmte Datenbanken, verfügen jedoch nicht über die Möglichkeit, clusterweite administrative Aktionen auszuführen.
Lesen Sie die folgenden Überlegungen, bevor Sie dieses Feature verwenden:
- Authentifizierungsmethoden für den primären Cluster und für den Replikatcluster werden unabhängig voneinander verwaltet.
- Microsoft Entra-Prinzipale sind in den Clustermetadaten persistent. Wenn ein Prinzipal aus Microsoft Entra ID gelöscht wird, bleiben die entsprechenden Clusterbenutzer erhalten, können aber keine neuen Token mehr abrufen. Vorhandene Token bleiben gültig, bis sie ablaufen (in der Regel bis zu 90 Minuten nach der Ausstellung des Tokens).
- Um den Zugriff sofort zu widerrufen, entfernen Sie den Prinzipal aus dem Cluster (löschen Sie die
users/<principal-id>Ressource), und löschen Sie alle zugehörigen Datenbankrollen. Datenbankadministratoren müssen die Übertragung des Besitzes regeln oder die Bereinigung für gelöschte Prinzipale durchführen.
Voraussetzungen
Ein Azure-Abonnement
- Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto
Ein vorhandener Azure DocumentDB-Cluster
- Wenn Sie keinen Cluster haben, erstellen Sie einen neuen Cluster.
- Eine oder mehrere vorhandene Identitäten in der Microsoft Entra-ID.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter "Erste Schritte mit Azure Cloud Shell".
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, installieren Sie die Azure CLI. Wenn Sie mit Windows oder macOS arbeiten, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Um den Authentifizierungsprozess abzuschließen, führen Sie die schritte aus, die in Ihrem Terminal angezeigt werden. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Wenn Sie dazu aufgefordert werden, installieren Sie die Azure CLI-Erweiterung bei der ersten Verwendung. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden und Verwalten von Erweiterungen mit der Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um auf die neueste Version zu aktualisieren.
- Terraform 1.2.0 oder höher.
Verwalten der rollenbasierten Azure-Zugriffssteuerung
Die rollenbasierte Zugriffssteuerung von Azure bezieht sich auf die Möglichkeit, Ressourcen für einen Azure-Dienst zu verwalten, ohne Daten zu verwalten. Der rollenbasierte Zugriff für Azure DocumentDB-Cluster kann z. B. folgende Möglichkeiten umfassen:
- Alle Konto- und Ressourcenmetadaten lesen
- Lesen und Generieren von Verbindungszeichenfolgen
- Verwalten von Datenbanken und Sammlungen
- Ändern von Kontoeigenschaften
Azure DocumentDB unterstützt die rollenbasierte Zugriffssteuerung für mongoCluster Ressourcentypen. Die folgenden Aktionen für den mongoCluster-Ressourcentyp sind in der rollenbasierten Zugriffssteuerung für einzelne Zuordnungen und für die Erstellung benutzerdefinierter rollenbasierter Zugriffssteuerungsrollen verfügbar:
| Description | |
|---|---|
Microsoft.DocumentDB/mongoClusters/read |
Liest eine mongoCluster Ressource oder listet alle mongoCluster Ressourcen auf. |
Microsoft.DocumentDB/mongoClusters/write |
Dient zum Erstellen oder Aktualisieren der Eigenschaften oder Tags der angegebenen mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/delete |
Löscht die angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/PrivateEndpointConnectionsApproval/action |
Verwalten einer privaten Endpunktverbindung der mongoCluster Ressource |
Microsoft.DocumentDB/mongoClusters/listConnectionStrings/action |
Auflisten der Verbindungszeichenfolgen für eine bestimmte mongoCluster Ressource |
Microsoft.DocumentDB/mongoClusters/firewallRules/read |
Liest eine Firewallregel oder listet alle Firewallregeln für die angegebene mongoCluster Ressource auf. |
Microsoft.DocumentDB/mongoClusters/firewallRules/write |
Erstellen oder Aktualisieren einer Firewallregel für eine angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/firewallRules/delete |
Löscht eine vorhandene Firewallregel für die angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/read |
Liest einen privaten Endpunktverbindungsproxy für die angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/write |
Erstellen oder Aktualisieren eines privaten Endpunktverbindungsproxys für eine angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/delete |
Löscht einen vorhandenen privaten Endpunktverbindungsproxy für die angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/validate/action |
Überprüft den privaten Endpunktverbindungsproxy für die angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/read |
Liest eine private Endpunktverbindung oder listet alle privaten Endpunktverbindungen für die angegebene mongoCluster Ressource auf. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/write |
Erstellen oder Aktualisieren einer privaten Endpunktverbindung für eine angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/delete |
Löscht eine vorhandene private Endpunktverbindung für die angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/privateLinkResources/read |
Liest eine private Verknüpfungsressource oder listet alle privaten Linkressourcen für die angegebene mongoCluster Ressource auf. |
Microsoft.DocumentDB/mongoClusters/users/read |
Liest einen Benutzer oder listet alle Benutzer für die angegebene mongoCluster Ressource auf. |
Microsoft.DocumentDB/mongoClusters/users/write |
Erstellen oder Aktualisieren eines Benutzers für eine angegebene mongoCluster Ressource. |
Microsoft.DocumentDB/mongoClusters/users/delete |
Löscht einen vorhandenen Benutzer für die angegebene mongoCluster Ressource. |
Öffnen Sie ein neues Terminal.
Melden Sie sich bei Azure CLI an.
Verwenden Sie
az group show, um die Metadaten für Ihre aktuelle Ressourcengruppe abzurufen.az group show \ --name "<name-of-existing-resource-group>"Sehen Sie sich die Ausgabe des vorherigen Befehls an. Notieren Sie den Wert der
idEigenschaft für diese Ressourcengruppe, da sie im nächsten Schritt verwendet werden muss.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "location": "westus", "name": "msdocs-identity-example", "type": "Microsoft.Resources/resourceGroups" }Hinweis
In diesem Beispiel wäre der
id-Wert/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example. In diesem Beispiel werden fiktive Daten verwendet, und Ihr Bezeichner unterscheidet sich von diesem Beispiel. Diese Zeichenfolge ist ein verkürztes Beispiel für die Ausgabe.Erstellen Sie eine neue JSON-Datei mit dem Namen role-definition.json. Erstellen Sie in der Datei diese Ressourcendefinition, die die hier aufgelisteten Werte angibt. Fügen Sie für die
AssignableScopesListe dieidEigenschaft der im vorherigen Schritt aufgezeichneten Ressourcengruppe hinzu.{ "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" ] }Hinweis
In diesem Beispiel wird der
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-exampleim vorherigen Schritt aufgezeichnete Wert verwendet. Ihr tatsächlicher Ressourcenbezeichner könnte unterschiedlich sein.Erstellen Sie eine neue Rollendefinition mithilfe von
az role definition create. Verwenden Sie die role-definition.json als Eingabe für das--role-definition-Argument.az role definition create \ --role-definition role-definition.jsonÜberprüfen Sie die Ausgabe des Befehls zum Erstellen von Definitionen. Die Ausgabe enthält den eindeutigen Bezeichner der Rollendefinition in der
id-Eigenschaft. Notieren Sie diesen Wert, da er im Zuweisungsschritt weiter unten in diesem Leitfaden verwendet werden muss.{ "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" }Hinweis
In diesem Beispiel wäre der
id-Wert/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. In diesem Beispiel werden fiktive Daten verwendet, und Ihr Bezeichner unterscheidet sich von diesem Beispiel. Aus Gründen der Übersichtlichkeit handelt es sich bei diesem Beispiel um eine Teilmenge des typischen JSON-Codes, der von der Bereitstellung ausgegeben wird.
Öffnen Sie ein neues Terminal.
Melden Sie sich bei Azure CLI an.
Erstellen Sie eine neue Bicep-Datei, um Ihre Rollendefinition zu definieren. Nennen Sie die Datei "control-plane-role-definition.bicep". Fügen Sie diese
actionsder Definition hinzu:Description Microsoft.DocumentDb/mongoClusters/*Aktiviert alle möglichen Aktionen. 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.idStellen Sie die Bicep-Vorlage mithilfe von
az deployment group create. Geben Sie den Namen der Bicep-Vorlage und der Azure-Ressourcengruppe an.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --template-file control-plane-role-definition.bicepÜberprüfen Sie die Ausgabe der Bereitstellung. Die Ausgabe enthält den eindeutigen Bezeichner der Rollendefinition in der
properties.outputs.definitionId.value-Eigenschaft. Notieren Sie diesen Wert, da er im Zuweisungsschritt weiter unten in diesem Leitfaden verwendet werden muss.{ "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" } } } }Hinweis
In diesem Beispiel wäre der
id-Wert/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. In diesem Beispiel werden fiktive Daten verwendet, und Ihr Bezeichner unterscheidet sich von diesem Beispiel. Aus Gründen der Übersichtlichkeit handelt es sich bei diesem Beispiel um eine Teilmenge des typischen JSON-Codes, der von der Bereitstellung ausgegeben wird.Erstellen Sie eine neue Bicep-Datei, um Ihre Rollenzuweisung zu definieren. Nennen Sie die Datei "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 } }Erstellen Sie eine neue Bicep-Parameterdatei namens control-plane-role-assignment.
bicepparam. In dieser Parameterdatei, weisen Sie die zuvor aufgezeichneten Rollendefinitions-IDs dem ParameterroleDefinitionIdzu und den eindeutigen Bezeichner für Ihre Identität dem ParameteridentityId.using './control-plane-role-assignment.bicep' param roleDefinitionId = '<id-of-new-role-definition>' param identityId = '<id-of-existing-identity>'Stellen Sie diese Bicep-Vorlage mithilfe von
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
Melden Sie sich beim Azure-Portal (https://portal.azure.com) an.
Geben Sie die Ressourcengruppe in der globalen Suchleiste ein.
Wählen Sie in DienstenRessourcengruppen aus.
Wählen Sie im Bereich "Ressourcengruppen " Ihre vorhandene Ressourcengruppe aus.
Wählen Sie im Bereich für die Ressourcengruppe im Dienstmenü die Zugriffssteuerung (IAM) aus.
Wählen Sie im Bereich Access Control (IAM)"Hinzufügen" aus. Wählen Sie dann " Benutzerdefinierte Rolle hinzufügen" aus.
Konfigurieren Sie im Bereich "Grundlagen " die folgenden Optionen, und wählen Sie dann "Weiter" aus:
Wert Benutzerdefinierter Rollenname Azure DocumentDB RBAC OwnerBeschreibung Can perform all Azure role-based access control actions for Azure DocumentDB clusters.Basisberechtigungen Von Grund auf neu starten Wählen Sie im Bereich "Berechtigungen" die Option "Berechtigungen hinzufügen" aus. Suchen Sie dann im Berechtigungsdialog nach
DocumentDB. Wählen Sie schließlich die Option "Microsoft.DocumentDB/mongoClusters " aus.Wählen Sie im Berechtigungsdialog alle Aktionen für
Microsoft.DocumentDB/mongoClusters. Wählen Sie dann "Hinzufügen" aus, um zum Bereich "*Berechtigungen" zurückzukehren.Im Bereich "Berechtigungen" sehen Sie sich die Liste der Berechtigungen an. Wählen Sie dann Überprüfen + erstellen aus.
Überprüfen Sie im Bereich "Überprüfen + Erstellen " die angegebenen Optionen für die neue Rollendefinition. Wählen Sie schließlich "Erstellen" aus.
Warten Sie, bis das Portal die Erstellung der Rollendefinition abgeschlossen hat.
Wählen Sie im Bereich Access Control (IAM)"Hinzufügen " und dann " Rollenzuweisung hinzufügen" aus.
Suchen Sie im Rollenbereich nach
Azure DocumentDBder Azure DocumentDB RBAC-Besitzerrolle , die weiter oben in diesem Leitfaden erstellt wurde, und wählen Sie sie aus. Wählen Sie anschließend Weiter aus.Tipp
Sie können optional die Liste der Rollen filtern, um nur benutzerdefinierte Rollen einzuschließen.
Wählen Sie im Bereich "Mitglieder " die Option " Mitglieder auswählen " aus. Wählen Sie im Dialogfeld "Mitglieder" die Identität aus, die Sie dieser Zugriffsebene für Ihre Azure DocumentDB-Cluster gewähren möchten, und verwenden Sie dann die Option "Auswählen ", um Ihre Auswahl zu bestätigen.
Überprüfen Sie im Bereich Mitglieder die ausgewählten Mitglieder und wählen Sie dann Überprüfen + Zuweisen aus.
Überprüfen Sie im Bereich "Überprüfen+ Zuweisen " die angegebenen Optionen für die neue Rollenzuweisung. Wählen Sie schließlich "Überprüfen+ Zuweisen" aus.
Warten Sie, bis das Portal die Erstellung der Rollenzuweisung abgeschlossen hat.
Öffnen Sie ein neues Terminal.
Melden Sie sich bei Azure CLI an.
Überprüfen Sie Ihr Azure-Zielabonnement.
az account showErstellen Sie eine neue Terraform-Datei, um Ihre Rollendefinition zu definieren. Benennen Sie die Datei control-plane-role-definition.
tf. Fügen Sie dieseactionsder Definition hinzu:Description Microsoft.DocumentDb/mongoClusters/*Aktiviert alle möglichen Aktionen. 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 }Initialisieren Sie die Terraform-Bereitstellung.
terraform init --upgradeErstellen Sie einen Ausführungsplan für die Rollendefinition, und speichern Sie ihn in einer Datei namens role-definition.tfplan.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --out "role-definition.tfplan"Wenden Sie den Ausführungsplan an, um die Rollendefinition in Azure bereitzustellen.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "role-definition.tfplan"Überprüfen Sie die Ausgabe der Bereitstellung. Die Ausgabe enthält den eindeutigen Bezeichner der Rollendefinition in der
definition_id-Eigenschaft. Notieren Sie diesen Wert, da er im Zuweisungsschritt weiter unten in diesem Leitfaden verwendet werden muss.Erstellen Sie eine neue Terraform-Datei, um Ihre Rollenzuweisung zu definieren. Nennen Sie die Datei "control-plane-role-assignment."
tfvariable "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 }Erstellen Sie eine neue Terraform-Variablendatei namens control-plane-role-assignment.tfvars. In dieser Variablendatei, weisen Sie der Variablen
role_definition_iddie zuvor aufgezeichneten Rollendefinitions-IDs zu und der Variablenidentity_idden eindeutigen Bezeichner für Ihre Identität.role_definition_id = "<id-of-new-role-definition>" identity_id = "<id-of-existing-identity>"Initialisieren und anwenden Sie diese Terraform-Konfiguration.
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"
Aktivieren der Microsoft Entra ID-Authentifizierung
Wenn Sie einen Azure DocumentDB-Cluster erstellen, ist der Cluster so konfiguriert, dass die systemeigene Authentifizierung standardmäßig verwendet wird. Um die Authentifizierung mithilfe der Microsoft Entra-ID zu aktivieren, aktivieren Sie die Microsoft Entra ID-Authentifizierungsmethode, und fügen Sie dem Cluster Microsoft Entra ID-Identitäten hinzu.
Rufen Sie die Details für das aktuell angemeldete Konto mithilfe von
az ad signed-in-userab.az ad signed-in-user showDer Befehl gibt eine JSON-Antwort mit verschiedenen Feldern aus.
{ "@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>" }Tipp
Notieren Sie den Wert des
idFelds. In diesem Beispiel wäre der Wertaaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. Dieser Wert kann dann in verschiedenen Skripts verwendet werden, um Ihrem aktuellen Konto rollenbasierte Zugriffssteuerungsberechtigungen für Azure-Ressourcen zu gewähren. Wenn Sie stattdessen eine verwaltete Identität verwenden, können Sie dieidfür diese verwaltete Identität mithilfe desaz identity showBefehls abrufen.Aktivieren Sie die Microsoft Entra ID-Authentifizierung auf dem Cluster, indem Sie die Clusterressource so aktualisieren, dass das
MicrosoftEntraIDin dieauthConfig.allowedModes-Array aufgenommen wird.az resource patch \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --properties '{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}' \ --latest-include-previewHinweis
Ersetzen Sie
<resource-group>und<cluster-name>durch Ihre eigenen Werte.Überprüfen Sie, ob die Änderung angewendet wurde, indem Sie die
authConfig-Eigenschaft für den Cluster mithilfe vonaz resource showlesen.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewHinweis
Die Ausgabe sollte die
allowedModesListe enthalten. Wenn die Microsoft Entra-ID erfolgreich aktiviert wurde, enthält das Array beideNativeAuthundMicrosoftEntraID.
(Optional) Rufen Sie den eindeutigen Bezeichner für den Microsoft Entra-Prinzipal ab, den Sie für den Cluster registrieren möchten. Sie können sie mit der Azure CLI mit einem der folgenden Befehle abrufen:
Aktuelle angemeldete Identität
az ad signed-in-user showEine andere menschliche Identität mit einem benutzerfreundlichen Namen
az ad user show \ --id "<user-alias-and-domain>"Service Principal mithilfe des Anwendungsbezeichners
az ad sp show \ --id "<application-id>"Verwaltete Identität mithilfe der Ressourcengruppe und des Namens
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Erstellen Sie eine kleine Bicep-Vorlage, die den Cluster
authConfigaktualisiert, um die Microsoft Entra-ID einzuschließen (speichern unterenable-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' ] } } }Stellen Sie die Vorlage bereit, um den Cluster zu aktualisieren:
az deployment group create \ --resource-group "<resource-group>" \ --template-file enable-entra-id.bicep \ --parameters clusterName="<cluster-name>"Überprüfen Sie die
authConfigEigenschaft auf dem Cluster mithilfe vonaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewHinweis
Die Ausgabe sollte die
allowedModesListe enthalten. Wenn die Microsoft Entra-ID erfolgreich aktiviert wurde, enthält das Array beideNativeAuthundMicrosoftEntraID.
Suchen Sie im Startbereich des Azure-Portals die Option "Microsoft Entra-ID ", und wählen Sie sie aus.
Tipp
Wenn diese Option nicht aufgeführt ist, wählen Sie "Weitere Dienste" aus, und suchen Sie dann mithilfe des Suchbegriffs "Entra" nach Microsoft Entra ID.
Wählen Sie im Bereich "Übersicht" für den Microsoft Entra ID-Mandanten die Option "Benutzer " im Abschnitt "Verwalten " des Dienstmenüs aus.
Wählen Sie in der Liste der Benutzer die Identität (Benutzer) aus, zu der Sie weitere Details erhalten möchten.
Hinweis
Dieser Screenshot zeigt ein Benutzerbeispiel mit dem Namen "Kai Carter" und einem prinzipiellen Wert von
kai@adventure-works.com.Beobachten Sie im Detailbereich für den bestimmten Benutzer den Wert der Objekt-ID-Eigenschaft .
Tipp
Notieren Sie den Wert der Objekt-ID-Eigenschaft . In diesem Beispiel wäre dieser Wert
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. Dieser Wert kann dann in verschiedenen Skripts verwendet werden, um Ihrem aktuellen Konto rollenbasierte Zugriffssteuerungsberechtigungen für Azure-Ressourcen zu gewähren. Die Schritte sind ähnlich, wenn Sie eine verwaltete Identität verwenden.Navigieren Sie zur vorhandenen Azure DocumentDB-Clusterressource.
Wählen Sie im Clustermenü unter "Einstellungen" die Option "Authentifizierung" aus.
Wählen Sie im Abschnitt "Authentifizierungsmethoden " die Option "Native DocumentDB" und "Microsoft Entra ID " aus, um die Microsoft Entra ID-Authentifizierung zusammen mit der systemeigenen Authentifizierung zu aktivieren.
Wählen Sie "Speichern" aus, um die Änderung beizubehalten.
Der Abschnitt " Authentifizierungsmethoden " sollte jetzt sowohl NativeAuth als auch MicrosoftEntraID als aktivierte Methoden auflisten.
(Optional) Rufen Sie den eindeutigen Bezeichner für den Microsoft Entra-Prinzipal ab, den Sie für den Cluster registrieren möchten. Sie können sie mit der Azure CLI mit einem der folgenden Befehle abrufen:
Aktuelle angemeldete Identität
az ad signed-in-user showEine andere menschliche Identität mit einem benutzerfreundlichen Namen
az ad user show \ --id "<user-alias-and-domain>"Service Principal mithilfe des Anwendungsbezeichners
az ad sp show \ --id "<application-id>"Verwaltete Identität mithilfe der Ressourcengruppe und des Namens
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Erstellen Sie eine Terraform-Konfigurationsdatei, um die Microsoft Entra ID-Authentifizierung auf Ihrem vorhandenen Cluster zu aktivieren. Speichern Sie die Datei 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 }Tipp
Weitere Informationen zu den Optionen, die die
azurerm_mongo_cluster-Ressource verwenden, finden Sie in der Dokumentation zumazurerm-Anbieter in der Terraform-Registrierung.Erstellen Sie eine Variablendatei namens enable-entra-id.tfvars mit Ihren Clusterdetails:
cluster_name = "<cluster-name>" resource_group_name = "<resource-group>"Initialisieren und Anwenden der Terraform-Konfiguration, um die Microsoft Entra ID-Authentifizierung zu aktivieren:
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"Überprüfen Sie die
authConfigEigenschaft auf dem Cluster mithilfe vonaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewHinweis
Die Ausgabe sollte die
allowedModesListe enthalten. Wenn die Microsoft Entra-ID erfolgreich aktiviert wurde, enthält das Array beideNativeAuthundMicrosoftEntraID.
Verwalten von administrativen Microsoft Entra ID-Identitäten und nativen Benutzern in DocumentDB
Wenn die Microsoft Entra-ID-Authentifizierung auf einem Azure DocumetnDB-Cluster aktiviert ist, können Sie diesem Cluster einen oder mehrere Microsoft Entra ID-Prinzipale als Administratorbenutzer hinzufügen. Der Microsoft Entra ID-Administrator kann ein Microsoft Entra-ID-Benutzer, ein Dienstprinzipal oder eine verwaltete Identität sein. Mehrere Microsoft Entra ID-Administratoren können jederzeit konfiguriert werden.
Administrativen Entra-ID-Benutzer werden als Azure-Entitäten unter Microsoft.DocumentDB/mongoClusters/users erstellt und in die Datenbank repliziert.
Darüber hinaus können Benutzer einer oder mehrerer nichtadministrativer Microsoft Entra-ID-Benutzer jederzeit zu einem Cluster hinzugefügt werden, sobald die Microsoft Entra-ID-Authentifizierung aktiviert ist. Nichtadministrative Benutzer werden häufig für laufende Produktionsaufgaben verwendet, die keine Administratorrechte erfordern.
Für Azure DocumentDB wird dieser Zugriff gewährt, indem Microsoft Entra-Principals im Cluster registriert und MongoDB-Datenbankrollen zugeordnet werden (zum Beispiel readWrite in einer Datenbank oder root in der admin Datenbank). Registrierte Dienstprinzipale werden als Azure-Ressourcen vom Typ Microsoft.DocumentDB/mongoClusters/users erstellt, deren Namen die Form <cluster-name>/users/<principal-id> annehmen.
Administrative Benutzer verfügen über vollständige Berechtigungen zum Verwalten des Clusters und der zugehörigen Daten, einschließlich vollständiger Benutzerverwaltungsfunktionen. Nichtadministrative Benutzer können entweder Lese- und Schreibberechtigungen oder nur Leseberechtigungen für den Cluster über bestimmte MongoDB-Datenbankrollen erhalten. Die Rollen "readWriteAnyDatabase " und "clusterAdmin " gewähren zusammen vollständige Lese-/Schreibzugriffsberechtigungen für den Cluster, einschließlich Berechtigungen für Datenbankverwaltung und Datenbankvorgänge. Die ReadAnyDatabase-Rolle wird verwendet, um schreibgeschützte Berechtigungen für den Cluster zu erteilen. Sie können "readWriteAnyDatabase " und "clusterAdmin "-Rollen nicht separat zuweisen. Sie müssen zusammen für den vollständigen Lese-/Schreibzugriff gewährt werden.
Nichtadministrative (sekundäre) Benutzer und Sicherheitsprinzipale erhalten eingeschränkte Benutzerverwaltungsberechtigungen für den Cluster, wie in der folgenden Tabelle beschrieben:
| Sicherheitsanbieter | Rolle | BenutzerErstellen | DeleteUser | UpdateUser | ListenBenutzer |
|---|---|---|---|---|---|
| Microsoft Entra ID | Lese-/Schreibzugriff (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | ❌ | ✔️ |
| Microsoft Entra ID | Schreibgeschützt (readAnyDatabase) | ❌ | ❌ | ❌ | ✔️ |
| Native DocumentDB | Lese-/Schreibzugriff (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | Nur um ihr eigenes Kennwort zu ändern | ✔️ |
| Native DocumentDB | Schreibgeschützt (readAnyDatabase) | ❌ | ❌ | Nur um ihr eigenes Kennwort zu ändern | ✔️ |
Rufen Sie mit einem der folgenden Befehle den eindeutigen Bezeichner (Objekt-ID) des Microsoft Entra-Prinzipals ab, dem Sie Zugriff gewähren möchten:
Aktuelle angemeldete Identität
az ad signed-in-user showEine andere menschliche Identität mit einem benutzerfreundlichen Namen
az ad user show \ --id "<user-alias-and-domain>"Service Principal mithilfe des Anwendungsbezeichners
az ad sp show \ --id "<application-id>"Verwaltete Identität mithilfe der Ressourcengruppe und des Namens
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Registrieren Sie den Prinzipal im Cluster, und ordnen Sie ihn den MongoDB-Datenbankrollen zu. Im folgenden Beispiel wird ein Principal als
readWriteBenutzer auf dersalesDatenbank registriert.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- Ersetzen Sie
principalTypedurchservicePrincipalfür App-/Dienstprinzipale oder durchManagedIdentityfür verwaltete Identitäten. - Um Administratorrechte zu gewähren, verwenden Sie
{"db":"admin","role":"root"}imroles-Array.
- Ersetzen Sie
Alle registrierten Principals und ihre zugeordneten Rollen auflisten (Cluster-Ebene-Ansicht):
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"- Die Antwort enthält ein Array von Benutzerressourcen, die jeweils
identityProviderMetadaten und einrolesArray mit zugeordneten Datenbankrollen enthalten.
- Die Antwort enthält ein Array von Benutzerressourcen, die jeweils
Details zu einem bestimmten registrierten Hauptverantwortlichen abrufen (ersetzen
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewEntfernen Sie einen registrierten Prinzipal (Widerrufen des Datenebenenzugriffs):
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Erstellen Sie eine Bicep-Datei (z. B.
register-principal.bicep), um den Prinzipal zu registrieren und Datenbankrollen zuzuordnen: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 } }Stellen Sie die Bicep-Vorlage bereit, um den Prinzipal zu registrieren.
az deployment group create \ --resource-group "<resource-group>" \ --template-file register-principal.bicep \ --parameters clusterName="<cluster-name>" principalId="<principal-id>"Listen Sie alle registrierten Prinzipale für den Cluster mithilfe der REST-API (nützlich nach der Bicep-Bereitstellung) auf:
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"Rufen Sie Details zu einem bestimmten registrierten Prinzipal ab, der von Bicep erstellt wurde (ersetzen Sie
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewEntfernen Sie den Prinzipal, indem Sie die Ressource löschen (oder eine Vorlage ohne die Benutzerressource bereitstellen):
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Öffnen Sie den Azure DocumentDB-Zielcluster im Azure-Portal.
Wählen Sie unter Einstellungen die Option Authentifizierung aus.
Im Abschnitt "Microsoft Entra ID-Authentifizierung" listet das Portal die registrierten Microsoft Entra-Hauptkonten anhand der Objekt-ID auf. Verwenden Sie diese Ansicht, um:
- Scannen Sie die Liste nach erwarteten Objektbezeichnern.
- Überprüfen Sie die Details für einen einzelnen Prinzipal, indem Sie einen aufgelisteten Eintrag auswählen (oder die Suchfunktion des Portals verwenden).
- Verwenden Sie die Aktion Entfernen neben einem Eintrag, um den Datenebenenzugriff des Prinzipals sofort zu widerrufen.
Verwenden Sie die Seite "Benutzer" im Abschnitt "Microsoft Entra ID", um freundliche Namen für Objektbezeichner abzurufen, die in der Portalliste angezeigt werden. Suchen Sie dann anhand der Objekt-ID oder des Anzeigenamens.
Rufen Sie mit einem der folgenden Befehle den eindeutigen Bezeichner (Objekt-ID) des Microsoft Entra-Prinzipals ab, dem Sie Zugriff gewähren möchten:
Aktuelle angemeldete Identität
az ad signed-in-user showEine andere menschliche Identität mit einem benutzerfreundlichen Namen
az ad user show \ --id "<user-alias-and-domain>"Service Principal mithilfe des Anwendungsbezeichners
az ad sp show \ --id "<application-id>"Verwaltete Identität mithilfe der Ressourcengruppe und des Namens
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Erstellen Sie eine Terraform-Datei (z. B.
register-principal.tf), um den Prinzipal zu registrieren und Datenbankrollen mithilfe des AzAPI-Anbieters zuzuordnen: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 } } }Tipp
Weitere Informationen zum AzAPI-Anbieter finden Sie in der Dokumentation zum Azure AzAPI-Anbieter.
- Ersetzen Sie
principalTypedurchservicePrincipalfür App-/Dienstprinzipale oder durchManagedIdentityfür verwaltete Identitäten. - Um Administratorrechte zu gewähren, verwenden Sie
{"db":"admin","role":"root"}imroles-Array.
- Ersetzen Sie
Erstellen Sie eine Variablendatei mit dem Namen
register-principal.tfvars:cluster_name = "<cluster-name>" resource_group_name = "<resource-group>" principal_id = "<principal-id>" principal_type = "User" roles = [ { db = "sales" role = "readWrite" } ]Initialisieren Sie die Terraform-Konfiguration, und wenden Sie sie an, um den Prinzipal zu registrieren:
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"Alle registrierten Hauptentitäten für den Cluster mithilfe der REST-API auflisten (sinnvoll nach dem Terraform-Deployment):
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 abrufen für einen bestimmten registrierten Principal, der von Terraform erstellt wurde (ersetzen
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewEntfernen Sie den Prinzipal, indem Sie die Terraform-Ressource zerstören:
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform destroy --var-file="register-principal.tfvars"
Hinweis
Ein Azure DocumentDB-Cluster wird mit einem integrierten systemeigenen DocumentDB-Benutzer erstellt. Sie können weitere native administrative DocumentDB-Benutzer hinzufügen, nachdem die Clusterbereitstellung abgeschlossen ist. Microsoft Entra ID-Admins, die dem Cluster hinzugefügt werden, sind zusätzlich zu nativen DocumentDB-Admins vorhanden, die für denselben Cluster definiert sind. Alle administrativen Microsoft Entra-ID-Identitäten werden in die Datenbank repliziert.
Nichtadministrative Microsoft Entra ID-Identitäten werden in der Datenbank erstellt. Wenn Sie nichtadministrative Benutzer in der Datenbank auflisten, enthält die Liste alle administrativen und nichtadministrativen Microsoft Entra-ID-Identitäten und alle sekundären (nichtadministrativen) documentDB-Benutzer.
Abrufen von Clusteranmeldeinformationen
Sie können eine Verbindung mit dem Cluster herstellen, indem Sie entweder einen Verbindungs-URI oder ein benutzerdefiniertes Einstellungsobjekt vom Treiber für Ihre bevorzugte Sprache verwenden. Bei beiden Optionen muss das Schema auf mongodb+srv gesetzt werden, um eine Verbindung mit dem Cluster herzustellen. Der Host befindet sich entweder in der *.global.mongocluster.cosmos.azure.com oder *.mongocluster.cosmos.azure.com Domäne, je nachdem, ob Sie den aktuellen Cluster oder den globalen Lese-/Schreibzugriffsendpunkt verwenden. Das +srv Schema und der *.global.* Host stellen sicher, dass Ihr Client dynamisch mit dem entsprechenden beschreibbaren Cluster in einer Multiclusterkonfiguration verbunden ist, auch wenn ein Bereichstauschvorgang auftritt. In einer Konfiguration mit nur einem Cluster können Sie eine der beiden Verbindungszeichenfolgen wahllos verwenden.
Die tls Einstellung muss ebenfalls aktiviert sein. Die verbleibenden empfohlenen Einstellungen sind bewährte Konfigurationseinstellungen.
| Option | Wert |
|---|---|
scheme |
mongodb+srv |
host |
<cluster-name>.global.mongocluster.cosmos.azure.com oder <cluster-name>.mongocluster.cosmos.azure.com |
tls |
true |
authMechanism |
MONGODB-OIDC |
retrywrites |
false |
maxIdleTimeMS |
120000 |
Von Bedeutung
Verwenden Sie das Azure-Portal , um die Verbindungszeichenfolge abzurufen.
Navigieren Sie zum Azure DocumentDB-Cluster.
Wählen Sie die Navigationsoption "Verbindungszeichenfolgen " aus.
Kopieren oder zeichnen Sie den Wert aus dem Feld "Verbindungszeichenfolge" auf.
Tipp
Microsoft Entra ID-Verbindungszeichenfolgen befinden sich im Abschnitt "Microsoft Entra ID ".
Verbinden mit Microsoft Entra ID in MongoDB Shell
Verwenden Sie ein Clientgerät, auf dem die MongoDB-Shell installiert ist, um mithilfe einer Microsoft Entra ID-Identität eine Verbindung mit Ihrem Azure DocumentDB-Cluster herzustellen.
Öffnen Sie ein Terminal auf einem Client mit installierter MongoDB-Shell.
Rufen Sie den Namen Ihres Azure DocumentDB-Clusters und die Client-ID für die Zielidentität ab.
Stellen Sie eine Verbindung mithilfe der folgenden Verbindungszeichenfolge her:
mongosh "mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000"
Verbinden mit Microsoft Entra ID in Visual Studio Code
Verwenden Sie Visual Studio Code mit der DocumentDB-Erweiterung , um mithilfe einer Microsoft Entra ID-Identität eine Verbindung mit Ihrem Azure DocumentDB-Cluster herzustellen.
Von Bedeutung
Wenn Sie sich bei einem Azure DocumentDB-Cluster mithilfe von Microsoft Entra ID in Visual Studio Code mit DocumentDB-Erweiterung authentifizieren, wird die Funktionalität shell nicht unterstützt. Wenn Sie die MongoDB-Shell mit der Microsoft Entra ID-Authentifizierung verwenden müssen, verwenden Sie die MongoDB-Shell direkt auf einem Clientcomputer.
Öffnen Sie Visual Studio Code.
Navigieren Sie in der Seitenleiste zur DocumentDB-Erweiterung.
Wählen Sie im Abschnitt "Verbindungen " +Neue Verbindung... aus.
Wählen Sie im Dialogfeld "Verbindungstyp" die Option "Verbindungszeichenfolge" aus.
Verwenden Sie die folgende Verbindungszeichenfolge:
mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000Warten Sie, bis die automatische Eingabeaufforderung die Microsoft Entra ID-Authentifizierung verwendet. Geben Sie die entsprechenden Anmeldeinformationen für Ihren Identitätstyp ein.
Hinweis
Wenn Sie sich beispielsweise mit Ihrer eigenen Identität (einer menschlichen Identität) anmelden, verwenden Sie die kennwortlose Authentifizierung.
Warten Sie, bis die Verbindung abgeschlossen ist. Anschließend wird dem Abschnitt "Connections " für den Cluster ein neuer DocumentDB-Eintrag hinzugefügt.
Verbinden mit Microsoft Entra ID in MongoDB Compass
Stellen Sie eine Verbindung mit Ihrem Azure DocumentDB-Cluster mithilfe einer Microsoft Entra ID-Identität direkt mit der MongoDB Compass-Anwendung her.
Starten Sie die MongoDB Compass-Anwendung.
Wählen Sie + im Menü "Verbindungen" aus, um eine neue Verbindung hinzuzufügen.
Aktivieren Sie die Einstellung Verbindungszeichenfolge bearbeiten im Dialogfeld Neue Verbindung.
Geben Sie die folgende Verbindungszeichenfolge in das URI-Eingabefeld ein.
mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000Öffnen Sie nun das Dialogfeld "Erweiterte Verbindungsoptionen ".
Wählen Sie im Abschnitt "Allgemein " die Option
mongodb+srvfür das Verbindungszeichenfolgenschema aus.Navigieren Sie als Nächstes zum Abschnitt "Authentifizierung ".
Stellen Sie sicher, dass die OIDC-Option ausgewählt ist.
Navigieren Sie nun zum Abschnitt "OIDC-Optionen ".
Stellen Sie sicher, dass auch die Option "Zielendpunkt als vertrauenswürdig betrachten" ausgewählt ist.
Wählen Sie "Speichern und Verbinden" aus.
Verwalten von sekundären (nicht-administrativen) Microsoft Entra ID-Identitäten in DocumentDB
Melden Sie sich beim Cluster mit einer administrativen Microsoft Entra ID-Identität an, um Verwaltungsvorgänge für nichtadministrative Microsoft Entra ID-Identitäten auszuführen.
Hinweis
Alle Verwaltungsbefehle für nichtadministrative Benutzer werden für SecurityPrincipal und user Prinzipaltypen unterstützt.
Melden Sie sich mit einer administrativen Microsoft Entra ID-Identität beim Cluster an und verwenden Sie ein Tool wie die MongoDB-Shell.
Fügen Sie eine nichtadministrative Microsoft Entra ID-Identität mit Lese-/Schreibberechtigungen für den Cluster mithilfe des
createUserBefehls hinzu:db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Fügen Sie eine nichtadministrative Microsoft Entra ID-Identität mit schreibgeschützten Berechtigungen für den Cluster mit
createUserund einer anderen Rollengruppe hinzu.db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "readAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Entfernen Sie eine nichtadministrative Microsoft Entra ID-Identität aus dem Cluster mit dem
dropUserBefehl.db.runCommand( { dropUser: "<entra-id-unique-identifier>" } )Listen Sie alle Microsoft Entra ID- und nativen DocumentDB-Benutzer im Cluster mithilfe von
userInfoauf.db.runCommand( { usersInfo: 1 } )Hinweis
Alle administrativen Benutzer von Microsoft Entra ID und die systemeigenen Benutzer von DocumentDB werden in die Datenbank repliziert. Aufgrund dieser Replikation enthält die Liste der Benutzer alle administrativen und nicht-administrativen Microsoft Entra ID- und nativen DocumentDB-Benutzer im Cluster.
Herstellen einer Verbindung mithilfe von Microsoft Entra ID im Code
Überprüfen Sie, ob Sie den Zugriff ordnungsgemäß mithilfe von Anwendungscode und der entsprechenden Clientbibliothek für Ihre bevorzugte Sprache gewährt haben.
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);
}
}