Compartir a través de


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

  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 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