Creación y configuración de un almacén de claves para Azure Disk Encryption
Azure Disk Encryption usa Azure Key Vault para controlar y administrar las claves y los secretos de cifrado de discos. Para más información sobre los almacenes de claves, consulte Introducción a Azure Key Vault y Protección de un almacén de claves.
La creación y configuración de un almacén de claves para su uso con Azure Disk Encryption conlleva estos tres pasos:
- Creación de un grupo de recursos, en caso de que sea necesario.
- Creación de un almacén de claves.
- Establecimiento de directivas de acceso avanzadas del almacén de claves.
Si lo desea, también puede generar o importar una clave de cifrado de claves (KEK).
Instalación de herramientas y conexión a Azure
Los pasos que se describen en este artículo se pueden completar con la CLI de Azure, el módulo Az de Azure PowerShell o Azure Portal.
Crear un grupo de recursos
Si ya tiene un grupo de recursos, puede pasar a Creación de un almacén de claves.
Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
Cree un grupo de recursos mediante el comando az group create de la CLI de Azure, el comando New-AzResourceGroup de Azure PowerShell o bien desde Azure Portal.
Azure CLI
az group create --name "myResourceGroup" --location eastus
Azure PowerShell
New-AzResourceGroup -Name "myResourceGroup" -Location "EastUS"
Creación de un Almacén de claves
Si ya tiene un almacén de claves, puede pasar a la sección Establecimiento de directivas de acceso avanzadas del almacén de claves.
Cree un almacén de claves mediante el comando az keyvault create de la CLI de Azure, el comando New-AzKeyvault de Azure PowerShell, Azure Portal o una plantilla de Resource Manager.
Advertencia
Para asegurarse de que los secretos de cifrado no crucen los límites regionales, deberá crear y usar un almacén de claves que se encuentre en la misma región y el mismo inquilinoque las máquinas virtuales que se van a cifrar.
Cada instancia de Key Vault debe tener un nombre único. Reemplace <nombre-almacén de claves-único> por el nombre del almacén de claves en los siguientes ejemplos.
Azure CLI
Al crear un almacén de claves mediante la CLI de Azure, agregue la marca "--enabled-for-disk-encryption".
az keyvault create --name "<your-unique-keyvault-name>" --resource-group "myResourceGroup" --location "eastus" --enabled-for-disk-encryption
Azure PowerShell
Al crear un almacén de claves mediante Azure PowerShell, agregue la marca "-EnabledForDiskEncryption".
New-AzKeyvault -name "<your-unique-keyvault-name>" -ResourceGroupName "myResourceGroup" -Location "eastus" -EnabledForDiskEncryption
Plantilla de Resource Manager
También puede crear un almacén de claves mediante la plantilla de Resource Manager.
- En la plantilla de inicio rápido de Azure, haga clic en Implementar en Azure.
- Seleccione la suscripción, el grupo de recursos, la ubicación del grupo de recursos, el nombre del almacén de claves, el identificador de objeto, los términos legales y el contrato, y luego haga clic en Comprar.
Establecimiento de directivas de acceso avanzadas del almacén de claves
Importante
Los almacenes de claves recién creados tienen eliminación temporal de forma predeterminada. Si usa un almacén de claves existente, debe habilitar la eliminación temporal. Consulte Información general sobre la eliminación temporal de Azure Key Vault
La plataforma Azure necesita acceso a las claves de cifrado o secretos del almacén de claves para ponerlos a disposición de la máquina virtual para el proceso de arranque y descifrado de los volúmenes.
Si no ha habilitado el almacén de claves para el cifrado de discos, la implementación o la implementación de plantillas en el momento de la creación (como se muestra en el paso anterior), debe actualizar sus directivas de acceso avanzadas.
Azure CLI
Use az keyvault update para habilitar el cifrado de disco para el almacén de claves.
Habilitar Key Vault para el cifrado de disco: Es necesario Enabled-for-disk-encryption.
az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-disk-encryption "true"
Habilitar Key Vault para la implementación, si es necesario: permite que el proveedor de recursos Microsoft.Compute recupere los secretos de este almacén de claves cuando se hace referencia al almacén de claves en la creación de recursos, por ejemplo, cuando se crea una máquina virtual.
az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-deployment "true"
Habilitar Key Vault para la implementación de plantillas, si es necesario: permite que Resource Manager recupere secretos del almacén.
az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-template-deployment "true"
Azure PowerShell
Use el cmdlet Set-AzKeyVaultAccessPolicy de PowerShell del almacén de claves para habilitar el cifrado de disco para el almacén de claves.
Habilitar Key Vault para el cifrado de disco: se requiere EnabledForDiskEncryption para el cifrado de Azure Disk.
Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForDiskEncryption
Habilitar Key Vault para la implementación, si es necesario: permite que el proveedor de recursos Microsoft.Compute recupere los secretos de este almacén de claves cuando se hace referencia al almacén de claves en la creación de recursos, por ejemplo, cuando se crea una máquina virtual.
Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForDeployment
Habilitar Key Vault para la implementación de plantillas, si es necesario: permite que Azure Resource Manager obtenga los secretos de este almacén de claves cuando se hace referencia al almacén de claves en una implementación de plantilla.
Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForTemplateDeployment
Portal de Azure
Seleccione el almacén de claves y vaya a Directivas de acceso.
En "Habilitar acceso a", active la casilla llamada Azure Disk Encryption para el cifrado de volúmenes.
Seleccione Azure Virtual Machines para la implementación o Azure Resource Manager para la implementación de plantillas, si fuera necesario.
Haga clic en Save(Guardar).
Azure Disk Encryption y la rotación automática
Aunque ahora Azure Key Vault posee una característica de rotación automática de claves, no es compatible con Azure Disk Encryption por el momento. Esto quiere decir que Azure Disk Encryption siempre usará la clave de cifrado original, incluso después de que esta haya rotado automáticamente.
La rotación de una clave de cifrado no interrumpirá el funcionamiento de Azure Disk Encryption. En cambio, deshabilitar la clave de cifrado "antigua" (es decir, la clave que usa Azure Disk Encryption), sí lo hará.
Configuración de una clave de cifrado de claves (KEK)
Importante
La cuenta que se ejecuta para habilitar el cifrado de disco en el almacén de claves debe tener permisos de "lector".
Si desea usar una clave de cifrado de claves (KEK) para una brindar una capa adicional de seguridad para las claves de cifrado, agregue una KEK a su almacén de claves. Cuando se especifica una clave de cifrado de claves, Azure Disk Encryption usa esa clave para encapsular los secretos de cifrado antes de escribirlos en Key Vault.
Puede generar una nueva clave de cifrado de claves mediante el comando az keyvault key create
de la CLI de Azure, el cmdlet Add-AzKeyVaultKey de Azure PowerShell o Azure Portal. Debe generar un tipo de clave RSA; Azure Disk Encryption no admite actualmente el uso de claves de curva elíptica.
En su lugar, puede importar una clave de cifrado de claves en el HSM de administración de claves local. Para más información, consulte la documentación de Key Vault.
Las direcciones URL de la KEK del almacén de claves deben tener versiones. Azure exige esta restricción del control de versiones. Para ver direcciones URL de KEK y de secretos válidas, vea los ejemplos siguientes:
- Ejemplo de dirección URL de secreto válida: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Ejemplo de dirección URL de clave de cifrado de claves válida: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Azure CLI
Use el comando az keyvault key create
de la CLI de Azure para generar una clave de cifrado de claves y almacenarla en el almacén de claves.
az keyvault key create --name "myKEK" --vault-name "<your-unique-keyvault-name>" --kty RSA --size 4096
En su lugar, puede importar una clave privada mediante el comando az keyvault key import de la CLI de Azure:
En cualquier caso, proporciona el nombre de la clave de cifrado de claves al parámetro az vm encryption enable
--key-encryption-key del comando de la CLI de Azure.
az vm encryption enable -g "MyResourceGroup" --name "myVM" --disk-encryption-keyvault "<your-unique-keyvault-name>" --key-encryption-key "myKEK"
Azure PowerShell
Use el cmdlet Add-AzKeyVaultKey de Azure PowerShell para generar una clave de cifrado de claves y almacenarla en el almacén de claves.
Add-AzKeyVaultKey -Name "myKEK" -VaultName "<your-unique-keyvault-name>" -Destination "HSM" -Size 4096
En su lugar, puede importar una clave privada mediante el comando az keyvault key import
de Azure PowerShell.
En cualquier caso, especificará tanto el identificador del almacén de claves de la clave de cifrado de claves como la dirección URL de la clave de cifrado de claves en los parámetros Set-AzVMDiskEncryptionExtension -KeyEncryptionKeyVaultId y -KeyEncryptionKeyUrl de Azure PowerShell. En este ejemplo, se asume que se usa el mismo almacén de claves para la clave de cifrado de discos y la clave de cifrado de claves.
$KeyVault = Get-AzKeyVault -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "myResourceGroup"
$KEK = Get-AzKeyVaultKey -VaultName "<your-unique-keyvault-name>" -Name "myKEK"
Set-AzVMDiskEncryptionExtension -ResourceGroupName MyResourceGroup -VMName "MyVM" -DiskEncryptionKeyVaultUrl $KeyVault.VaultUri -DiskEncryptionKeyVaultId $KeyVault.ResourceId -KeyEncryptionKeyVaultId $KeyVault.ResourceId -KeyEncryptionKeyUrl $KEK.Id -SkipVmBackup -VolumeType All