Configuración de claves administradas por el cliente para la cuenta de Azure Cosmos DB con Azure Key Vault

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Los datos almacenados en su cuenta de Azure Cosmos DB se cifran de forma automática y sin problemas con claves administradas por Microsoft (claves administradas por el servicio). También puede optar por agregar una segunda capa de cifrado con las claves administradas (claves administradas por el cliente o CMK).

Diagrama de las capas de cifrado en torno a los datos de clientes

Debe almacenar las claves administradas por el cliente en Azure Key Vault y proporcionar una clave para cada cuenta de Azure Cosmos DB que tenga habilitadas las claves administradas por el cliente. Esta clave se usa para cifrar todos los datos almacenados en esa cuenta.

Nota:

Si desea habilitar claves administradas por el cliente en las cuentas de Azure Cosmos DB existentes, puede consultar el vínculo de aquí para más información

Advertencia

Los siguientes nombres de campo se reservan en tablas de Cassandra API en cuentas mediante claves administradas por el cliente:

  • id
  • ttl
  • _ts
  • _etag
  • _rid
  • _self
  • _attachments
  • _epk

Cuando las claves administradas por el cliente no están habilitadas, solo se reservan los nombres de campo que comienzan por __sys_.

Requisitos previos

Registro en el proveedor de recursos de Azure Cosmos DB

Si el proveedor de recursos Microsoft.DocumentDB aún no está registrado, debe registrarlo como primer paso.

  1. Inicie sesión en Azure Portal, vaya a la suscripción de Azure y seleccione Proveedores de recursos en la pestaña Configuración:

    Captura de pantalla de la opción Proveedores de recursos en el menú de navegación de recursos

  2. Busque el proveedor de recursos Microsoft.DocumentDB. Compruebe si el proveedor de recursos ya está marcado como registrado. Si no es así, elija el proveedor de recursos y seleccione Registrar:

    Captura de pantalla de la opción Registrar para el proveedor de recursos Microsoft.DocumentDB

Configuración de la instancia de Azure Key Vault

Importante

Es necesario poder acceder a la instancia de Azure Key Vault a través del acceso a la red pública o permitir que los servicios de Microsoft de confianza omitan su firewall. Una instancia a la que se pueda acceder exclusivamente a través de puntos de conexión privados no se puede usar para hospedar las claves administradas por el cliente.

El uso de claves administradas por el cliente con Azure Cosmos DB requiere que establezca dos propiedades en la instancia de Azure Key Vault que planea usar para hospedar las claves de cifrado: Eliminación temporal y Protección de purga.

  1. Si crea una nueva instancia de Azure Key Vault, habilite estas propiedades durante la creación:

    Captura de pantalla de las opciones de Azure Key Vault, incluida la eliminación temporal y la protección de purga

  2. Si usa una instancia de Azure Key Vault existente y desea verificar si estas propiedades estén habilitadas, puede consultar la sección Propiedades en Azure Portal. Si alguna de estas propiedades no está habilitada, consulte las secciones "Habilitar la eliminación temporal" y "Habilitación de la protección de purgas" en cualquiera de los siguientes artículos:

Elección del modelo de seguridad preferido

Una vez habilitada la protección de purga y la eliminación temporal, en la pestaña Directiva de acceso, puede elegir el modelo de permisos que prefiere usar. Las directivas de acceso se establecen de forma predeterminada, pero también se admite el control de acceso basado en rol de Azure.

Se deben conceder los permisos necesarios para permitir que Cosmos DB use la clave de cifrado. Este paso varía en función de si Azure Key Vault usa directivas de acceso o control de acceso basado en roles.

Nota

Es importante tener en cuenta que solo puede haber un modelo de seguridad activo a la vez, por lo que no es necesario inicializar el control de acceso basado en rol si Azure Key Vault se establece para usar directivas de acceso y viceversa)

Agregar una directiva de acceso

