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).
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
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
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.
Inicie sesión en Azure Portal, vaya a la suscripción de Azure y seleccione Proveedores de recursos en la pestaña Configuración:
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:
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.
Si crea una nueva instancia de Azure Key Vault, habilite estas propiedades durante la creación:
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.
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:
Seleccione + Agregar directiva de acceso.
En el menú desplegable Permisos de claves, seleccione los permisos Obtener, Desencapsular clave y Encapsular clave:
En Seleccionar entidad de seguridad, seleccione Ninguna seleccionada.
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,
00001111-aaaa-2222-bbbb-3333cccc4444
, para cualquier región de Azure, excepto las regiones de Azure Government donde dicho identificador es11112222-bbbb-3333-cccc-4444dddd5555
).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.
Elija Seleccionar en la parte inferior.
Seleccione Agregar para agregar la nueva directiva de acceso.
Seleccione Guardar en la instancia de Key Vault para guardar todos los cambios.
Adición de roles de control de acceso basado en rol
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.
Busque el rol Administrador de Key Vault 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.
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.
Importante
En la región Azure Government, el identificador de la aplicación es
11112222-bbbb-3333-cccc-4444dddd5555
.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.
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.
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.
Generación de una clave en Azure Key Vault
Aquí, cree una clave con Azure Key Vault y recupere el identificador único.
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:
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:
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.
Una vez creada la clave, seleccione la clave que se acaba de crear y, a continuación, su versión actual.
Copie el Identificador de clave de la clave, excepto la parte que se encuentra después de la última barra diagonal:
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:
Importante
En función de la configuración de red, es posible que tenga que permitir el acceso a Azure Cosmos DB desde otros servicios de Azure.
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.
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.
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.
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:
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:
A continuación, reemplace el URI de clave por la nueva clave que desee usar y seleccione Guardar:
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.
Rotación automática de claves en Azure Key Vault se admite siempre que la clave anterior no esté deshabilitada o eliminada. Los sistemas internos necesitan algún tiempo para ponerse al día con la nueva versión de la clave después de validar que la cuenta no está en estado revocado o en transición para habilitar las claves administradas por el cliente.
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:
Los nombres de las cuentas, bases de datos y contenedores de Azure Cosmos DB
Los nombres de los procedimientos almacenados
Las rutas de acceso a las propiedades declaradas en las directivas de indexación
Los valores de la clave de partición de los contenedores
¿Son compatibles las claves administradas por el cliente con las cuentas existentes de Azure Cosmos DB?
Sí. Puede consultar Configuración de claves administradas por el cliente para las cuentas de Azure Cosmos DB existentes
¿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:
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:
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:
¿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:
- Cree una identidad administrada asignada por el usuario.
- Conceda a la clave KeyVault acceso a esta identidad.
- Asigne esta nueva identidad a la cuenta de base de datos restaurada.
Pasos siguientes
- Más información sobre el cifrado de datos en Azure Cosmos DB.