Uso de la CLI de Azure para habilitar el cifrado del lado servidor con claves administradas por el cliente para los discos administrados
Se aplica a: ✔️ Máquinas virtuales Linux ✔️ Máquinas virtuales Windows ✔️ Conjuntos de escalado flexibles ✔️ Conjuntos de escalado uniformes
Azure Disk Storage le permite administrar sus propias claves al usar el cifrado del lado servidor (SSE) para discos administrados, si así lo decide. Para obtener información conceptual sobre SSE con claves administradas por el cliente, así como otros tipos de cifrado de discos administrados, consulte la sección Claves administradas por el cliente de nuestro artículo sobre el cifrado de discos.
Restricciones
Por ahora, las claves administradas por el cliente tienen las siguientes restricciones:
- Si esta característica está habilitada para un disco con instantáneas incrementales, no se puede deshabilitar en ese disco ni en sus instantáneas. Para encontrar una solución alternativa, copie todos los datos en un disco administrado totalmente diferente que no use claves administradas por el cliente. Puede hacerlo con la CLI de Azure o el módulo de Azure PowerShell.
- Solo se admiten software y claves RSA de HSM con un tamaño de 2048 bits, 3072 bits y 4096 bits, ninguna otra clave o tamaño.
- Las claves de HSM requieren el nivel premium de los almacenes Azure Key Vault.
- Solo para Ultra Disks y discos SSD prémium v2:
- Las instantáneas creadas a partir de discos que están cifrados con cifrado del lado servidor y claves administradas por el cliente deben cifrarse con las mismas claves administradas por el cliente.
- Las identidades administradas asignadas por el usuario no se admiten para Ultra Disks y discos SSD prémium v2 cifrados con claves administradas por el cliente.
- Actualmente no se admite en Azure Government o Azure China.
- La mayoría de los recursos relacionados con las claves administradas por el cliente (conjuntos de cifrado de disco, máquinas virtuales, discos e instantáneas) deben estar en la misma suscripción y región.
- Las instancias de Azure Key Vault se puede usar desde otra suscripción, pero deben encontrarse en la misma región que el conjunto de cifrado de disco. Como versión preliminar, puede usar instancias de Azure Key Vault en distintos inquilinos de Microsoft Entra.
- Los discos cifrados con claves administradas por el cliente solo pueden moverse a otro grupo de recursos si la máquina virtual a la que están conectados está desasignada.
- Los discos, instantáneas e imágenes cifrados con claves administradas por el cliente no se pueden trasladar entre suscripciones.
- Los discos administrados cifrados actual o anteriormente mediante Azure Disk Encryption no se pueden cifrar mediante claves administradas por el cliente.
- Solo puede crear hasta 5000 conjuntos de cifrado de disco por región y por suscripción.
- Para obtener información sobre el uso de claves administradas por el cliente con galerías de imágenes compartidas, consulte Versión preliminar: uso de claves administradas por el cliente para el cifrado de imágenes.
Crear recursos
Una vez habilitada la característica, deberá configurar diskEncryptionSet y una instancia de Azure Key Vault o un recurso HSM administrado por Azure Key Vault.
Azure Key Vault
- Instale la última versión de la CLI de Azure e inicie sesión en una cuenta de Azure mediante az login.
- Cree una instancia de Azure Key Vault y la clave de cifrado
Al crear la instancia de Key Vault, debe habilitar la protección de purgas. La protección de purgas garantiza que una clave eliminada no se puede eliminar permanentemente hasta que transcurra el período de retención. Esta configuración le protege contra la pérdida de datos debido a la eliminación accidental. Estos valores son obligatorios cuando se usa una instancia de Key Vault para cifrar discos administrados.
Importante
No use el estilo CamelCase para la región. Si lo hace, podría experimentar problemas al asignar discos adicionales al recurso en Azure Portal.
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az group create --resource-group $rgName --location $location
az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true
az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
- Cree una instancia de DiskEncryptionSet. Puede establecer enable-auto-key-rotation en true para habilitar la rotación automática de la clave. Al habilitar la rotación automática, el sistema actualiza automáticamente todos los discos administrados, instantáneas e imágenes que hagan referencia al conjunto de cifrado de disco para usar la nueva versión de la clave en una hora.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
- Conceda al recurso DiskEncryptionSet acceso al almacén de claves.
Nota:
Azure puede tardar unos minutos en crear la identidad de DiskEncryptionSet en Microsoft Entra ID. Si recibe un error similar a "No se encuentra el objeto en Active Directory" al ejecutar el siguiente comando, espere unos minutos y vuelva a intentarlo.
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get
HSM administrado por Azure Key Vault
Como alternativa, puede usar un recurso HSM administrado para manejar las claves.
Para ello, debe cumplir los siguientes requisitos previos:
- Instale la última versión de la CLI de Azure e inicie sesión en una cuenta de Azure mediante az login.
- Cree y configure un recurso HSM administrado.
- Asigne permisos a un usuario para que pueda administrar el recurso HSM administrado.
Configuración
Una vez que haya creado un recurso HSM administrado y haya agregado permisos, habilite la protección de purgas y cree una clave de cifrado.
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
az keyvault key create --hsm-name $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048
A continuación, cree una instancia de diskEncryptionSet.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
Por último, conceda acceso a DiskEncryptionSet para el recurso HSM administrado.
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys
Ahora que ha creado y configurado estos recursos, puede usarlos para proteger los discos administrados. En los vínculos siguientes encontrará scripts de ejemplo, cada uno con un escenario correspondiente, que puede usar para proteger sus discos administrados.
Ejemplos
Creación de una máquina virtual con una imagen de Marketplace, cifrado del sistema operativo y de los discos de datos con claves administradas por el cliente
rgName=yourResourceGroupName
vmName=yourVMName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vm create -g $rgName -n $vmName -l $location --image $image --size $vmSize --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 128 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Cifrado de los discos administrados existentes
Los discos existentes no deben estar asociados a una máquina virtual en ejecución para que los cifre mediante el siguiente script:
rgName=yourResourceGroupName
diskName=yourDiskName
diskEncryptionSetName=yourDiskEncryptionSetName
az disk update -n $diskName -g $rgName --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId
Creación de un conjunto de escalado de máquinas virtuales con una imagen de Marketplace, cifrado del sistema operativo y de los discos de datos con claves administradas por el cliente
rgName=yourResourceGroupName
vmssName=yourVMSSName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName -n $vmssName --image $image --upgrade-policy automatic --admin-username azureuser --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 64 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Creación de un disco vacío cifrado con cifrado del lado servidor y claves administradas por el cliente y su conexión a una máquina virtual
vmName=yourVMName
rgName=yourResourceGroupName
diskName=yourDiskName
diskSkuName=Premium_LRS
diskSizeinGiB=30
location=westcentralus
diskLUN=2
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az disk create -n $diskName -g $rgName -l $location --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId --size-gb $diskSizeinGiB --sku $diskSkuName
diskId=$(az disk show -n $diskName -g $rgName --query [id] -o tsv)
az vm disk attach --vm-name $vmName --lun $diskLUN --ids $diskId
Cambiar la clave de DiskEncryptionSet para rotar la clave para todos los recursos que hacen referencia a DiskEncryptionSet
rgName=yourResourceGroupName
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
keyVaultId=$(az keyvault show --name $keyVaultName--query [id] -o tsv)
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set update -n keyrotationdes -g keyrotationtesting --key-url $keyVaultKeyUrl --source-vault $keyVaultId
Buscar el estado de cifrado del lado servidor de un disco
az disk show -g yourResourceGroupName -n yourDiskName --query [encryption.type] -o tsv
Importante
Las claves administradas por el cliente dependen de identidades administradas para los recursos de Azure, una característica de Microsoft Entra ID. Al configurar claves administradas por el cliente, se asigna automáticamente una identidad administrada a los recursos en segundo plano. Si posteriormente mueve la suscripción, el grupo de recursos o el disco administrado de un directorio de Microsoft Entra a otro, la identidad administrada asociada a los discos administrados no se transfiere al nuevo inquilino, por lo que es posible que las claves administradas por el cliente dejen de funcionar. Para más información, consulte Transferencia de una suscripción entre directorios de Microsoft Entra.
Pasos siguientes
- Explore las plantillas de Azure Resource Manager para crear discos cifrados con claves administradas por el cliente
- Replicación de máquinas con discos habilitados para claves administradas por el cliente
- Configuración de la recuperación ante desastres de máquinas virtuales de VMware en Azure con PowerShell
- Configuración de la recuperación ante desastres en Azure para máquinas virtuales de Hyper-V mediante PowerShell y Azure Resource Manager
- Consulta Crear un disco administrado a partir de una instantánea con la CLI para obtener un ejemplo de código.