En esta variación, use la entidad de seguridad de Azure Cosmos DB para crear una directiva de acceso con los permisos adecuados.

  1. En Azure Portal, vaya a la instancia de Azure Key Vault que planea usar para hospedar las claves de cifrado. Seleccione Directivas de acceso en el menú izquierdo:

    Captura de pantalla de la opción Directivas de acceso en el menú de navegación de recursos

  2. Seleccione + Agregar directiva de acceso.

  3. En el menú desplegable Permisos de claves, seleccione los permisos Obtener, Desencapsular clave y Encapsular clave:

    Captura de pantalla de los permisos de directiva de acceso, incluida la clave Get, Unwrap y Wrap

  4. En Seleccionar entidad de seguridad, seleccione Ninguna seleccionada.

  5. Busque la entidad de seguridad de Azure Cosmos DB y selecciónela (para que sea más fácil de encontrar, también puede buscar por el identificador de la aplicación, a232010e-820c-4083-83bb-3ace5fc29d0b, para cualquier región de Azure, excepto las regiones de Azure Government donde dicho identificador es 57506a73-e302-42a9-b869-6f12d9ec29e9).

    Sugerencia

    De este modo, se registra la identidad de primera entidad de Azure Cosmos DB en la directiva de acceso de Azure Key Vault. Si la entidad de seguridad Azure Cosmos DB no está en la lista, es posible que tenga que volver a registrar el proveedor de recursos Microsoft.DocumentDB.

  6. Elija Seleccionar en la parte inferior.

    Captura de pantalla de la opción Seleccionar la entidad de seguridad en la página Agregar directiva de acceso

  7. Seleccione Agregar para agregar la nueva directiva de acceso.

  8. Seleccione Guardar en la instancia de Key Vault para guardar todos los cambios.

Adición de roles de control de acceso basado en rol

  1. En Azure Portal, vaya a la instancia de Azure Key Vault que planea usar para hospedar las claves de cifrado. Seleccione Control de acceso (IAM) en el menú izquierdo y seleccione Conceder acceso a este recurso.

    Captura de pantalla de la opción Control de acceso en el menú de navegación de recursos

    Captura de pantalla de la opción Conceder acceso a este recurso en la página Control de acceso

  2. Busque el "rol Administrador de almacén de claves" y asígnelo a usted mismo. Para realizar esta asignación, primero busque el nombre del rol en la lista y, a continuación, haga clic en la pestaña "Miembros". Una vez en la pestaña, seleccione la opción "Usuario, grupo o entidad de servicio" en la radio y, a continuación, busque su cuenta de Azure. Una vez seleccionada la cuenta, se puede asignar el rol.

    Captura de pantalla del rol de administrador de almacén de claves en los resultados de la búsqueda

    Captura de pantalla de una asignación de roles en la página Control de acceso

  3. A continuación, se deben asignar los permisos necesarios a la entidad de seguridad de Cosmos DB. Por lo tanto, al igual que la última asignación de roles, vaya a la página de asignación, pero esta vez busque el rol "Usuario de cifrado de servicio criptográfico de Key Vault" y, en la pestaña Miembros, busque la entidad de seguridad de Cosmos DB. Para buscar la entidad de seguridad, busque la entidad de seguridad Azure Cosmos DB y selecciónela.

    Captura de pantalla de la entidad de seguridad de Azure Cosmos DB que se asigna a un permiso

    Importante

    En la región Azure Government, el identificador de la aplicación es 57506a73-e302-42a9-b869-6f12d9ec29e9.

  4. Seleccione Revisar y asignar y el rol se asignará a Cosmos DB.

Validación del establecimiento correcto de los roles

A continuación, use la página de control de acceso para confirmar que todos los roles se han configurado correctamente.

  1. Una vez asignados los roles, seleccione "Ver acceso a este recurso" en la página Control de acceso (IAM) para comprobar que todo se ha establecido correctamente.

    Captura de pantalla de la opción Ver acceso al recurso en la página Control de acceso

  2. En la página, establezca el ámbito en "este recurso" y compruebe que tiene el rol de administrador de almacén de claves y que la entidad de seguridad de Cosmos DB tiene el rol de usuario de cifrado criptográfico de Key Vault.

    Captura de pantalla de la opción de ajuste de ámbito para una consulta de asignación de roles

Generación de una clave en Azure Key Vault

Aquí, cree una clave con Azure Key Vault y recupere el identificador único.

  1. En Azure Portal, vaya a la instancia de Azure Key Vault que planea usar para hospedar las claves de cifrado. A continuación, seleccione Claves en el menú izquierdo:

    Captura de pantalla de la opción Claves en el menú de navegación de recursos

  2. Seleccione Generar/Importar, proporcione un nombre para la nueva clave y seleccione un tamaño de clave RSA. Para mejorar la seguridad, se recomienda un mínimo de 3072. A continuación, seleccione Crear:

    Captura de pantalla del cuadro de diálogo para crear una clave

    Sugerencia

    Como alternativa, puede usar la CLI de Azure para generar una clave con:

    az keyvault key create \
        --vault-name <name-of-key-vault> \
        --name <name-of-key>
    

    Para obtener más información sobre cómo administrar un almacén de claves con la CLI de Azure, consulte Administración de Azure Key Vault con la CLI de Azure.

  3. Una vez creada la clave, seleccione la clave que se acaba de crear y, a continuación, su versión actual.

  4. Copie el Identificador de clave de la clave, excepto la parte que se encuentra después de la última barra diagonal:

    Captura de pantalla del campo de identificador de clave y la acción de copia

