Use la CLI de Azure para habilitar el cifrado de un extremo a otro mediante el cifrado en host
Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles
Cuando se habilita el cifrado en el host, los datos almacenados en el host de máquina virtual se cifran en reposo y se transmiten cifrados al servido Storage. Para obtener información conceptual sobre el cifrado en el host y otros tipos de cifrado de disco administrado, consulte la sección Cifrado en el host: cifrado de un extremo a otro de los datos de la máquina virtual.
Restricciones
- Compatible con discos Ultra de tamaño de sector 4k y SSD prémium v2.
- Solo se admite en discos Ultra de tamaño de sector 512e y SSD prémium v2 si se crearon después del 13/5/2023.
- En el caso de los discos creados antes de esta fecha, haga una instantánea de su disco y cree un nuevo disco usando la instantánea.
- No se puede habilitar en máquinas virtuales (VM) ni en conjuntos de escalado de máquinas virtuales que actualmente o nunca tenían habilitado Azure Disk Encryption.
- No se puede habilitar Azure Disk Encryption en discos que tienen habilitado el cifrado en el host.
- El cifrado se puede habilitar en los conjuntos de escalado de máquinas virtuales. Sin embargo, solo se cifrarán automáticamente las nuevas máquinas virtuales creadas después de habilitar el cifrado.
- Las máquinas virtuales existentes se deben desasignar y reasignar para su cifrado.
Tamaños de máquinas virtuales que se admiten
La lista completa de tamaños de máquina virtual admitidos se puede obtener mediante programación. Para obtener información sobre cómo recuperarlos mediante programación, consulte la sección Búsqueda de tamaños de máquinas virtuales admitidos. La actualización del tamaño de la máquina virtual produce una validación para comprobar si el nuevo tamaño de máquina virtual admite la característica EncryptionAtHost.
Requisitos previos
Debe habilitar la característica para su suscripción antes de usar la propiedad EncryptionAtHost para su VM/VMSS. Siga los pasos que se indican a continuación para habilitar la característica para su suscripción:
- Ejecute el siguiente comando para registrar la característica para su suscripción
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
- Compruebe que el estado de registro es Registrado (tarda unos minutos). Para ello, use el comando siguiente antes de probar la característica.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
Crear recursos
Nota
Esta sección solo se aplica a las configuraciones con claves administradas por el cliente. Si usa claves administradas por la plataforma, puede ir directamente a la sección Scripts de ejemplo.
Una vez habilitada la característica, debe 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
Scripts de ejemplo
Creación de una máquina virtual con cifrado en el host habilitado con claves administradas por el cliente
Cree una máquina virtual con discos administrados mediante el identificador URI del recurso de DiskEncryptionSet creado anteriormente para cifrar la caché de los discos de datos y del sistema operativo con claves administradas por el cliente. Los discos temporales se cifran con claves administradas por la plataforma.
rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_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 \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Creación de una máquina virtual con cifrado en el host habilitado con claves administradas por la plataforma
Cree una máquina virtual con cifrado en el host habilitado para cifrar la caché de discos de datos o del sistema operativo, y discos temporales con claves administradas por la plataforma.
rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \
Actualización de una máquina virtual para habilitar el cifrado en el host
rgName=yourRGName
vmName=yourVMName
az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true
Comprobación del estado del cifrado en el host de una máquina virtual
rgName=yourRGName
vmName=yourVMName
az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv
Actualización de una máquina virtual para deshabilitar el cifrado en el host
Debe desasignar la máquina virtual para poder deshabilitar el cifrado en el host.
rgName=yourRGName
vmName=yourVMName
az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false
Creación de un conjunto de escalado de máquinas virtuales con cifrado en el host habilitado con claves administradas por el cliente
Cree un conjunto de escalado de máquinas virtuales con discos administrados mediante el identificador URI del recurso de DiskEncryptionSet creado anteriormente para cifrar la caché de los discos de datos y del sistema operativo con claves administradas por el cliente. Los discos temporales se cifran con claves administradas por la plataforma.
Importante
A partir de noviembre de 2023, los conjuntos de escalado de máquinas virtuales creados con PowerShell y la CLI de Azure tendrán como valor predeterminado el modo de orquestación flexible si no se especifica ningún modo de orquestación. Para más información sobre este cambio y las acciones que debe realizar, vaya a Cambio importante para clientes de PowerShell o la CLI de VMSS: Centro de comunidad de Microsoft
rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--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 conjunto de escalado de máquinas virtuales con cifrado en el host habilitado con claves administradas por la plataforma
Cree un conjunto de escalado de máquinas virtuales con cifrado en el host habilitado para cifrar la caché de discos de datos o del sistema operativo, y discos temporales con claves administradas por la plataforma.
Importante
A partir de noviembre de 2023, los conjuntos de escalado de máquinas virtuales creados con PowerShell y la CLI de Azure tendrán como valor predeterminado el modo de orquestación flexible si no se especifica ningún modo de orquestación. Para más información sobre este cambio y las acciones que debe realizar, vaya a Cambio importante para clientes de PowerShell o la CLI de VMSS: Centro de comunidad de Microsoft.
rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \
Actualización de un conjunto de escalado de máquinas virtuales para habilitar el cifrado en el host
rgName=yourRGName
vmssName=yourVMName
az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true
Comprobación del estado del cifrado en el host de un conjunto de escalado de máquinas virtuales
rgName=yourRGName
vmssName=yourVMName
az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv
Actualización de un conjunto de escalado de máquinas virtuales para deshabilitar el cifrado en el host
Puede deshabilitar el cifrado en el host en el conjunto de escalado de máquinas virtuales, pero esto solo afectará a las máquinas virtuales creadas después de deshabilitar el cifrado en el host. En el caso de las máquinas virtuales existentes, debe desasignar la máquina virtual, deshabilitar el cifrado en el host en esa máquina virtual individual y volver a asignar la máquina virtual.
rgName=yourRGName
vmssName=yourVMName
az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false
Búsqueda de tamaños de máquinas virtuales admitidos
No se admiten los tamaños de máquina virtual heredados. Puede encontrar la lista de tamaños de máquina virtual admitidos mediante las API Resource Skus o el módulo de Azure PowerShell. No puede encontrar los tamaños admitidos mediante la CLI.
Al llamar a la API Resource Skus y comprobar que la capacidad EncryptionAtHostSupported
esté configurada en True.
{
"resourceType": "virtualMachines",
"name": "Standard_DS1_v2",
"tier": "Standard",
"size": "DS1_v2",
"family": "standardDSv2Family",
"locations": [
"CentralUSEUAP"
],
"capabilities": [
{
"name": "EncryptionAtHostSupported",
"value": "True"
}
]
}
Para el módulo de Azure PowerShell, use el cmdlet Get-AzComputeResourceSku.
$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')}
foreach($vmSize in $vmSizes)
{
foreach($capability in $vmSize.capabilities)
{
if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
{
$vmSize
}
}
}
Pasos siguientes
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.