Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Azure DocumentDB admite el identificador de Microsoft Entra junto con la autenticación nativa de DocumentDB. Cada clúster se crea con la autenticación nativa habilitada y un usuario administrativo integrado.
El control de acceso basado en roles proporciona un mecanismo centralizado para asignar y aplicar permisos a través de Microsoft Entra ID, lo que garantiza que solo las identidades autorizadas puedan realizar operaciones en los clústeres. Este enfoque simplifica la gobernanza, admite principios de privilegios mínimos y facilita la auditoría, lo que ayuda a las organizaciones a mantener la integridad operativa y el cumplimiento a medida que crecen las implementaciones. La administración del acceso en Azure DocumentDB implica dos niveles distintos:
- Acceso basado en roles de Azure para administrar el clúster como un recurso de Azure (como leer metadatos, administrar reglas de firewall y configurar puntos de conexión privados)
- Acceso a DocumentDB para leer y escribir datos en bases de datos y colecciones en el clúster.
Habilite Microsoft Entra ID para permitir que los principales de Microsoft Entra (usuarios, principios de servicio o identidades administradas) puedan autenticarse en el clúster. La autenticación de Microsoft Entra ID se implementa mediante OpenID Connect (OIDC). Los clientes presentan un token de acceso OIDC emitido por Entra al controlador de MongoDB. Un clúster debe tener habilitada la autenticación nativa; las configuraciones admitidas son solo nativas o solo autenticación de Id. de Microsoft Entra o nativa y autenticación de Id. de Microsoft Entra.
Nota:
Puede habilitar o cambiar los métodos de autenticación en un clúster en cualquier momento después del aprovisionamiento. El cambio de métodos de autenticación no requiere un reinicio del clúster y no interrumpe. Cuando se crea un clúster, se debe habilitar la autenticación nativa de DocumentDB. Puede deshabilitar la autenticación nativa después de que el clúster haya terminado de aprovisionar.
Entre las ventajas de usar el identificador de Entra de Microsoft para la autenticación se incluyen:
- Identidad uniforme e inicio de sesión en los servicios de Azure.
- Administración centralizada de credenciales, directivas de contraseña y rotación.
- Compatibilidad con métodos de autenticación sin contraseña y multifactor de Microsoft Entra ID.
- Autenticación basada en tokens para aplicaciones, lo que elimina las contraseñas almacenadas.
Cuando la autenticación de Microsoft Entra ID está habilitada, puede registrar uno o más principales de Microsoft Entra como usuarios administrativos o no administrativos en el clúster. Las entidades de seguridad registradas se convierten en recursos de Azure bajo Microsoft.DocumentDB/mongoClusters/users y se replican en la base de datos; la asignación de estas entidades de seguridad a los roles de base de datos de MongoDB concede los privilegios de base de datos correspondientes. Esta forma de autenticación admite varios tipos de entidades principales, entre los que se incluyen: usuarios humanos, principales de servicio (aplicaciones), identidades administradas asignadas al usuario y al sistema.
Nota:
Puede configurar varias identidades y tipos de identidades de Microsoft Entra ID como administradores para un clúster al mismo tiempo. Los tipos de identidad de Id. de Microsoft Entra incluyen, pero no se limitan a:
- Identidades humanas
- Identidades administradas asignadas por el usuario
- Identidades administradas asignadas por el sistema
- Identidades de carga de trabajo
Todos los tipos de identidad pueden ser administradores al mismo tiempo.
Los usuarios administrativos tienen privilegios completos para administrar el clúster y sus datos. Los usuarios no administrativos se pueden agregar para tareas de producción en curso que no requieren privilegios administrativos. Los usuarios no administrativos suelen tener roles restringidos, como acceso de solo lectura o de lectura y escritura a bases de datos específicas, pero no pueden realizar acciones administrativas en todo el clúster.
Revise las consideraciones siguientes antes de usar esta característica:
- Los métodos de autenticación en el clúster principal y en el clúster de réplica se administran de forma independiente.
- Las entidades de Microsoft Entra son persistentes en los metadatos del clúster. Si se elimina una entidad de seguridad de Microsoft Entra ID, el usuario correspondiente del clúster sigue existiendo, pero ya no puede obtener nuevos tokens. Los tokens existentes permanecen válidos hasta que expiran (normalmente hasta 90 minutos a partir de la emisión del token).
- Para revocar inmediatamente el acceso, quite la entidad de seguridad del clúster (elimine el
users/<principal-id>recurso) y quite los roles de base de datos asociados; los administradores de bases de datos deben controlar la transferencia de propiedad o limpieza de las entidades de seguridad eliminadas.
Prerrequisitos
Una suscripción de Azure
- Si no tiene ninguna suscripción a Azure, cree una cuenta gratuita
Un clúster de Azure DocumentDB existente
- Si no tiene un clúster, cree un nuevo clúster.
- Una o varias identidades existentes en Microsoft Entra ID.
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Introducción a Azure Cloud Shell.
Si prefieres ejecutar comandos de referencia CLI localmente, instala la CLI de Azure. Si estás utilizando Windows o macOS, considera ejecutar Azure CLI en un contenedor Docker. Para obtener más información, consulte Cómo ejecutar el Azure CLI en un contenedor de Docker.
Si estás utilizando una instalación local, inicia sesión en Azure CLI utilizando el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Autenticación en Azure mediante la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para obtener más información sobre las extensiones, consulte Uso y administración de extensiones con la CLI de Azure.
Ejecute az version para ver la versión y las bibliotecas dependientes que están instaladas. Para actualizar a la versión más reciente, ejecute az upgrade.
- Terraform 1.2.0 o posterior.
Administración del control de acceso basado en rol de Azure
El control de acceso basado en rol de Azure hace referencia a la capacidad de administrar recursos para un servicio de Azure sin administrar datos. Por ejemplo, el acceso basado en roles para clústeres de Azure DocumentDB podría incluir la capacidad de:
- Leer todos los metadatos de la cuenta y del recurso
- Leer y regenerar cadenas de conexión
- Administración de bases de datos y recopilaciones
- Modificación de las propiedades de la cuenta
Azure DocumentDB admite el control de acceso basado en rol de Azure para mongoCluster el tipo de recurso. Las siguientes acciones para el tipo de recurso mongoCluster están disponibles en el control de acceso basado en rol de Azure para las asignaciones individuales y la creación de roles de control de acceso basado en rol personalizado:
| Description | |
|---|---|
Microsoft.DocumentDB/mongoClusters/read |
Lee un mongoCluster recurso o enumera todos los mongoCluster recursos. |
Microsoft.DocumentDB/mongoClusters/write |
Cree o actualice las propiedades o etiquetas del recurso especificado mongoCluster . |
Microsoft.DocumentDB/mongoClusters/delete |
Elimina el recurso especificado mongoCluster . |
Microsoft.DocumentDB/mongoClusters/PrivateEndpointConnectionsApproval/action |
Administrar una conexión de punto privado del recurso mongoCluster |
Microsoft.DocumentDB/mongoClusters/listConnectionStrings/action |
Enumeración de cadenas de conexión para un recurso determinado mongoCluster |
Microsoft.DocumentDB/mongoClusters/firewallRules/read |
Lee una regla de firewall o enumera todas las reglas de firewall para el recurso especificado mongoCluster . |
Microsoft.DocumentDB/mongoClusters/firewallRules/write |
Cree o actualice una regla de firewall en un recurso especificado mongoCluster . |
Microsoft.DocumentDB/mongoClusters/firewallRules/delete |
Elimina una regla de firewall existente para el recurso especificado mongoCluster . |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/read |
Lee un proxy de conexión para el punto de conexión privado del recurso especificado mongoCluster. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/write |
Cree o actualice un proxy de conexión de punto final privado para un recurso especificado mongoCluster. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/delete |
Elimina un proxy de punto de conexión privado existente para el recurso especificado mongoCluster. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnectionProxies/validate/action |
Valida el proxy de conexión del punto privado para el recurso especificado mongoCluster. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/read |
Lee una conexión de punto de conexión privado o enumera todas las conexiones de punto de conexión privado del recurso especificado mongoCluster. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/write |
Cree o actualice un punto de conexión privado en un recurso especificado mongoCluster. |
Microsoft.DocumentDB/mongoClusters/privateEndpointConnections/delete |
Elimina un endpoint privado existente para el recurso especificado mongoCluster. |
Microsoft.DocumentDB/mongoClusters/privateLinkResources/read |
Lee un recurso de vínculo privado o enumera todos los recursos de vínculo privado para el recurso especificado mongoCluster . |
Microsoft.DocumentDB/mongoClusters/users/read |
Lee un usuario o enumera todos los usuarios para el recurso especificado mongoCluster . |
Microsoft.DocumentDB/mongoClusters/users/write |
Cree o actualice un usuario en un recurso especificado mongoCluster . |
Microsoft.DocumentDB/mongoClusters/users/delete |
Elimina un usuario existente para el recurso especificado mongoCluster . |
Abrir un nuevo terminal.
Inicie sesión en la CLI de Azure.
Use
az group showpara obtener los metadatos del grupo de recursos actual.az group show \ --name "<name-of-existing-resource-group>"Observe la salida del comando anterior. Registre el valor de la
idpropiedad para este grupo de recursos, ya que es necesario usar en el paso siguiente.{ "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example", "location": "westus", "name": "msdocs-identity-example", "type": "Microsoft.Resources/resourceGroups" }Nota:
En este ejemplo, el
idvalor sería/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example. En este ejemplo se usan datos ficticios y el identificador sería distinto de este ejemplo. Esta cadena es un ejemplo truncado de la salida.Cree un nuevo archivo JSON denominado role-definition.json. En el archivo, cree esta definición de recurso especificando los valores enumerados aquí. En la lista
AssignableScopes, agregue la propiedadiddel grupo de recursos registrado en el paso anterior.{ "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" ] }Nota:
En este ejemplo se usa el
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-examplevalor registrado en el paso anterior. El identificador de recurso real podría ser diferente.Cree una nueva definición de roles mediante
az role definition create. Use el archivo role-definition.json como entrada para el--role-definitionargumento .az role definition create \ --role-definition role-definition.jsonRevise la salida del comando de creación de definiciones. La salida contiene el identificador único de la definición de rol en la
idpropiedad . Registre este valor como es necesario para usarlo en el paso de asignación más adelante en esta guía.{ "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" }Nota:
En este ejemplo, el
idvalor sería/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. En este ejemplo se usan datos ficticios y el identificador sería distinto de este ejemplo. Este ejemplo es un subconjunto del json típico generado a partir de la implementación para mayor claridad.
Abrir un nuevo terminal.
Inicie sesión en la CLI de Azure.
Cree un nuevo archivo de Bicep para definir tu rol. Asigne al archivo el nombre control-plane-role-definition.bicep. Agregue estos elementos
actionsa la definición:Description Microsoft.DocumentDb/mongoClusters/*Habilita todas las acciones posibles. 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.idImplemente la plantilla de Bicep usando
az deployment group create. Especifique el nombre de la plantilla de Bicep y el grupo de recursos de Azure.az deployment group create \ --resource-group "<name-of-existing-resource-group>" \ --template-file control-plane-role-definition.bicepRevise la salida de la implementación. La salida contiene el identificador único de la definición de rol en la
properties.outputs.definitionId.valuepropiedad . Registre este valor como es necesario para usarlo en el paso de asignación más adelante en esta guía.{ "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" } } } }Nota:
En este ejemplo, el
idvalor sería/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/msdocs-identity-example/providers/Microsoft.Authorization/roleDefinitions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1. En este ejemplo se usan datos ficticios y el identificador sería distinto de este ejemplo. Este ejemplo es un subconjunto del json típico generado a partir de la implementación para mayor claridad.Cree un nuevo archivo de Bicep para definir la asignación de roles. Asigne al archivo el nombre 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 } }Cree un nuevo archivo de parámetros de Bicep denominado control-plane-role-assignment.
bicepparam. En este archivo de parámetros, asigne los identificadores de definición de roles registrados anteriormente al parámetroroleDefinitionIdy el identificador único de su identidad al parámetroidentityId.using './control-plane-role-assignment.bicep' param roleDefinitionId = '<id-of-new-role-definition>' param identityId = '<id-of-existing-identity>'Implemente esta plantilla de Bicep mediante
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
Inicie sesión en Azure Portal (https://portal.azure.com).
Escriba Grupo de recursos en la barra de búsqueda global.
En Servicios, seleccione Grupos de recursos.
En el panel Grupos de recursos, seleccione el grupo de recursos existente.
En el panel del grupo de recursos, seleccione Control de acceso (IAM) en el menú servicio.
En el panel Control de acceso (IAM), seleccione Agregar. A continuación, seleccione Agregar rol personalizado.
En el panel Aspectos básicos , configure las siguientes opciones y, a continuación, seleccione Siguiente:
Importancia Nombre de rol personalizado Azure DocumentDB RBAC OwnerDescripción Can perform all Azure role-based access control actions for Azure DocumentDB clusters.Permisos de línea base Comienzo desde cero En el panel Permisos , seleccione Agregar permisos. A continuación, busque
DocumentDBen el cuadro de diálogo permisos. Por último, seleccione la opción Microsoft.DocumentDB/mongoClusters .En el cuadro de diálogo Permisos, seleccione todas las acciones para
Microsoft.DocumentDB/mongoClusters. A continuación, seleccione Agregar para volver al panel *Permisos .De nuevo en el panel Permisos , observe la lista de permisos. A continuación, seleccione Revisar y crear.
En el panel Revisar y crear , revise las opciones especificadas para la nueva definición de roles. Por último, seleccione Crear.
Espere a que el portal termine de crear la definición de roles.
En el panel Control de acceso (IAM), seleccione Agregar y, a continuación, Agregar asignación de roles.
En el panel Rol , busque
Azure DocumentDBy seleccione el rol Propietario de RBAC de Azure DocumentDB creado anteriormente en esta guía. Después, seleccione Siguiente.Sugerencia
Opcionalmente, puede filtrar la lista de roles para incluir solo roles personalizados.
En el panel Miembros , seleccione la opción Seleccionar miembros . En el cuadro de diálogo miembros, seleccione la identidad que desea conceder a este nivel de acceso para los clústeres de Azure DocumentDB y, a continuación, use la opción Seleccionar para confirmar su elección.
De nuevo en el panel Miembros , revise los miembros seleccionados y, a continuación, seleccione Revisar y asignar.
En el panel Revisar y asignar , revise las opciones especificadas para la nueva asignación de roles. Por último, seleccione Revisar y asignar.
Espere a que el portal termine de crear la asignación de roles.
Abrir un nuevo terminal.
Inicie sesión en la CLI de Azure.
Compruebe la suscripción de Azure de destino.
az account showCree un nuevo archivo de Terraform para definir la definición de roles. Asigne al archivo el nombre control-plane-role-definition.
tf. Agregue estos elementosactionsa la definición:Description Microsoft.DocumentDb/mongoClusters/*Habilita todas las acciones posibles. 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 }Inicialice la implementación de Terraform.
terraform init --upgradeCree un plan de ejecución para la definición de roles y guárdelo en un archivo denominado role-definition.tfplan.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform plan --out "role-definition.tfplan"Aplique el plan de ejecución para implementar la definición de roles en Azure.
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform apply "role-definition.tfplan"Revise la salida de la implementación. La salida contiene el identificador único de la definición de rol en la
definition_idpropiedad . Registre este valor como es necesario para usarlo en el paso de asignación más adelante en esta guía.Cree un nuevo archivo de Terraform para definir la asignación de roles. Asigne al archivo el nombre 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 }Cree un nuevo archivo de variables de Terraform denominado control-plane-role-assignment.tfvars. En este archivo de variables, asigne los identificadores de definición de roles registrados previamente a la variable
role_definition_idy el identificador único de su identidad a la variableidentity_id.role_definition_id = "<id-of-new-role-definition>" identity_id = "<id-of-existing-identity>"Inicialice y aplique esta configuración de 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"
Habilitación de la autenticación de Microsoft Entra ID
Al crear un clúster de Azure DocumentDB, el clúster se configura para usar únicamente la autenticación nativa de forma predeterminada. Para habilitar la autenticación mediante microsoft Entra ID, active el método de autenticación Microsoft Entra ID y agregue identidades de Id. de Microsoft Entra al clúster.
Obtenga los detalles de la cuenta que ha iniciado sesión actualmente con
az ad signed-in-user.az ad signed-in-user showEl comando genera una respuesta JSON que contiene varios campos.
{ "@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>" }Sugerencia
Registre el valor del
idcampo. En este ejemplo, ese valor seríaaaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. A continuación, este valor se puede usar en varios scripts para conceder permisos de control de acceso basado en rol de la cuenta actual a los recursos de Azure. Si usa una identidad administrada en su lugar, puede obtener elidpara esa identidad administrada mediante el comandoaz identity show.Habilite la autenticación de Microsoft Entra ID en el clúster actualizando el recurso del clúster para incluir
MicrosoftEntraIDen el arrayauthConfig.allowedModes.az resource patch \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --properties '{"authConfig":{"allowedModes":["MicrosoftEntraID","NativeAuth"]}}' \ --latest-include-previewNota:
Reemplace
<resource-group>y<cluster-name>con sus valores.Compruebe que el cambio se aplicó mediante la lectura de la
authConfigpropiedad en el clúster medianteaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNota:
La salida debe incluir la
allowedModeslista. Si Microsoft Entra ID se ha habilitado correctamente, la matriz contiene tantoNativeAuthcomoMicrosoftEntraID.
(Opcional) Obtenga el identificador único de la entidad de seguridad de Microsoft Entra que planea registrar en el clúster. Puede obtenerlo con la CLI de Azure mediante uno de los siguientes comandos:
Identidad de sesión actual
az ad signed-in-user showOtra identidad humana con el nombre amigable
az ad user show \ --id "<user-alias-and-domain>"Entidad de servicio mediante el identificador de aplicación
az ad sp show \ --id "<application-id>"Identidad administrada mediante el grupo de recursos y el nombre
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Cree una plantilla de Bicep pequeña que actualice el clúster
authConfigpara incluir el identificador de Microsoft Entra (guardar comoenable-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' ] } } }Implemente la plantilla para actualizar el clúster:
az deployment group create \ --resource-group "<resource-group>" \ --template-file enable-entra-id.bicep \ --parameters clusterName="<cluster-name>"Compruebe la
authConfigpropiedad del clúster medianteaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNota:
La salida debe incluir la
allowedModeslista. Si Microsoft Entra ID se ha habilitado correctamente, la matriz contiene tantoNativeAuthcomoMicrosoftEntraID.
En el panel Inicio de Azure Portal, busque y seleccione la opción Id. de Entra de Microsoft .
Sugerencia
Si esta opción no aparece, seleccione Más servicios y busque Microsoft Entra ID con el término de búsqueda "Entra".
En el panel Información general del inquilino de Microsoft Entra ID, seleccione Usuarios dentro de la sección Administrar del menú del servicio.
En la lista de usuarios, seleccione la identidad (usuario) sobre la que desea obtener más detalles.
Nota:
En esta captura de pantalla se ilustra un usuario de ejemplo denominado "Kai Carter" con un principal de
kai@adventure-works.com.En el panel de detalles del usuario específico, observe el valor de la propiedad ID de objeto.
Sugerencia
Registre el valor de la propiedad Id. de objeto . En este ejemplo, ese valor sería
aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb. A continuación, este valor se puede usar en varios scripts para conceder permisos de control de acceso basado en rol de la cuenta actual a los recursos de Azure. Los pasos son similares si usa una identidad administrada.Vaya al recurso de clúster de Azure DocumentDB existente.
En el menú del clúster, en Configuración, seleccione Autenticación.
En la sección Métodos de autenticación , seleccione Native DocumentDB y Microsoft Entra ID para habilitar la autenticación de Id. de Microsoft Entra junto con la autenticación nativa.
Seleccione Guardar para conservar el cambio.
La sección Métodos de autenticación ahora debe enumerar NativeAuth y MicrosoftEntraID como métodos habilitados.
(Opcional) Obtenga el identificador único de la entidad de seguridad de Microsoft Entra que planea registrar en el clúster. Puede obtenerlo con la CLI de Azure mediante uno de los siguientes comandos:
Identidad de sesión actual
az ad signed-in-user showOtra identidad humana con el nombre amigable
az ad user show \ --id "<user-alias-and-domain>"Entidad de servicio mediante el identificador de aplicación
az ad sp show \ --id "<application-id>"Identidad administrada mediante el grupo de recursos y el nombre
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Cree un archivo de configuración de Terraform para habilitar la autenticación de Microsoft Entra ID en su clúster existente. Guarde el archivo como 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 }Sugerencia
Para obtener más información sobre las opciones que usan el recurso, consulte
azurerm_mongo_clusterazurermdocumentación del proveedor en Terraform Registry.Cree un archivo de variables denominado enable-entra-id.tfvars con los detalles del clúster:
cluster_name = "<cluster-name>" resource_group_name = "<resource-group>"Inicialice y aplique la configuración de Terraform para habilitar la autenticación de 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"Compruebe la
authConfigpropiedad del clúster medianteaz resource show.az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>" \ --resource-type "Microsoft.DocumentDB/mongoClusters" \ --query "properties.authConfig" \ --latest-include-previewNota:
La salida debe incluir la
allowedModeslista. Si Microsoft Entra ID se ha habilitado correctamente, la matriz contiene tantoNativeAuthcomoMicrosoftEntraID.
Gestión de identidades administrativas de Microsoft Entra ID y usuarios nativos de DocumentDB
Cuando la autenticación de Microsoft Entra ID está habilitada en un clúster de Azure DocumentDB, puede agregar una o varias entidades de Microsoft Entra ID como usuarios de administrador a ese clúster. El administrador del identificador de Microsoft Entra puede ser un usuario de Microsoft Entra ID, una entidad de servicio o una identidad administrada. Se pueden configurar varios administradores de id. de Microsoft Entra en cualquier momento.
Los usuarios de Entra ID administrativos se crean como entidades de Azure en Microsoft.DocumentDB/mongoClusters/users y se replican en la base de datos.
Además, uno o varios usuarios no administrativos de Id. de Entra de Microsoft se pueden agregar a un clúster en cualquier momento una vez habilitada la autenticación de Id. de Microsoft Entra. Los usuarios no administrativos suelen usarse para tareas de producción en curso que no requieren privilegios administrativos.
Para Azure DocumentDB, este acceso se concede al registrar principios de Microsoft Entra en el clúster y asignarlos a roles de base de datos de MongoDB (por ejemplo, readWrite en una base de datos o root en la base de datos admin). Las entidades de servicio se crean como recursos de Azure de tipo Microsoft.DocumentDB/mongoClusters/users cuyos nombres toman la forma <cluster-name>/users/<principal-id>.
Los usuarios administrativos tienen privilegios completos para administrar el clúster y sus datos, incluidas las funcionalidades completas de administración de usuarios. A los usuarios no administrativos se les pueden conceder permisos de lectura y escritura o de solo lectura en el clúster a través de roles de base de datos específicos de MongoDB. Los roles readWriteAnyDatabase y clusterAdmin conceden permisos completos de lectura y escritura en el clúster, incluidos privilegios para las operaciones de base de datos y administración de bases de datos. El rol readAnyDatabase se usa para conceder permisos de solo lectura en el clúster. No se pueden asignar roles readWriteAnyDatabase y clusterAdmin por separado; se deben conceder juntos para el acceso de lectura y escritura completo.
A los usuarios no administrativos (secundarios) y a las entidades de seguridad se les conceden permisos de administración de usuarios limitados en el clúster, como se describe en la tabla siguiente:
| Proveedor de seguridad | Rol | CrearUsuario | DeleteUser | UpdateUser | ListUser |
|---|---|---|---|---|---|
| Microsoft Entra ID | Lectura y escritura (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | ❌ | ✔️ |
| Microsoft Entra ID | Solo lectura (readAnyDatabase) | ❌ | ❌ | ❌ | ✔️ |
| DocumentDB nativo | Lectura y escritura (readWriteAnyDatabase, clusterAdmin) | ❌ | ❌ | Solo para cambiar su propia contraseña | ✔️ |
| DocumentDB nativo | Solo lectura (readAnyDatabase) | ❌ | ❌ | Solo para cambiar su propia contraseña | ✔️ |
Obtenga el identificador único (id. de objeto) de la entidad de Microsoft Entra a la que desea conceder acceso mediante uno de los siguientes comandos:
Identidad de sesión actual
az ad signed-in-user showOtra identidad humana con el nombre amigable
az ad user show \ --id "<user-alias-and-domain>"Entidad de servicio mediante el identificador de aplicación
az ad sp show \ --id "<application-id>"Identidad administrada mediante el grupo de recursos y el nombre
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Registre el principal en el clúster y asígnelo a los roles de base de datos de MongoDB. El siguiente ejemplo registra un principal como usuario
readWriteen la base de datossales.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- Reemplazar
principalTypeporservicePrincipalpara los principales de aplicaciones o servicios oManagedIdentitypara las identidades administradas. - Para conceder privilegios administrativos, use
{"db":"admin","role":"root"}en larolesmatriz.
- Reemplazar
Enumerar todos los principales registrados y sus roles asignados (vista de nivel de clúster):
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 respuesta contiene una matriz de recursos de usuario, cada una con
identityProvidermetadatos y unarolesmatriz que muestra los roles de base de datos asignados.
- La respuesta contiene una matriz de recursos de usuario, cada una con
Obtenga los detalles de un principal registrado específico (reemplace
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewEliminar un principal registrado (revocar acceso al plano de datos):
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Cree un archivo de Bicep (por ejemplo
register-principal.bicep) para registrar las entidades de seguridad y asignar los roles de la base de datos: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 } }Implemente la plantilla de Bicep para registrar la entidad de seguridad:
az deployment group create \ --resource-group "<resource-group>" \ --template-file register-principal.bicep \ --parameters clusterName="<cluster-name>" principalId="<principal-id>"Enumerar todas las entidades de seguridad registradas del clúster mediante la API de REST, lo cual es útil después de la implementación con 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"Obtenga los detalles de una entidad de seguridad registrada específica creado por Bicep (reemplace
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewQuite el principal mediante la eliminación del recurso (o implemente una plantilla sin el recurso del usuario):
az resource delete \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-preview
Abra el clúster de Azure DocumentDB de destino en Azure Portal.
En Configuración, seleccione Autenticación.
En la sección autenticación de Microsoft Entra ID, el portal muestra las entidades de seguridad registradas de Microsoft Entra por identificador de objeto. Utilice esta vista para:
- Examine la lista para ver los identificadores de objeto esperados.
- Inspeccione los detalles de una sola entidad principal seleccionando una entrada enumerada (o use la función de búsqueda del portal).
- Utiliza la acción Quitar junto a una entrada para revocar inmediatamente el acceso al plano de datos de ese principal.
Para obtener nombres comprensibles para los identificadores de objeto que se muestran en la lista del portal, use la página Usuarios de la sección Microsoft Entra ID. A continuación, busque por identificador de objeto o nombre amigable.
Obtenga el identificador único (id. de objeto) de la entidad de Microsoft Entra a la que desea conceder acceso mediante uno de los siguientes comandos:
Identidad de sesión actual
az ad signed-in-user showOtra identidad humana con el nombre amigable
az ad user show \ --id "<user-alias-and-domain>"Entidad de servicio mediante el identificador de aplicación
az ad sp show \ --id "<application-id>"Identidad administrada mediante el grupo de recursos y el nombre
az identity show \ --resource-group "<resource-group>" \ --name "<managed-identity-name>"
Cree un archivo de Terraform (por ejemplo
register-principal.tf) para registrar la entidad de seguridad y asignar roles de base de datos utilizando el proveedor 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 } } }Sugerencia
Para más información sobre el proveedor AzAPI, consulte la documentación del proveedor de Azure AzAPI.
- Reemplazar
principalTypeporservicePrincipalpara los principales de aplicaciones o servicios oManagedIdentitypara las identidades administradas. - Para conceder privilegios administrativos, use
{"db":"admin","role":"root"}en larolesmatriz.
- Reemplazar
Cree un archivo de variables denominado
register-principal.tfvars:cluster_name = "<cluster-name>" resource_group_name = "<resource-group>" principal_id = "<principal-id>" principal_type = "User" roles = [ { db = "sales" role = "readWrite" } ]Inicie y aplique la configuración de Terraform para registrar la entidad de seguridad:
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"Enumere todos los principales registrados del clúster mediante la API REST (útil después de la implementación de 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"Obtenga detalles de un principal registrado específico creado por Terraform (reemplace
<principal-id>):az resource show \ --resource-group "<resource-group>" \ --name "<cluster-name>/users/<principal-id>" \ --resource-type "Microsoft.DocumentDB/mongoClusters/users" \ --latest-include-previewElimine el principal destruyendo el recurso de Terraform:
ARM_SUBSCRIPTION_ID=$(az account show --query id --output tsv) terraform destroy --var-file="register-principal.tfvars"
Nota:
Se crea un clúster de Azure DocumentDB con un usuario nativo de DocumentDB administrativo integrado. Puede agregar más usuarios de DocumentDB administrativos nativos después de completar el aprovisionamiento del clúster. Los usuarios administrativos de Microsoft Entra ID agregados al clúster se agregarán además de los usuarios nativos de DocumentDB administrativos definidos en el mismo clúster. Todas las identidades administrativas de Microsoft Entra ID se replican en la base de datos.
Las identidades no administrativas de Microsoft Entra ID se crean en la base de datos. Al enumerar usuarios no administrativos en la base de datos, la lista contiene todas las identidades administrativas y no administrativas de Microsoft Entra ID y todos los usuarios nativos secundarios (no administrativos) de DocumentDB.
Obtener credenciales del clúster
Puede conectarse al clúster mediante un URI de conexión o un objeto de configuración personalizado desde el controlador para su idioma preferido. En cualquiera de las dos opciones, el esquema debe establecerse en mongodb+srv para conectarse al clúster. El host está en el dominio *.global.mongocluster.cosmos.azure.com o *.mongocluster.cosmos.azure.com dependiendo de si estás usando el clúster actual o el punto de conexión global de lectura y escritura. El esquema +srv y el host *.global.* garantizan que el cliente esté conectado dinámicamente al clúster grabable adecuado en una configuración de varios clústeres incluso si se produce una operación de intercambio de región. En una configuración de un solo clúster, puede utilizar cualquiera de las cadenas de conexión indistintamente.
La tls configuración también debe estar habilitada. Las opciones de configuración recomendadas restantes son las mejores prácticas.
| Opción | Importancia |
|---|---|
scheme |
mongodb+srv |
host |
<cluster-name>.global.mongocluster.cosmos.azure.com o <cluster-name>.mongocluster.cosmos.azure.com |
tls |
true |
authMechanism |
MONGODB-OIDC |
retrywrites |
false |
maxIdleTimeMS |
120000 |
Importante
Use Azure Portal para obtener la cadena de conexión.
Vaya al clúster de Azure DocumentDB.
Seleccione la opción de menú de navegación Cadenas de conexión.
Copie o registre el valor del campo Cadena de conexión .
Sugerencia
Las cadenas de conexión de Microsoft Entra ID se encuentran en la sección Microsoft Entra ID .
Conexión mediante el identificador de Entra de Microsoft en el shell de MongoDB
Use un dispositivo cliente con el Shell de MongoDB instalado para conectarse al clúster de Azure DocumentDB mediante una identidad de Microsoft Entra ID.
Abra un terminal en un cliente con el shell de MongoDB instalado.
Obtenga el nombre del clúster de Azure DocumentDB y el identificador de cliente de la identidad de destino.
Conéctese mediante la siguiente cadena de conexión:
mongosh "mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000"
Conexión mediante el identificador de Entra de Microsoft en Visual Studio Code
Utilice Visual Studio Code con la extensión DocumentDB para conectarse al clúster de Azure DocumentDB mediante una identidad de Microsoft Entra ID.
Importante
Al autenticarse en un clúster de Azure DocumentDB mediante Microsoft Entra ID en Visual Studio Code con la extensión DocumentDB, la funcionalidad shell no es compatible. Si necesita usar MongoDB Shell con la autenticación de Microsoft Entra ID, use MongoDB Shell directamente en un equipo cliente.
Abre Visual Studio Code.
Navegue por la extensión documentDB en la barra lateral.
En la sección Conexiones , seleccione + Nueva conexión....
En el cuadro de diálogo Tipo de conexión, seleccione Cadena de conexión.
Use la siguiente cadena de conexión:
mongodb+srv://<client-id>@<cluster-name>.global.mongocluster.cosmos.azure.com/?tls=true&authMechanism=MONGODB-OIDC&retrywrites=false&maxIdleTimeMS=120000Espere a que se muestre el mensaje automático para usar la autenticación de Microsoft Entra ID. Introduzca las credenciales adecuadas para el tipo de identidad.
Nota:
Por ejemplo, si inicia sesión con su propia identidad (una identidad humana), use la experiencia de autenticación sin contraseña.
Espere a que finalice la conexión. A continuación, se agrega una nueva entrada de DocumentDB a la sección Conexiones del clúster.
Conexión mediante el identificador de Microsoft Entra en MongoDB Compass
Conéctese al clúster de Azure DocumentDB usando una identidad de Microsoft Entra ID directamente con la aplicación MongoDB Compass.
Inicie la aplicación MongoDB Compass.
Seleccione + en el menú Conexiones para agregar una nueva conexión.
Cambie la opción Editar cadena de conexión para habilitar en el cuadro de diálogo Nueva conexión .
Escriba la siguiente cadena de conexión en el cuadro de entrada del 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.netAhora, abra el cuadro de diálogo Opciones de conexión avanzadas .
En la sección General , seleccione
mongodb+srvpara el esquema de cadena de conexión.A continuación, vaya a la sección Autenticación .
Asegúrese de que la opción OIDC está seleccionada.
Ahora, vaya a la sección Opciones de OIDC .
Asegúrese de que también está seleccionada la opción Considerar el punto de conexión de destino como confiable.
Seleccione Guardar y conectar.
Administrar identidades secundarias (no administrativas) de DocumentDB de Microsoft Entra ID
Inicie sesión en el clúster con una identidad administrativa de Microsoft Entra ID para realizar operaciones de administración para identidades de identificador de Microsoft Entra no administrativas.
Nota:
Todos los comandos de administración para los usuarios no administrativos se admiten para los tipos principales SecurityPrincipal y user.
Inicie sesión en el clúster con una identidad administrativa de Microsoft Entra ID y use una herramienta como MongoDB Shell.
Agregue una identidad de Microsoft Entra ID no administrativa con permisos de lectura y escritura en el clúster mediante el comando
createUser.db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "clusterAdmin", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Agregue una identidad de Microsoft Entra ID no administrativa con permisos de solo lectura en el clúster
createUsercon un conjunto diferente de roles.db.runCommand( { createUser: "<entra-id-unique-identifier>", roles: [ { role: "readAnyDatabase", db: "admin" } ], customData: { "IdentityProvider": { "type": "MicrosoftEntraID", "properties": { "principalType": "user" } } } } )Quite una identidad de Microsoft Entra ID no administrativa del clúster con el comando
dropUser.db.runCommand( { dropUser: "<entra-id-unique-identifier>" } )Enumere todos los usuarios de Microsoft Entra ID y nativos de DocumentDB en el clúster mediante
userInfo.db.runCommand( { usersInfo: 1 } )Nota:
Todos los usuarios administrativos de Microsoft Entra ID y DocumentDB nativos se replican en la base de datos. Debido a esta replicación, la lista de usuarios incluye todos los usuarios administrativos y no administrativos de Microsoft Entra ID y usuarios nativos de DocumentDB en el clúster.
Conexión mediante Microsoft Entra ID en el código
Valide que ha concedido acceso correctamente mediante código de aplicación y la biblioteca cliente adecuada para su idioma preferido.
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);
}
}