Creación de una cuenta de Azure Cosmos DB

Cree una cuenta de Azure Cosmos DB mediante Azure Portal o la CLI de Azure.

Al crear una nueva cuenta de Azure Cosmos DB desde Azure Portal, elija Clave administrada por el cliente en el paso Cifrado. En el campo URI de clave, pegue el URI o identificador de clave de la clave de Azure Key Vault que copió del paso anterior:

Captura de pantalla de la página Cifrado con un URI de clave administrada personalizada configurado

Uso de una identidad administrada en la directiva de acceso de Azure Key Vault

Esta directiva de acceso garantiza que la cuenta de Azure Cosmos DB pueda acceder a sus claves de cifrado. Para implementar la directiva de acceso, se concede acceso a una identidad específica de Microsoft Entra ID. Se admiten dos tipos de identidades:

  • La identidad de primera entidad de Azure Cosmos DB se puede usar para conceder acceso al servicio Azure Cosmos DB.
  • La identidad administrada de la cuenta de Azure Cosmos DB se puede usar para conceder acceso a su cuenta específicamente.

No disponible

Uso de claves administradas por el cliente con copia de seguridad continua

Puede crear una cuenta de copia de seguridad continua mediante la CLI de Azure o una plantilla de Resource Manager.

Actualmente, solo se admite la identidad administrada asignada por el usuario para crear cuentas de copia de seguridad continua.

Una vez creada la cuenta, puede actualizar la identidad a la identidad administrada asignada por el sistema.

Como alternativa, el usuario también puede crear una identidad del sistema con el modo de copia de seguridad periódica en primer lugar y, después, migrar la cuenta al modo de copia de seguridad continua mediante estas instrucciones Migración de una cuenta de Azure Cosmos DB del modo periódico al modo de copia de seguridad continua.

No disponible

Restauración de una cuenta continua configurada con identidad administrada

Se necesita una identidad asignada por el usuario en la solicitud de restauración porque la identidad administrada de la cuenta de origen (identidades asignadas por el usuario y asignadas por el sistema) no se puede transferir automáticamente a la cuenta de base de datos de destino.

No disponible

Claves administradas por el cliente y cifrado doble

Los datos que almacena en la cuenta de Azure Cosmos DB cuando se usan claves administradas por el cliente se cifran dos veces:

  • Una vez mediante el cifrado predeterminado aplicado con claves administradas por Microsoft.
  • Una vez mediante el cifrado adicional aplicado con claves administradas por el cliente.

El cifrado doble solo se aplica al almacenamiento transaccional principal de Azure Cosmos DB. Algunas características implican la replicación interna de los datos en un segundo nivel de almacenamiento donde no se proporciona cifrado doble, incluso con las claves administradas por el cliente. Entre ellas se incluyen:

Rotación de claves

La rotación de la clave administrada por el cliente que usa la cuenta de Azure Cosmos DB se puede realizar de dos maneras.

  • Cree una nueva versión de la clave que se usa actualmente en Azure Key Vault:

    Captura de pantalla de la opción Nueva versión en la página Versiones de Azure Portal.

  • Intercambie la clave que se usa en este momento con otra distinta mediante la actualización del URI de la clave en la cuenta. En Azure Portal, vaya a su cuenta de Azure Cosmos DB y seleccione Cifrado de datos en el menú de la izquierda:

    Captura de pantalla de la opción Cifrado de datos en el menú de navegación de recursos

    A continuación, reemplace el URI de clave por la nueva clave que desee usar y seleccione Guardar:

    Captura de pantalla de la opción Guardar en la página Clave

    Aquí se muestra cómo lograr el mismo resultado en PowerShell:

    # Variable for resource group name
    $RESOURCE_GROUP_NAME = "<resource-group-name>"
    
    # Variable for account name
    $ACCOUNT_NAME = "<globally-unique-account-name>"
    
    # Variable for new key URI in the key vault
    $NEW_KEY_VAULT_KEY_URI="https://<key-vault-name>.vault.azure.net/keys/<new-key-name>"
    
    $parameters = @{
        ResourceGroupName = $RESOURCE_GROUP_NAME 
        Name = $ACCOUNT_NAME
        ResourceType = "Microsoft.DocumentDb/databaseAccounts"
    }
    $ACCOUNT = Get-AzResource @parameters
    
    $ACCOUNT.Properties.keyVaultKeyUri = $NEW_KEY_VAULT_KEY_URI
    
    $ACCOUNT | Set-AzResource -Force
    

