Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Administrar claves de clientes con Azure Key Vault (Autenticación sin secretos)

Nota

Esta característica no está disponible para ninguna de las siguientes implementaciones:

  • Clústeres gratuitos

  • Clústeres Flex

Para aprender más, Límites.

Atlas admite la autenticación sin secretos para utilizar Azure Key Vault (AKV) con cifrado en reposo (EAR). Con este modelo, no necesitas proporcionar a Atlas credenciales estáticas de larga duración (ID de inquilino, ID de cliente y Secreto de cliente). En cambio, autoriza a un Principal de Servicio de Azure gestionado por Atlas en su inquilino de Azure, y Atlas se autentica en AKV usando OAuth 2 de corta duración.0 tokens de acceso que Azure Active Directory (Azure AD) emite.

Este enfoque:

  • Elimina la necesidad de crear, almacenar y rotar secretos de cliente en Atlas.

  • Centraliza el control de acceso completamente dentro de Azure utilizando Azure RBAC o políticas de acceso Key Vault.

  • Preserva el comportamiento existente de EAR para tus clústeres y aplicaciones. Solo el mecanismo de autenticación cambia

Secretless EAR se basa en Azure AD y Azure Key Vault como el límite de seguridad. Atlas no almacena secretos administrados por el cliente reutilizables y, en su lugar, utiliza tokens emitidos por Azureen tiempo de ejecución. El acceso se aplica utilizando permisos de mínimo privilegio y puedes remover los permisos de Azure para revocarlos inmediatamente.

Atlas utiliza la asignación directa de roles a un principal de servicio gestionado por Atlas para un modelo de autenticación sencillo y seguro.

Para habilitar claves administradas por el cliente con AKV para un proyecto MongoDB, debe tener:

  • Un clúster M10 o más grande.

  • La cuenta de Azure y la clave de cifrado en su AKV.

    Para obtener información sobre cómo configurar estos componentes de Azure, consulte la Documentación de Azure.

    Atlas utiliza estos recursos al habilitar el cifrado en reposo para un clúster en el proyecto Atlas.

  • Permisos en Azure para:

    • Registrar un Service Principal empresarial en tu tenant. Este requisito previo requiere permisos de Microsoft Entra ID para agregar o administrar aplicaciones empresariales, como Administrador de Aplicaciones, Administrador de Aplicaciones en la Nube o Administrador Global.

      Para obtener más información, consulte Inicio rápido: Agregar una aplicación empresarial.

    • Acceso a la clave Key Vault utilizando una de las siguientes opciones:

  • Acceso de Propietario de Proyecto en Atlas para el proyecto en el que deseas habilitar el Cifrado en reposo.

Para usar una clave gestionada por el cliente, almacenada en AKV para EAR, el Service Principal gestionado por Atlas debe tener permiso para realizar operaciones criptográficas en la clave específica del Key Vault.

Los permisos clave requeridos incluyen:

  • get

  • encrypt

  • decrypt

Debe delimitar los permisos lo más estrechamente posible y concederlos utilizando una de las siguientes opciones:

Para obtener más información, consulte Inicio rápido: Agregar una aplicación empresarial.

Para configurar el cifrado en reposo (EAR) con autenticación sin secretos, debe:

  1. Cree un Principal de Servicio Azure administrado por Atlas.

  2. Otorga acceso de Principal de servicio a la clave de Key Vault.

  3. Configura EAR para usar el Principal de servicio.

Crea un principal de servicio Azure en tu tenant para la aplicación Azure propiedad de Atlas y regístrala con Atlas usando la API de acceso al proveedor de la nube. Atlas devuelve un roleId que se utiliza al habilitar EAR.

Atlas utiliza la siguiente identidad de aplicación Azure:

atlasAzureAppId: 9efedfcc-2eca-4b27-a613-0cad1e114cb7
1

Ejecute el siguiente comando para recuperar el ID del inquilino del recurso en el que existirá el principal de servicio:

az account show --query tenantId -o tsv
2

Si ya existe una entidad de servicio para la aplicación Atlas, ejecute el siguiente comando para localizarla:

az ad sp list --filter "appId eq '9efedfcc-2eca-4b27-a613-0cad1e114cb7'"

Si no existe, ejecuta el siguiente comando para crearlo:

az ad sp create --id 9efedfcc-2eca-4b27-a613-0cad1e114cb7

Desde la salida, copie el campo id, que es el ID del objeto principal de servicio que requiere Atlas.

3

Utilice la API de Acceso a proveedores de nube:

Endpoint:

POST /api/atlas/v2/groups/{groupId}/cloudProviderAccess

Ejemplo de cuerpo de solicitud:

{
"providerName": "AZURE",
"tenantId": "<azure-tenant-id>",
"servicePrincipalId": "<service-principal-object-id>",
"atlasAzureAppId": "9efedfcc-2eca-4b27-a613-0cad1e114cb7"
}

Atlas aprovisiona y administra el Principio de Servicio y devuelve un valor id, que es el roleId requerido cuando se configura EAR.

Autoriza al Principal de Servicio administrado por Atlas para realizar operaciones criptográficas en la clave de Key Vault utilizada para EAR.

Puedes conceder acceso utilizando Azure RBAC o políticas de acceso de Key Vault.

Para conceder acceso mediante Azure RBAC:

1

Ejecuta el siguiente comando:

az role assignment create \
--assignee-object-id "$SERVICE_PRINCIPAL_OBJECT_ID" \
--assignee-principal-type ServicePrincipal \
--role "Reader" \
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$KEY_VAULT_NAME"
2

