Configuración de claves administradas por el cliente para la cuenta de Azure Cosmos DB con HSM administrado de Azure Key Vault
SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table
Consulte el vínculo Configuración de claves administradas por el cliente con Azure Key Vault
Nota
Actualmente, las claves administradas por el cliente solo están disponibles para las nuevas cuentas de Azure Cosmos DB. Debe configurarlas durante la creación de la cuenta.
Registro del proveedor de recursos de Azure Cosmos DB para su suscripción a Azure
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 del HSM administrado de Azure Key Vault
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.
Dado que la eliminación temporal está activada de forma predeterminada, solo se debe habilitar la protección de purga. Al crear el HSM administrado, use el siguiente comando de la CLI:
objectId = az ad signed-in-user show --query id -o tsv
az keyvault create --hsm-name $hsmName --resource-group $rgName --location $location --enable-purge-protection true --administrators $objectId --retention-days 7
Si usa una instancia existente de HSM administrado de Azure Key Vault, puede verificar si estas propiedades están habilitadas consultando la sección Propiedades con el siguiente comando:
az keyvault show $hsmName $rgName
Si la protección de purga no está habilitada, se puede usar el siguiente comando:
az keyvault update-hsm --enable-purge-protection true --hsm-name $hsmName --resource-group $rgName
Para más información sobre los comandos de la CLI disponibles para HSM administrado, consulte el siguiente Azure Key Vault
Creación de la clave de cifrado y asignación de los roles correspondientes
Una vez activado el HSM administrado, es necesario crear la clave que se va a usar para la cuenta de CMK. Para ello, el rol "Usuario criptográfico de HSM administrado" se asigna al administrador. Para más información sobre cómo funciona el RBAC (control de acceso basado en roles) con HSM administrado, consulte los siguientes artículos: Roles integrados de RBAC local de HSM administrado: Azure Key Vault | Microsoft Learn y Control de acceso de HSM administrado de Azure | Microsoft Learn
objectId = az ad signed-in-user show --query id -o tsv
$keyName = "Name of your key"
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto User" --assignee $objectId --scope /keys
az keyvault key create --hsm-name $hsmName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 3072
Ahora que se ha creado la clave, el rol correspondiente debe asignarse al id. de la entidad de seguridad de Cosmos DB o a la identidad administrada de Azure para aprovisionar la cuenta. El rol "Usuario cifrado del servicio de cifrado de HSM administrado" se usa porque tiene los únicos tres permisos necesarios para trabajar con una cuenta de CMK, siendo: obtener, ajustar y desajustar. Estos permisos también tienen como ámbito solo ser útiles en las claves almacenadas en el HSM administrado de Azure.
Sin identidad administrada de Azure:
$cosmosPrincipal = az ad sp show --id a232010e-820c-4083-83bb-3ace5fc29d0b --query id -o tsv
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
$keyURI = "https://{0}.managedhsm.azure.net/keys/{1}" -f $hsmName, $keyName
az cosmosdb create -n $cosmosName -g $rgName --key-uri $keyURI
Con identidad administrada de Azure:
$identityResourceID = az identity show -g $rgName -n $identityName --query id -o tsv
$identityPrincipal = az identity show -g $rgName -n $identityName --query principalId -o tsv
$defaultIdentity = "UserAssignedIdentity={0}" -f $identityResourceID
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
$keyURI = "https://{0}.managedhsm.azure.net/keys/{1}" -f $hsmName, $keyName
az cosmosdb create -n $cosmosName -g $rgName --key-uri $keyURI --assign-identity $identityResourceID --default-identity $defaultIdentity
Esto aprovisionará una cuenta de CMK de Cosmos DB con una clave almacenada en un HSM administrado de Azure Key Vault.
Cambiar a Identidad administrada asignada por el sistema.
Cosmos DB admite el uso de una identidad administrada asignada por el sistema para una cuenta de CMK de Cosmos DB. Para más información sobre la identidad administrada de CMK asignada por el sistema, consulte: Configuración de claves administradas por el cliente para su cuenta de Azure Cosmos DB
Ejecute los siguientes comandos para cambiar de la identidad predeterminada a la identidad administrada asignada por el sistema:
az cosmosdb identity assign -n $cosmosName -g $rgName
$principalMSIId = az cosmosdb identity show -n $cosmosName -g $rgName --query principalId -o tsv
az keyvault role assignment create --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $principalMSIId --scope /keys
az cosmosdb update --resource-group $rgName --name $cosmosName --default-identity "SystemAssignedIdentity"
Como nota opcional, se puede quitar la asignación de roles original al id. de la entidad de seguridad de Cosmos DB o a la identidad administrada de Azure.
az keyvault role assignment delete --hsm-name $hsmName --role "Managed HSM Crypto Service Encryption User" --assignee $cosmosPrincipal --scope /keys
Pasos siguientes
- Más información sobre el cifrado de datos en Azure Cosmos DB.