La versión de la clave o la clave anterior pueden deshabilitarse después de que los registros de auditoría de Azure Key Vault no muestren actividad de Azure Cosmos DB en esa clave o versión. No debe haber más actividad en la versión de clave o clave anterior transcurridas 24 horas desde la rotación de claves.

Control de errores

Si hay algún error con las claves administradas por el cliente en Azure Cosmos DB, este servicio devuelve los detalles del error junto con un código de subestado HTTP en la respuesta. Puede usar este código de subestado HTTP para depurar la causa principal del problema. Consulte el artículo Códigos de estado HTTP para Azure Cosmos DB para obtener la lista de códigos de subestado HTTP admitidos.

Preguntas más frecuentes

Estas son las preguntas más frecuentes sobre cómo configurar claves administradas por el cliente en Azure Cosmos DB.

¿Hay más cargos por habilitar las claves administradas por el cliente?

No, no hay ningún cargo por habilitar esta característica.

¿De qué manera las claves administradas por el cliente influyen en el planeamiento de la capacidad?

Las unidades de solicitud que consumen las operaciones de base de datos observan un aumento para reflejar el procesamiento adicional necesario para realizar el cifrado y el descifrado de los datos al usar claves administradas por el cliente. Este consumo de RU adicional puede dar lugar a un uso ligeramente mayor de la capacidad aprovisionada. Use esta tabla como guía:

Tipo de operación Aumento de las Unidades de solicitud
Lecturas de punto (captura de elementos por su identificador) + 5 % por operación
Cualquier operación de escritura + 6 % por operación | Aproximadamente + 0,06 RU por propiedad indexada
Consultas, lectura de la fuente de cambios o fuente de conflictos + 15 % por operación

¿Qué datos se cifran con las claves administradas por el cliente?

Todos los datos almacenados en la cuenta de Azure Cosmos DB se cifran con las claves administradas por el cliente, excepto los metadatos siguientes:

¿Son compatibles las claves administradas por el cliente con las cuentas existentes de Azure Cosmos DB?

Esta característica solo está disponible actualmente para las cuentas nuevas.

¿Es posible usar claves administradas por el cliente con el almacén analítico de Azure Cosmos DB?

Sí, Azure Synapse Link solamente admite la configuración de claves administradas por el cliente mediante la identidad administrada de la cuenta de Azure Cosmos DB. Debe usar la identidad administrada de la cuenta de Azure Cosmos DB en la directiva de acceso de Azure Key Vault antes de habilitar Azure Synapse Link en la cuenta. Para obtener una guía paso a paso sobre cómo habilitar la identidad administrada y cómo usarla en una directiva de acceso, consulte el acceso a Azure Key Vault desde Azure Cosmos DB con una identidad administrada.

¿Existe un plan para admitir una granularidad más fina que las claves de nivel de cuenta?

Actualmente, no. Sin embargo, se está analizando la posibilidad de incluir claves de nivel de contenedor.

¿Cómo se puede saber si las claves administradas por el cliente están habilitadas en mi cuenta de Azure Cosmos DB?

En Azure Portal, vaya a su cuenta de Azure Cosmos DB y observe la entrada de Cifrado de datos del menú de la izquierda. Si esta entrada existe, las claves administradas por el cliente estarán habilitadas en su cuenta:

Captura de pantalla de la opción Cifrado de datos en el menú de navegación de recursos

También puede recuperar los detalles de la cuenta de Azure Cosmos DB mediante programación y buscar la presencia de la propiedad keyVaultKeyUri.

¿Cómo afectan las claves administradas por el cliente a las copias de seguridad periódicas?

Azure Cosmos DB realiza copias de seguridad periódicas y automáticas de los datos almacenados en su cuenta. Esta operación realiza una copia de seguridad de los datos cifrados.