Ejecuta el siguiente comando:

az role assignment create \
--assignee-object-id "$SERVICE_PRINCIPAL_OBJECT_ID" \
--assignee-principal-type ServicePrincipal \
--role "Key Vault Crypto User" \
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$KEY_VAULT_NAME"

Nota

También puedes utilizar un rol personalizado, siempre que otorgue permisos de clave equivalentes.

Si tu clave Key Vault usa políticas de acceso, ejecuta el siguiente comando para otorgar permisos clave directamente:

az keyvault set-policy \
--subscription "$SUBSCRIPTION_ID" \
--resource-group "$RESOURCE_GROUP" \
--name "$KEY_VAULT_NAME" \
--object-id "$SERVICE_PRINCIPAL_OBJECT_ID" \
--key-permissions get encrypt decrypt wrapKey unwrapKey

Después de registrar y autorizar la entidad de servicio en Azure, actualice la configuración de EAR con el roleId que devolvió la API de acceso del proveedor de nube.

1
  1. Si aún no aparece, se debe seleccionar la organización que contiene el proyecto en el menú Organizations de la barra de navegación.

  2. Si aún no se muestra, seleccione su proyecto en el menú Projects de la barra de navegación.

  3. En la barra lateral, haz clic en Database & Network Access en la sección Security.

  4. En la barra lateral, haga clic en Advanced.

    La página Avanzada se muestra.

2
3
4

Atlas admite dos métodos de autenticación para AKV:

5

ID de suscripción

Introduce el Subscription ID del Key Vault.

Nombre del grupo de recursos

Ingrese el Resource Group nombre de un Azure Resource Group que contenga el Key Vault.

Nombre del Key Vault

Introduzca el nombre del almacén de claves. Asegúrese de que cuente con las políticas de acceso necesarias. Para obtener más información,consulte Acceso requerido.

Nota

No puedes modificar la configuración de AKV aquí después de habilitar y configurar conexiones de nodos privados a tu AKV.

6

Identificador clave

Introduzca la URL completa de la clave creada en Key Vault.

IMPORTANTE: El identificador de clave debe proporcionarse en el Azure general formato completo:

https://{keyvault-name}.vault.azure.net/{object-type}/{object-name}/{object-version}
7

Para aprender más, consulta Habilitar y configurar conexiones de nodos privados para un Proyecto

8

Si configuró Atlas mediante la API de administración de Atlas para comunicarse con AKV mediante Azure Private Link y garantizar que todo el tráfico entre Atlas y Key Vault se realice a través de las interfaces de red privada de Azure, Atlas establece el Require Private Networking estado Active en. Si el estado Inactive es, puede, opcionalmente, completar los pasos para habilitar y configurar conexiones de punto de conexión privado para un proyecto si desea que Atlas use conexiones de punto de conexión privado para su AKV.

9

Atlas muestra un banner en la consola de Atlas durante el proceso de cifrado.

Endpoint:

PATCH /api/atlas/v2/groups/{groupId}/encryptionAtRest

Ejemplo de cuerpo de solicitud:

{
"azureKeyVault": {
"enabled": true,
"roleId": "<atlas-managed-roleId>",
"subscriptionID": "<subscription-id>",
"resourceGroupName": "<resource-group>",
"keyVaultName": "<key-vault-name>",
"keyIdentifier": "https://<vault>.vault.azure.net/keys/<key>/<version>",
"azureEnvironment": "AZURE"
}
}

Tras esta actualización, Atlas se autentica en AKV usando tokens de Azure AD de corta duración en lugar de credenciales estáticas.

Si tu proyecto ya utiliza credenciales estáticas (tenantId, clientId, secret), puedes migrar sin tiempo de inactividad del clúster.

  1. Cree un Service Principal gestionado por Atlas.

  2. Conceda permisos para Key Vault.

  3. Actualizar la configuración EAR con el nuevo roleId.

Si la validación falla, Atlas continúa usando credenciales estáticas.

Si la validación es exitosa, Atlas remueve las credenciales estáticas almacenadas y el roleId se convierte en la fuente de verdad para la autenticación.

Si tu clúster utiliza Redes Privadas, Atlas valida el acceso al Key Vault de manera asíncrona desde los nodos de datos.

  • La validación no se completa inmediatamente cuando se acepta la solicitud PATCH.

  • Los nodos de datos validan el acceso a Key Vault después de aplicar la configuración.

Antes de aplicar el parche roleId, asegúrese de que todos los permisos de Key Vault estén configurados correctamente. Una configuración incorrecta del acceso puede ocasionar fallos de validación en los nodos de datos, lo que podría acabar por interrumpir las operaciones de EAR y llevar a la desconexión de los clústeres.

Antes de aplicar un parche a EAR, verifique que su entidad de servicio tenga los permisos de Key Vault necesarios.

Ejecuta el siguiente comando:

az role assignment list \
--assignee "$SERVICE_PRINCIPAL_OBJECT_ID" \
--scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$KEY_VAULT_NAME"

Confirma que el rol asignado otorga permisos clave, como get, encrypt y decrypt.

Ejecuta el siguiente comando:

az keyvault show \
--name "$KEY_VAULT_NAME" \
--resource-group "$RESOURCE_GROUP" \
--query "properties.accessPolicies"

Confirma que el Principal de servicio esté listado e incluya los permisos de clave requeridos.

Volver

Configurar el acceso a través de puntos finales privados

En esta página