Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Azure DocumentDB prend en charge Microsoft Entra ID en même temps que l’authentification DocumentDB native. Chaque cluster est créé avec l’authentification native activée et un utilisateur administratif intégré.
Le contrôle d’accès en fonction du rôle fournit un mécanisme centralisé permettant d’attribuer et d’appliquer des autorisations via l’ID Microsoft Entra, ce qui garantit que seules les identités autorisées peuvent effectuer des opérations sur vos clusters. Cette approche simplifie la gouvernance, prend en charge les principes de privilège minimum et simplifie l’audit, ce qui aide les organisations à maintenir l’intégrité opérationnelle et la conformité à mesure que les déploiements augmentent. La gestion de l’accès dans Azure DocumentDB implique deux niveaux distincts :
- Accès en fonction du rôle Azure pour la gestion du cluster en tant que ressource Azure (par exemple, lecture des métadonnées, gestion des règles de pare-feu et configuration de points de terminaison privés)
- Accès DocumentDB pour lire et écrire des données dans des bases de données et des collections sur le cluster.
Activez l’ID Microsoft Entra pour autoriser les principaux Microsoft Entra (utilisateurs, principaux de service ou identités managées) à s’authentifier auprès du cluster. L’authentification Microsoft Entra ID est implémentée à l’aide d’OpenID Connect (OIDC). Les clients présentent un jeton d’accès OIDC émis par Entra au pilote MongoDB. Un cluster doit avoir activé l’authentification native ; les configurations prises en charge sont uniquement natives ou l’authentification Microsoft Entra ID uniquement ou native et l’authentification Microsoft Entra ID.
Note
Vous pouvez activer ou modifier les méthodes d’authentification sur un cluster à tout moment après l’approvisionnement. La modification des méthodes d’authentification ne nécessite pas de redémarrage de cluster et n’est pas perturbatrice. Lorsqu’un cluster est créé, l’authentification DocumentDB native doit être activée. Vous pouvez désactiver l’authentification native une fois le provisionnement terminé du cluster.
Les avantages de l’utilisation de l’ID Microsoft Entra pour l’authentification sont les suivants :
- Identité uniforme et connexion entre les services Azure.
- Gestion centralisée des informations d’identification, des stratégies de mot de passe et de la rotation.
- Prise en charge des méthodes d’authentification sans mot de passe et multifacteur à partir de l’ID Microsoft Entra.
- Authentification basée sur des jetons pour les applications, éliminant les mots de passe stockés.
Lorsque l’authentification d’ID Microsoft Entra est activée, vous pouvez inscrire un ou plusieurs principaux Microsoft Entra en tant qu’utilisateurs administratifs ou non administrateurs sur le cluster. Les principaux inscrits deviennent des ressources Azure sous Microsoft.DocumentDB/mongoClusters/users et sont répliqués dans la base de données. Le mappage de ces principaux aux rôles de base de données MongoDB accorde les privilèges de base de données correspondants. Cette forme d’authentification prend en charge plusieurs types principaux, notamment : utilisateurs humains, principaux de service (applications), identités managées affectées par l’utilisateur et affectées par le système.
Note
Vous pouvez configurer plusieurs identités et types d’identités Microsoft Entra id en tant qu’administrateurs pour un cluster en même temps. Les types d’identités d’ID Microsoft Entra incluent, mais ne sont pas limités aux éléments suivants :
- Identités humaines
- Identités managées attribuées par l’utilisateur
- Identités managées attribuées par le système
- Identités de charge de travail
Tous les types d’identité peuvent être des administrateurs simultanément.
Les utilisateurs administratifs disposent de privilèges complets pour gérer le cluster et ses données. Les utilisateurs non administrateurs peuvent être ajoutés pour les tâches de production en cours qui ne nécessitent pas de privilèges d’administration. Les utilisateurs nonadministratifs contiennent généralement des rôles restreints, tels que l’accès en lecture seule ou en lecture-écriture à des bases de données spécifiques, mais n’ont pas la possibilité d’effectuer des actions administratives à l’échelle du cluster.
Passez en revue les considérations suivantes avant d’utiliser cette fonctionnalité :
- Les méthodes d’authentification sur le cluster principal et sur le cluster réplica sont gérées indépendamment.
- Les principaux Microsoft Entra sont enregistrés dans les métadonnées du cluster. Si un principal est supprimé de Microsoft Entra ID, l’utilisateur de cluster correspondant reste mais ne peut plus obtenir de nouveaux jetons. Les jetons existants restent valides jusqu’à leur expiration (généralement jusqu’à 90 minutes à partir de l’émission du jeton).
- Pour révoquer immédiatement l’accès, supprimez le principal du cluster (supprimez la
users/<principal-id>ressource) et supprimez les rôles de base de données associés. Les administrateurs de base de données doivent gérer le transfert de propriété ou de nettoyage pour les principaux supprimés.
Prerequisites
Un abonnement Azure
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuit
Un cluster Azure DocumentDB existant
- Si vous n’avez pas de cluster, créez un cluster
- Une ou plusieurs identités existantes dans Microsoft Entra ID.
Utilisez l’environnement Bash dans Azure Cloud Shell. Pour obtenir plus d’informations, consultez Démarrage d’Azure Cloud Shell.
Si vous préférez exécuter des commandes de référence CLI localement, installez Azure CLI. Si vous exécutez sur Windows ou macOS, envisagez d’exécuter Azure CLI dans un conteneur Docker. Pour plus d’informations, consultez Comment exécuter Azure CLI dans un conteneur Docker.
Si vous utilisez une installation locale, connectez-vous à Azure CLI à l’aide de la commande az login. Pour terminer le processus d’authentification, suivez les étapes affichées dans votre terminal. Pour obtenir d’autres options de connexion, consultez S’authentifier auprès d’Azure à l’aide d’Azure CLI.
Lorsque vous y êtes invité, installez l’extension Azure CLI lors de la première utilisation. Pour plus d’informations sur les extensions, consultez Utiliser et gérer des extensions avec Azure CLI.
Exécutez az version pour rechercher la version et les bibliothèques dépendantes installées. Pour effectuer une mise à niveau vers la dernière version, exécutez az upgrade.
- Terraform 1.2.0 ou version ultérieure.
Gérer le contrôle d’accès en fonction du rôle Azure
Le contrôle d’accès en fonction du rôle Azure fait référence à la possibilité de gérer les ressources d’un service Azure sans gérer les données. Par exemple, l’accès en fonction du rôle pour les clusters Azure DocumentDB peut inclure la possibilité de :
- Lire toutes les métadonnées de compte et de ressource
- Lire et régénérer des chaînes de connexion
- Gérer les bases de données et les collections
- Modifier les propriétés du compte
Azure DocumentDB prend en charge le contrôle d’accès en fonction du rôle Azure pour mongoCluster le type de ressource. Les actions suivantes pour mongoCluster le type de ressource sont disponibles dans le contrôle d’accès en fonction du rôle Azure pour les attributions individuelles et la création de rôles de contrôle d’accès en fonction du rôle personnalisé :
| Descriptif | |
|---|---|
Microsoft.DocumentDB/mongoClusters/read |
Lit une mongoCluster ressource ou répertorie toutes les mongoCluster ressources. |
Microsoft.DocumentDB/mongoClusters/write |
Créez ou mettez à jour les propriétés ou balises de la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/delete |
Supprime la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/PrivateEndpointConnectionsApproval/action |
Gérer la connexion privée de point de terminaison de la ressource mongoCluster |
Microsoft.DocumentDB/mongoClusters/listConnectionStrings/action |
Répertorier les chaînes de connexion pour une ressource donnée mongoCluster |
Microsoft.DocumentDB/mongoClusters/firewallRules/read |
Lit une règle de pare-feu ou répertorie toutes les règles de pare-feu pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/firewallRules/write |
Créez ou mettez à jour une règle de pare-feu sur une ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/firewallRules/delete |
Supprime une règle de pare-feu existante pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/read |
Lit un proxy de connexion de point de terminaison privé pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/write |
Créez ou mettez à jour un proxy de connexion de point de terminaison privé sur une ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/delete |
Supprime un proxy de connexion de point de terminaison privé existant pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/validate/action |
Valide le proxy de connexion de point de terminaison privé pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/read |
Lit une connexion de point de terminaison privé ou répertorie toutes les connexions de point de terminaison privé pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/write |
Créez ou mettez à jour une connexion de point de terminaison privé sur une ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/delete |
Supprime une connexion de point de terminaison privé existante pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateLinkResources/read |
Lit une ressource de liaison privée ou répertorie toutes les ressources de liaison privée pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/users/read |
Lit un utilisateur ou répertorie tous les utilisateurs pour la ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/users/write |
Créez ou mettez à jour un utilisateur sur une ressource spécifiée mongoCluster . |
Microsoft.DocumentDB/mongoClusters/users/delete |
Supprime un utilisateur existant pour la ressource spécifiée mongoCluster . |
Ouvrez un nouveau terminal.
Connectez-vous à Azure CLI.
Permet
az group showd’obtenir les métadonnées de votre groupe de ressources actuel.az group show \ --name "<name-of-existing-resource-group>"Observez la sortie de la commande précédente. Enregistrez la valeur de la propriété
idpour ce groupe de ressources, car elle est nécessaire pour l'utiliser à l'étape suivante.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "location": "westus", "name": "msdocs-identity-example", "type": "Microsoft.Resources/resourceGroups" }Note
Dans cet exemple, la
idvaleur serait/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example. Cet exemple utilise des données fictives et votre identificateur serait distinct de cet exemple. Cette chaîne est un exemple tronqué de la sortie.Créez un fichier JSON nommé role-definition.json. Dans le fichier, créez cette définition de ressource en spécifiant les valeurs répertoriées ici. Dans la liste
AssignableScopes, ajoutez la propriétéiddu groupe de ressources notée à l’étape précédente.{ "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" ] }Note
Cet exemple utilise la
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-examplevaleur enregistrée à l’étape précédente. Votre identificateur de ressource réel peut être différent.Créez une nouvelle définition de rôle à l’aide de
az role definition create. Utilisez le fichier role-definition.json comme entrée pour l’argument--role-definition.az role definition create \ --role-definition role-definition.jsonPassez en revue la sortie de la commande de création de définition. La sortie contient l’identificateur unique de la définition de rôle dans la
idpropriété. Enregistrez cette valeur, car il est nécessaire d’utiliser dans l’étape d’affectation plus loin dans ce guide.{ "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" }Note
Dans cet exemple, la
idvaleur serait/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. Cet exemple utilise des données fictives et votre identificateur serait distinct de cet exemple. Cet exemple est un sous-ensemble de la sortie JSON typique générée par le déploiement pour plus de clarté.
Ouvrez un nouveau terminal.
Connectez-vous à Azure CLI.
Créez un fichier Bicep pour définir votre définition de rôle. Nommez le fichier control-plane-role-definition.bicep. Ajoutez-les
actionsà la définition :Descriptif Microsoft.DocumentDb/mongoClusters/*Active toutes les actions possibles. 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.idDéployez le modèle Bicep à l’aide de
az deployment group create. Spécifiez le nom du modèle Bicep et du groupe de ressources Azure.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --template-file control-plane-role-definition.bicepPassez en revue la sortie du déploiement. La sortie contient l’identificateur unique de la définition de rôle dans la
properties.outputs.definitionId.valuepropriété. Enregistrez cette valeur, car il est nécessaire d’utiliser dans l’étape d’affectation plus loin dans ce guide.{ "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" } } } }Note
Dans cet exemple, la
idvaleur serait/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. Cet exemple utilise des données fictives et votre identificateur serait distinct de cet exemple. Cet exemple est un sous-ensemble de la sortie JSON typique générée par le déploiement pour plus de clarté.Créez un fichier Bicep pour définir votre attribution de rôle. Nommez le fichier 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 } }Créez un nouveau fichier de paramètres Bicep nommé control-plane-role-assignment.
bicepparam. Dans ce fichier de paramètres ; affectez les identificateurs de définition de rôle précédemment enregistrés auroleDefinitionIdparamètre et l’identificateur unique de votre identité auidentityIdparamètre.using './control-plane-role-assignment.bicep' param roleDefinitionId = '<id-of-new-role-definition>' param identityId = '<id-of-existing-identity>'Déployez ce modèle Bicep à l’aide de
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
Connectez-vous au portail Azure (https://portal.azure.com).
Entrez le groupe de ressources dans la barre de recherche globale.
Dans Services, sélectionnez Groupes de ressources.
Dans le volet Groupes de ressources, sélectionnez votre groupe de ressources existant.
Dans le volet du groupe de ressources, sélectionnez Contrôle d’accès (IAM) dans le menu du service.
Dans le volet Contrôle d’accès (IAM), sélectionnez Ajouter. Sélectionnez Ensuite Ajouter un rôle personnalisé.
Dans le volet Informations de base , configurez les options suivantes, puis sélectionnez Suivant :
Valeur Nom du rôle personnalisé Azure DocumentDB RBAC OwnerDescription Can perform all Azure role-based access control actions for Azure DocumentDB clusters.Autorisations de référence Commencer à partir de zéro Dans le volet Autorisations , sélectionnez Ajouter des autorisations. Ensuite, recherchez
DocumentDBdans la boîte de dialogue autorisations. Enfin, sélectionnez l’option Microsoft.DocumentDB/mongoClusters .Dans la boîte de dialogue Autorisations, sélectionnez toutes les actions pour
Microsoft.DocumentDB/mongoClusters. Ensuite, sélectionnez Ajouter pour revenir au volet *Autorisations .De retour dans le volet Autorisations , observez la liste des autorisations. Ensuite, sélectionnez Vérifier + créer.
Dans le volet Vérifier + créer , passez en revue les options spécifiées pour la nouvelle définition de rôle. Enfin, sélectionnez Créer.
Attendez que le portail termine la création de la définition de rôle.
Dans le volet Contrôle d’accès (IAM), sélectionnez Ajouter , puis Ajouter une attribution de rôle.
Dans le volet Rôle , recherchez
Azure DocumentDBet sélectionnez le rôle Propriétaire RBAC Azure DocumentDB créé précédemment dans ce guide. Ensuite, sélectionnez Suivant.Conseil / Astuce
Vous pouvez éventuellement filtrer la liste des rôles pour inclure uniquement des rôles personnalisés.
Dans le volet Membres , sélectionnez l’option Sélectionner des membres . Dans la boîte de dialogue membres, sélectionnez l’identité que vous souhaitez accorder à ce niveau d’accès pour vos clusters Azure DocumentDB, puis utilisez l’option Sélectionner pour confirmer votre choix.
De retour dans le volet Membres , passez en revue le membre sélectionné[s], puis sélectionnez Vérifier + affecter.
Dans le volet Révision + affectation , passez en revue les options spécifiées pour la nouvelle attribution de rôle. Enfin, sélectionnez Vérifier + affecter.
Attendez que le portail termine la création de l’attribution de rôle.
Ouvrez un nouveau terminal.
Connectez-vous à Azure CLI.
Vérifiez votre abonnement Azure cible.
az account showCréez un fichier Terraform pour définir votre définition de rôle. Nommez le fichier control-plane-role-definition.
tf. Ajoutez-lesactionsà la définition :Descriptif Microsoft.DocumentDb/mongoClusters/*Active toutes les actions possibles. 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 }Initialisez le déploiement Terraform.
terraform init --upgradeCréez un plan d’exécution pour la définition de rôle et enregistrez-le dans un fichier nommé role-definition.tfplan.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --out "role-definition.tfplan"Appliquez le plan d’exécution pour déployer la définition de rôle sur Azure.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "role-definition.tfplan"Passez en revue la sortie du déploiement. La sortie contient l’identificateur unique de la définition de rôle dans la
definition_idpropriété. Enregistrez cette valeur, car il est nécessaire d’utiliser dans l’étape d’affectation plus loin dans ce guide.Créez un fichier Terraform pour définir votre attribution de rôle. Nommez le fichier control-plane-role-assignment.
tf.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 }Créez un fichier de variables Terraform nommé control-plane-role-assignment.tfvars. Dans ce fichier de variables ; affectez les identificateurs de définition de rôle précédemment enregistrés à la
role_definition_idvariable et l’identificateur unique de votre identité à laidentity_idvariable.role_definition_id = "<id-of-new-role-definition>" identity_id = "<id-of-existing-identity>"Initialisez et appliquez cette configuration Terraform.
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"
Activer l’authentification d’ID Microsoft Entra
Lorsque vous créez un cluster Azure DocumentDB, le cluster est configuré pour utiliser uniquement l’authentification native par défaut. Pour activer l’authentification à l’aide de l’ID Microsoft Entra, activez la méthode d’authentification Microsoft Entra ID et ajoutez des identités d’ID Microsoft Entra au cluster.
Obtenez les détails du compte actuellement connecté à l’aide de
az ad signed-in-user.az ad signed-in-user showLa commande génère une réponse JSON contenant différents champs.
{ "@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>" }Conseil / Astuce
Enregistrez la valeur du
idchamp. Dans cet exemple, cette valeur seraitaaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. Cette valeur peut ensuite être utilisée dans différents scripts pour accorder des autorisations de contrôle d’accès en fonction du rôle à votre compte actuel aux ressources Azure. Si vous utilisez plutôt une identité managée, vous pouvez obtenir l’identitéidmanagée à l’aide de laaz identity showcommande.Activez l’authentification ID Microsoft Entra sur le cluster en mettant à jour la ressource du cluster pour inclure
MicrosoftEntraIDdans le tableauauthConfig.allowedModes:az resource patch \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --properties '{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}' \ --latest-include-previewNote
Remplacez
<resource-group>et<cluster-name>par vos valeurs.Vérifiez que la modification a bien été appliquée en lisant la propriété
authConfigsur le cluster à l’aide deaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNote
La sortie doit inclure la
allowedModesliste. Si l’ID Microsoft Entra a été activé avec succès, le tableau contient à la foisNativeAuthetMicrosoftEntraID.
(Facultatif) Obtenez l’identificateur unique du principal Microsoft Entra que vous envisagez d’inscrire sur le cluster. Vous pouvez l’obtenir avec Azure CLI à l’aide de l’une des commandes suivantes :
Identité de connexion actuelle
az ad signed-in-user showUne autre identité humaine à l’aide d’un nom convivial
az ad user show \ --id "<user-alias-and-domain>"Principal de service à l’aide de l’identificateur d’application
az ad sp show \ --id "<application-id>"Identité managée à l’aide du groupe de ressources et du nom
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Créez un petit modèle Bicep qui met à jour le cluster
authConfigpour inclure l’ID Microsoft Entra (enregistrer sousenable-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' ] } } }Déployez le modèle pour mettre à jour le cluster :
az deployment group create \ --resource-group "<resource-group>" \ --template-file enable-entra-id.bicep \ --parameters clusterName="<cluster-name>"Vérifiez la propriété
authConfigsur le cluster à l’aide deaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNote
La sortie doit inclure la
allowedModesliste. Si l’ID Microsoft Entra a été activé avec succès, le tableau contient à la foisNativeAuthetMicrosoftEntraID.
Dans le volet Accueil du portail Azure, recherchez et sélectionnez l’option Microsoft Entra ID .
Conseil / Astuce
Si cette option n’est pas répertoriée, sélectionnez Plus de services, puis recherchez l’ID Microsoft Entra à l’aide du terme de recherche « Entra ».
Dans le volet Vue d’ensemble du locataire Microsoft Entra ID, sélectionnez Utilisateurs dans la section Gérer du menu de service.
Dans la liste des utilisateurs, sélectionnez l’identité (utilisateur) à laquelle vous souhaitez obtenir plus de détails.
Note
Cette capture d’écran illustre un exemple d’utilisateur nommé « Kai Carter » avec un principal de
kai@adventure-works.com.Dans le volet d’informations de l’utilisateur spécifique, observez la valeur de la propriété ID d’objet .
Conseil / Astuce
Enregistrez la valeur de la propriété ID d’objet . Dans cet exemple, cette valeur serait
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. Cette valeur peut ensuite être utilisée dans différents scripts pour accorder des autorisations de contrôle d’accès en fonction du rôle à votre compte actuel aux ressources Azure. Les étapes sont similaires si vous utilisez une identité managée.Accédez à la ressource de cluster Azure DocumentDB existante.
Dans le menu du cluster, sous Paramètres, sélectionnez Authentification.
Dans la section Méthodes d’authentification , sélectionnez Native DocumentDB et Microsoft Entra ID pour activer l’authentification Microsoft Entra ID avec l’authentification native.
Sélectionnez Enregistrer pour conserver la modification.
La section Méthodes d’authentification doit maintenant répertorier nativeAuth et MicrosoftEntraID comme méthodes activées.
(Facultatif) Obtenez l’identificateur unique du principal Microsoft Entra que vous envisagez d’inscrire sur le cluster. Vous pouvez l’obtenir avec Azure CLI à l’aide de l’une des commandes suivantes :
Identité de connexion actuelle
az ad signed-in-user showUne autre identité humaine à l’aide d’un nom convivial
az ad user show \ --id "<user-alias-and-domain>"Principal de service à l’aide de l’identificateur d’application
az ad sp show \ --id "<application-id>"Identité managée à l’aide du groupe de ressources et du nom
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Créez un fichier de configuration Terraform pour activer l’authentification Microsoft Entra ID sur votre cluster existant. Enregistrez le fichier sous le nom 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 }Conseil / Astuce
Pour plus d’informations sur les options à l’aide de la
azurerm_mongo_clusterressource, consultezazurermla documentation du fournisseur dans Terraform Registry.Créez un fichier de variables nommé enable-entra-id.tfvars avec les détails de votre cluster :
cluster_name = "<cluster-name>" resource_group_name = "<resource-group>"Initialisez et appliquez la configuration Terraform pour activer l’authentification Microsoft Entra ID :
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"Vérifiez la propriété
authConfigsur le cluster à l’aide deaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNote
La sortie doit inclure la
allowedModesliste. Si l’ID Microsoft Entra a été activé avec succès, le tableau contient à la foisNativeAuthetMicrosoftEntraID.
Gérer les identités d'administration Microsoft Entra ID de DocumentDB et les utilisateurs natifs
Quand l’authentification Microsoft Entra ID est activée sur un cluster Azure DocumentDB, vous pouvez ajouter un ou plusieurs principaux Microsoft Entra ID en tant qu’utilisateurs administrateurs à ce cluster. L’administrateur Microsoft Entra ID peut être un utilisateur Microsoft Entra ID, un principal de service ou une identité managée. Plusieurs administrateurs Microsoft Entra ID peuvent être configurés à tout moment.
Les utilisateurs d'ID Entra administratif sont créés en tant qu'entités Azure dans Microsoft.DocumentDB/mongoClusters/users et sont répliqués dans la base de données.
En outre, un ou plusieurs utilisateurs non administrateurs de Microsoft Entra ID peuvent être ajoutés à un cluster à tout moment une fois l’authentification d’ID Microsoft Entra activée. Les utilisateurs non administrateurs sont souvent utilisés pour les tâches de production en cours qui ne nécessitent pas de privilèges d’administration.
Pour Azure DocumentDB, cet accès est accordé en inscrivant les principaux Microsoft Entra sur le cluster et en les mappant aux rôles de base de données MongoDB (par exemple, readWrite sur une base de données ou root sur la admin base de données). Les principaux inscrits sont créés en tant que ressources Azure de type Microsoft.DocumentDB/mongoClusters/users dont les noms prennent la forme <cluster-name>/users/<principal-id>.
Les utilisateurs administratifs disposent de privilèges complets pour gérer le cluster et ses données, notamment des fonctionnalités complètes de gestion des utilisateurs. Les utilisateurs non administrateurs peuvent bénéficier d’autorisations en lecture-écriture ou en lecture seule sur le cluster via des rôles de base de données MongoDB spécifiques. Les rôles readWriteAnyDatabase et clusterAdmin accordent ensemble des autorisations en lecture-écriture complètes sur le cluster, notamment des privilèges pour la gestion de base de données et les opérations de base de données. Le rôle readAnyDatabase est utilisé pour accorder des autorisations en lecture seule sur le cluster. Vous ne pouvez pas attribuer de rôles readWriteAnyDatabase et clusterAdmin séparément. Ils doivent être accordés ensemble pour un accès en lecture-écriture complet.
Les utilisateurs non administrateurs (secondaires) et les principaux de sécurité reçoivent des autorisations de gestion des utilisateurs limitées sur le cluster, comme décrit dans le tableau suivant :
| Fournisseur de sécurité | Role | CréerUtilisateur | DeleteUser | UpdateUser | ListUser |
|---|---|---|---|---|---|
| Microsoft Entra ID (système d'identification de Microsoft) | Lecture-écriture (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | ❌ | ✔️ |
| Microsoft Entra ID (système d'identification de Microsoft) | Lecture seule (readAnyDatabase) | ❌ | ❌ | ❌ | ✔️ |
| DocumentDB natif | Lecture-écriture (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | Uniquement pour modifier son propre mot de passe | ✔️ |
| DocumentDB natif | Lecture seule (readAnyDatabase) | ❌ | ❌ | Uniquement pour modifier son propre mot de passe | ✔️ |
Obtenez l’identificateur unique (ID d’objet) du principal Microsoft Entra auquel vous souhaitez accorder l’accès à l’aide de l’une des commandes suivantes :
Identité de connexion actuelle
az ad signed-in-user showUne autre identité humaine à l’aide d’un nom convivial
az ad user show \ --id "<user-alias-and-domain>"Principal de service à l’aide de l’identificateur d’application
az ad sp show \ --id "<application-id>"Identité managée à l’aide du groupe de ressources et du nom
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Inscrivez le principal sur le cluster et mappez-le aux rôles de base de données MongoDB. L’exemple suivant inscrit un principal en tant qu’utilisateur
readWritesur lasalesbase de données :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- Remplacez
principalTypeparservicePrincipalpour les objets principaux d'application/service ouManagedIdentitypour les identités gérées. - Pour accorder des privilèges d’administration, utilisez-le
{"db":"admin","role":"root"}dans lerolestableau.
- Remplacez
Répertorier tous les principaux enregistrés et leurs rôles associés (niveau cluster) :
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"- La réponse contient un tableau des ressources utilisateur, chacune avec des métadonnées
identityProvideret un tableaurolesmontrant les rôles de base de données mappés.
- La réponse contient un tableau des ressources utilisateur, chacune avec des métadonnées
Obtenir les détails d’un principal inscrit spécifique (remplacement
<principal-id>) :az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewSupprimer un principal inscrit (révoquer l’accès au plan de données) :
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Créez un fichier Bicep (par exemple
register-principal.bicep) pour inscrire le principal et mapper les rôles de la base de données :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 } }Déployez le modèle Bicep pour inscrire le principal :
az deployment group create \ --resource-group "<resource-group>" \ --template-file register-principal.bicep \ --parameters clusterName="<cluster-name>" principalId="<principal-id>"Listez tous les principaux inscrits sur le cluster à l’aide de l’API REST (utile après un déploiement Bicep) :
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"Obtenez les détails d’un principal inscrit particulier créé par Bicep (remplacer
<principal-id>) :az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewSupprimez le principal en supprimant la ressource (ou déployez un modèle sans la ressource utilisateur) :
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Ouvrez le cluster Azure DocumentDB cible dans le portail Azure.
Sous Paramètres, sélectionnez Authentication.
Dans la section Authentification Microsoft Entra ID, le portail liste les principaux Microsoft Entra inscrits par ID d’objet. Utilisez cette vue pour :
- Analysez la liste des identificateurs d’objet attendus.
- Inspectez les détails d’un seul principal en sélectionnant une entrée répertoriée (ou utilisez la fonctionnalité de recherche du portail).
- Utilisez l’action Supprimer en regard d’une entrée pour révoquer immédiatement l’accès au plan de données du principal.
Pour obtenir des noms conviviaux pour les identificateurs d’objet affichés dans la liste du portail, utilisez la page Utilisateurs de la section Microsoft Entra ID . Ensuite, recherchez par ID d’objet ou nom convivial.
Obtenez l’identificateur unique (ID d’objet) du principal Microsoft Entra auquel vous souhaitez accorder l’accès à l’aide de l’une des commandes suivantes :
Identité de connexion actuelle
az ad signed-in-user showUne autre identité humaine à l’aide d’un nom convivial
az ad user show \ --id "<user-alias-and-domain>"Principal de service à l’aide de l’identificateur d’application
az ad sp show \ --id "<application-id>"Identité managée à l’aide du groupe de ressources et du nom
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Créez un fichier Terraform (par exemple
register-principal.tf) pour inscrire le principal et mapper les rôles de base de données à l’aide du fournisseur AzAPI :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 } } }Conseil / Astuce
Pour plus d’informations sur le fournisseur AzAPI, consultez la documentation du fournisseur Azure AzAPI.
- Remplacez
principalTypeparservicePrincipalpour les objets principaux d'application/service ouManagedIdentitypour les identités gérées. - Pour accorder des privilèges d’administration, utilisez-le
{"db":"admin","role":"root"}dans lerolestableau.
- Remplacez
Créez un fichier de variables nommé
register-principal.tfvars:cluster_name = "<cluster-name>" resource_group_name = "<resource-group>" principal_id = "<principal-id>" principal_type = "User" roles = [ { db = "sales" role = "readWrite" } ]Initialisez et appliquez la configuration Terraform pour inscrire le principal :
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"Répertoriez toutes les entités enregistrées pour le cluster à l’aide de l’API REST (utile après le déploiement Terraform) :
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"Obtenez les détails d’un principal inscrit spécifique créé par Terraform (remplacement
<principal-id>) :az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewSupprimez le principal en détruisant la ressource Terraform :
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform destroy --var-file="register-principal.tfvars"
Note
Un cluster Azure DocumentDB est créé avec un utilisateur DocumentDB natif intégré. Vous pouvez ajouter des utilisateurs DocumentDB administratifs natifs une fois l’approvisionnement de cluster terminé. Les utilisateurs administratifs Microsoft Entra ID ajoutés au cluster vont être en plus des utilisateurs DocumentDB administratifs natifs définis sur le même cluster. Toutes les identités d’ID Microsoft Entra d’administration sont répliquées dans la base de données.
Les identités d’ID Microsoft Entra nonadministratives sont créées dans la base de données. Quand vous lister des utilisateurs non administratifs dans la base de données, la liste contient toutes les identités d’ID Microsoft Entra administratives et non administratives et tous les utilisateurs DocumentDB natifs (non administratifs) secondaires.
Obtenir les informations d’identification du cluster
Vous pouvez vous connecter au cluster à l’aide d’un URI de connexion ou d’un objet de paramètres personnalisés à partir du pilote pour votre langue préférée. Dans les deux cas, le schéma doit être défini à mongodb+srv afin de se connecter au cluster.
L’hôte se trouve soit sur le domaine *.global.mongocluster.cosmos.azure.com, soit sur le domaine *.mongocluster.cosmos.azure.com, selon que vous utilisez le cluster actuel ou le point de terminaison global en lecture et écriture. Le +srv schéma et l’hôte *.global.* garantissent que votre client est connecté dynamiquement au cluster accessible en écriture approprié dans une configuration multi-cluster, même si une opération d’échange de région se produit. Dans une configuration à cluster unique, vous pouvez utiliser une chaîne de connexion sans discrimination.
Le tls paramètre doit également être activé. Les paramètres recommandés restants sont les paramètres de configuration recommandés.
| Choix | Valeur |
|---|---|
scheme |
mongodb+srv |
host |
<cluster-name>.global.mongocluster.cosmos.azure.com ou <cluster-name>.mongocluster.cosmos.azure.com |
tls |
true |
authMechanism |
MONGODB-OIDC |
retrywrites |
false |
maxIdleTimeMS |
120000 |
Important
Utilisez le portail Azure pour obtenir la chaîne de connexion.
Accédez au cluster Azure DocumentDB.
Sélectionnez l’option de menu de navigation chaînes de connexion.
Copiez ou enregistrez la valeur à partir du champ chaîne de connexion .
Conseil / Astuce
Les chaînes de connexion Microsoft Entra ID se trouvent dans la section Microsoft Entra ID .
Se connecter à l’aide de Microsoft Entra ID dans MongoDB Shell
Utilisez un appareil client avec MongoDB Shell installé pour vous connecter à votre cluster Azure DocumentDB à l’aide d’une identité Microsoft Entra ID.
Ouvrez un terminal sur un client avec l’interpréteur de commandes MongoDB installé.
Obtenez le nom de votre cluster Azure DocumentDB et l’ID client de l’identité cible.
Connectez-vous à l’aide de la chaîne de connexion suivante :
mongosh "mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000"
Se connecter à l’aide de Microsoft Entra ID dans Visual Studio Code
Utilisez Visual Studio Code avec l’extension DocumentDB pour vous connecter à votre cluster Azure DocumentDB à l’aide d’une identité Microsoft Entra ID.
Important
Lorsque vous vous authentifiez auprès d’un cluster Azure DocumentDB à l’aide de Microsoft Entra ID dans Visual Studio Code avec l’extension DocumentDB, shell la fonctionnalité n’est pas prise en charge. Si vous devez utiliser l’interpréteur de commandes MongoDB avec l’authentification Microsoft Entra ID, utilisez MongoDB Shell directement sur une machine cliente.
Ouvrez Visual Studio Code.
Accédez à l’extension DocumentDB dans la barre latérale.
Dans la section Connexions , sélectionnez + Nouvelle connexion....
Dans la boîte de dialogue de type de connexion, sélectionnez Chaîne de connexion.
Utilisez la chaîne de connexion suivante :
mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000Attendez que l’invite automatique utilise l’authentification Microsoft Entra ID. Entrez les informations d’identification appropriées pour votre type d’identité.
Note
Par exemple, si vous vous connectez à l’aide de votre propre identité (identité humaine), utilisez l’expérience d’authentification sans mot de passe.
Attendez la finalisation de la connexion. Une nouvelle entrée DocumentDB est ensuite ajoutée à la section Connexions du cluster.
Se connecter à l’aide de l’ID Microsoft Entra dans MongoDB Compass
Connectez-vous à votre cluster Azure DocumentDB à l’aide d’une identité Microsoft Entra ID directement avec l’application MongoDB Compass .
Démarrez l’application MongoDB Compass.
Sélectionnez + le menu Connexions pour ajouter une nouvelle connexion.
Activez le paramètre Modifier la chaîne de connexion pour l’activer dans la boîte de dialogue Nouvelle connexion .
Entrez la chaîne de connexion suivante dans la zone de saisie d’URI.
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.netOuvrez maintenant la boîte de dialogue Options de connexion avancées .
Dans la section Général , sélectionnez
mongodb+srvle schéma de chaîne de connexion.Ensuite, accédez à la section Authentification .
Vérifiez que l’option OIDC est sélectionnée.
À présent, accédez à la section Options OIDC .
Vérifiez que l’option Considérer l'endpoint cible de confiance est également sélectionnée.
Sélectionnez Enregistrer &Se connecter.
Gérer les identités secondaires (nonadministrative) de DocumentDB dans Microsoft Entra ID
Connectez-vous au cluster avec une identité d’ID Microsoft Entra administratif pour effectuer des opérations de gestion pour les identités d’ID Microsoft Entra nonadministratives.
Note
Toutes les commandes de gestion pour les utilisateurs non administrateurs sont prises en charge pour les types principaux SecurityPrincipal et user.
Connectez-vous au cluster à l’aide d’une identité d’ID Microsoft Entra administratif et à l’aide d’un outil tel que MongoDB Shell.
Ajoutez une identité Microsoft Entra ID nonadministrative avec des autorisations lecture-écriture sur le cluster à l’aide de la commande
createUser:db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Ajoutez une identité Microsoft Entra ID nonadministrative avec des autorisations en lecture seule sur le cluster avec
createUseret un autre ensemble de rôles.db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "readAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Supprimez une identité Microsoft Entra ID nonadministrative du cluster avec la
dropUsercommande.db.runCommand( { dropUser: "<entra-id-unique-identifier>" } )Répertoriez tous les utilisateurs de Microsoft Entra ID et DocumentDB natifs sur le cluster à l’aide de
userInfo.db.runCommand( { usersInfo: 1 } )Note
Tous les utilisateurs administratifs Microsoft Entra ID et DocumentDB natifs sont répliqués dans la base de données. En raison de cette réplication, la liste des utilisateurs inclut tous les utilisateurs administratifs et non administrateurs Microsoft Entra ID et utilisateurs DocumentDB natifs sur le cluster.
Se connecter à l’aide de Microsoft Entra ID dans un code
Vérifiez que vous avez correctement accordé l’accès à l’aide du code d’application et de la bibliothèque cliente appropriée pour votre langue préférée.
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);
}
}