Se necesitan las siguientes condiciones para restaurar correctamente una copia de seguridad periódica:

  • La clave de cifrado que usó en el momento de la copia de seguridad es necesaria y debe estar disponible en Azure Key Vault. Esta condición requiere que no se haya realizado ninguna revocación y que la versión de la clave que se usó en el momento de la copia de seguridad aún esté habilitada.
  • Si usó una identidad administrada asignada por el sistema en la directiva de acceso, conceda acceso a la identidad de primera persona de Azure Cosmos DB temporalmente antes de restaurar los datos. Este requisito existe porque una identidad administrada asignada por el sistema es específica de una cuenta y no se puede reutilizar en la cuenta de destino. Una vez que los datos se restablezcan completamente en la cuenta de destino, puede establecer la configuración de identidad que quiera y quitar la identidad de primera entidad de la directiva de acceso de Key Vault.

¿Cómo afectan las claves administradas por el cliente a las copias de seguridad continuas?

Azure Cosmos DB ofrece la opción de configurar copias de seguridad continuas en la cuenta. Con las copias de seguridad continuas, puede restaurar los datos a cualquier momento dado de los últimos 30 días. Para usar copias de seguridad continuas en una cuenta donde están habilitadas las claves administradas por el cliente, debe emplear una identidad administrada asignada por el usuario o por el sistema en la directiva de acceso de Key Vault. Las identidades propias de Azure Cosmos DB no se admiten actualmente en las cuentas que usan copias de seguridad continuas.

Pasos de requisitos previos para que las cuentas habilitadas para claves administradas por el cliente actualicen la identidad asignada por el usuario.

  • Agregue una identidad asignada por el usuario a la cuenta de Cosmos DB y conceda permisos en la directiva de acceso del almacén de claves.
  • Establezca la identidad asignada por el usuario como predeterminada desde la CLI de Azure o ARM.
az cosmosdb update --resource-group MyResourceGroup --name MyAccountName --default-identity UserAssignedIdentity=/subscriptions/MySubscriptionId/resourcegroups/MyResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MyUserAssignedIdentity

Las condiciones siguientes son necesarias para realizar correctamente una restauración a un momento dado:

  • La clave de cifrado que usó en el momento de la copia de seguridad es necesaria y debe estar disponible en Azure Key Vault. Este requisito significa que no se ha realizado ninguna revocación y que la versión de la clave que se usó en el momento de la copia de seguridad aún está habilitada.
  • Debe asegurarse de que la identidad administrada asignada por el usuario que se usó originalmente en la cuenta de origen todavía se declara en la directiva de acceso de Key Vault.

Importante

Si revoca la clave de cifrado antes de eliminar la cuenta, la copia de seguridad de la cuenta puede perder los datos escritos hasta una hora antes de que se realizara la revocación.

¿Cómo se revoca una clave de cifrado?

Para revocar una clave, se debe deshabilitar la versión más reciente de la clave:

Captura de pantalla de una versión de clave personalizada deshabilitada

Como alternativa, para revocar todas las claves de una instancia de Azure Key Vault, puede eliminar la directiva de acceso concedida a la entidad de seguridad de Azure Cosmos DB:

Captura de pantalla de la opción Eliminar para una directiva de acceso

¿Qué operaciones hay disponibles después de la revocación de una clave administrada por el cliente?

La única operación posible cuando se ha revocado la clave de cifrado es la eliminación de la cuenta.

Asigne una nueva identidad administrada a la cuenta de base de datos restaurada para seguir accediendo o recuperar el acceso a la cuenta de base de datos

La identidad asignada al usuario está vinculada a una cuenta de Cosmos DB especificada y, siempre que asignemos una identidad asignada al usuario a una cuenta, ARM reenviará la solicitud a identidades de servicio administradas para realizar esta conexión. Actualmente llevamos información de identidad de usuario de la cuenta de base de datos de origen a la cuenta de base de datos de destino durante la restauración (para la restauración de copia de seguridad continua y periódica) de CMK + identidad asignada al usuario,

Debido a que los metadatos de identidad se enlazan con la cuenta de base de datos de origen y el flujo de trabajo de restauración no vuelve a definir el ámbito de la identidad en la cuenta de base de datos de destino. Esto hará que las cuentas de base de datos restauradas estén en un estado incorrecto y se vuelvan inaccesibles después de que se elimine la cuenta de origen y la hora de renovación de la identidad haya expirado.

Pasos para asignar una nueva identidad administrada:

  1. Cree una identidad administrada asignada por el usuario.
  2. Conceda a la clave KeyVault acceso a esta identidad.
  3. Asigne esta nueva identidad a la cuenta de base de datos restaurada.

Pasos siguientes