Azure permite cifrar discos en una máquina virtual Windows. Los discos se cifran mediante claves criptográficas que están protegidas en Azure Key Vault. Estas claves criptográficas se pueden controlar y se puede auditar su uso.Los discos virtuales en máquinas virtuales de Windows se cifran en reposo mediante BitLocker. El cifrado de los discos virtuales en Azure no conlleva ningún cargo.

No es posible habilitar el cifrado a través del portal de Azure. Para ello es necesario crear una serie de recurso en el portal de Azure y a través de PowerShell configurar y habilitar el cifrado. A continuación indico como realizarlo.

Crear Azure KeyVault

En el buscador del portal de Azure, buscamos KeyVault y seleccionamos el recurso.


Creamos un nuevo Registro de aplicaciones

Configuramos Nombre, Suscripción, Grupo de recursos (debe ser el mismo donde esté la VM con los discos que queremos cifrar), Ubicación, Plan de tarifas (seleccionamos Estándar). Pulsamos en crear.


Crear registro de aplicación.

En el buscador del portal de Azure buscamos Registros de aplicacionesy seleccionamos el recurso.


Creamos un nuevo registro de aplicaciones.

Configuramos Nombre, tipo de aplicación (dejamos por defecto Aplicación web o API). En URL de inicio de sesión configuramos https://”nombre de nuestro registro de aplicación”.net.


Crear clave secreta cifrada.

En el registro de aplicación que hemos creado, seleccionamos Configuración.


Seleccionamos Claves. Definimos una descripción de la clave, una fecha de expiración y una contraseña en el campo Valor.


Guardamos la configuración y el campo Valor se va a establecer en una clave cifrada, la cual debemos copiar y guardar porque una vez salgamos de esa pantalla no volverá aparecer.


Directiva de acceso

Volvemos acceder a nuestro KeyVault, en mi caso pruebavault.

En Configuración seleccionamos Directivas de acceso y agregamos uno nuevo.

Configuramos Seleccionar la entidad de seguridad. Buscamos nuestro registro de aplicación creado en el paso 4. Seleccionamos todos los permisos clave, secretos y de certificado. Creamos la directiva de acceso y guardamos.


$KeyVault = Get-AzureRmKeyVault -VaultName $KeyVaultName -ResourceGroupName $rgname;
$diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
$KeyVaultResourceId = $KeyVault.ResourceId;
Set-AzureRmKeyVaultAccessPolicy -VaultName $KeyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys all -PermissionsToSecrets all -ResourceGroupName $rgname;
Set-AzureRmKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $rgname –EnabledForDiskEncryption
Set-AzureRmVMDiskEncryptionExtension -ResourceGroupName $rgname -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId;

Los únicos datos que necesitaremos modificar en el script anterior son:


$rgName = ‘nombre del grupo de recursos’
$vmName = ‘nombre de la máquina virtual’
$KeyVaultName = ‘vfkey0’
$aadClientID = ‘ID recurso de aplicación creada’
$aadClientSecret = ‘clave secreta cifrada’

Los demás valores los dejamos tal cual.

Una vez configurado el script guardamos el bloc de notas con extensión .ps1, nos conectamos a través de powershell a nuestra suscripción de Azure y ejecutamos el script. El proceso tardará unos minutos. Una vez finalizado mostrará una pantalla similar: