Creación y configuración de un almacén de claves para Azure Disk Encryption con Microsoft Entra ID (versión anterior) para máquinas virtuales Linux

Importante

Azure Disk Encryption está programado para su retirada el 15 de septiembre de 2028. Hasta esa fecha, puede seguir usando Azure Disk Encryption sin interrupciones. El 15 de septiembre de 2028, las cargas de trabajo habilitadas para ADE seguirán ejecutándose, pero los discos cifrados no se desbloquearán después de reiniciar la máquina virtual, lo que provocará una interrupción del servicio.

Use el cifrado en el host para las máquinas virtuales nuevas o pruebe Tamaños de máquina virtual confidenciales con cifrado de disco de sistema operativo para cargas de trabajo de procesamiento confidencial. Todas las máquinas virtuales habilitadas para ADE (incluidas las copias de seguridad) deben migrar al cifrado en el host antes de la fecha de retirada para evitar interrupciones del servicio. Consulte Migre desde Azure Disk Encryption al cifrado en el host para obtener más información.

Se aplica a: ✔️ Máquinas virtuales de Linux ✔️ Conjuntos de escalado flexibles

La nueva versión de Azure Disk Encryption elimina la necesidad de proporcionar un parámetro de aplicación de Microsoft Entra para habilitar el cifrado de disco de máquina virtual. Con la nueva versión, ya no es necesario proporcionar credenciales de Microsoft Entra durante el paso de habilitar el cifrado. Todas las máquinas virtuales nuevas se deben cifrar sin los parámetros de aplicación de Microsoft Entra con la nueva versión. Para ver instrucciones para habilitar el cifrado de disco de máquina virtual mediante la nueva versión, consulte Azure Disk Encryption. Las máquinas virtuales que ya se habían cifrado con parámetros de la aplicación de Microsoft Entra siguen siendo compatibles y deben continuar manteniéndose con la sintaxis de Microsoft Entra.

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.

Para crear y configurar un almacén de claves para Azure Disk Encryption con Microsoft Entra ID (versión anterior) debe seguir estos tres pasos:

  1. Cree un Key Vault.
  2. Configure una aplicación y una entidad de servicio de Microsoft Entra.
  3. Establezca la directiva de acceso del almacén de claves para la aplicación de Microsoft Entra.
  4. Configure las directivas de acceso avanzado del almacén de claves.

También puede generar o importar una clave de cifrado de claves (KEK).

En el artículo Creación y configuración de un almacén de claves para Azure Disk Encryption encontrará los pasos necesarios para instalar las herramientas y conectarse a Azure.

Crear una bóveda de claves

Azure Disk Encryption se integra con Azure Key Vault para controlar y administrar los secretos y las claves de cifrado de los discos en la suscripción de Key Vault. Puede crear un almacén de claves o usar uno existente para Azure Disk Encryption. 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. Puede usar una plantilla de Resource Manager, Azure PowerShell o el CLI de Azure para crear un Key Vault.

Advertencia

Para asegurarse de que los secretos de cifrado no cruzan los límites regionales, Azure Disk Encryption necesita que el almacén de claves y las máquinas virtuales se coloquen en la misma región. Cree y use un almacén de claves que se encuentre en la misma región que la máquina virtual que se va a cifrar.

Creación de un almacén de claves con PowerShell

Puede crear un almacén de claves con Azure PowerShell mediante el cmdlet New-AzKeyVault. Para obtener más cmdlets para Key Vault, consulte Az.KeyVault.

  1. Cree un nuevo grupo de recursos, si fuera necesario, con New-AzResourceGroup. Para enumerar las ubicaciones de los centro de datos, use Get-AzLocation.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Creación de un nuevo almacén de claves mediante New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Tenga en cuenta el nombre del almacén, el nombre del grupo de recursos, el id. de recurso, el URI de almacén y el id. de objeto que se devuelven para su uso posterior al cifrar los discos.

Creación de un almacén de claves con la CLI de Azure

Puede administrar el almacén de claves con CLI de Azure mediante los comandos az keyvault. Para crear un almacén de claves, use crear az keyvault.

  1. Cree un nuevo grupo de recursos, si es necesario, con crear grupo az. Para enumerar las ubicaciones, use az account list-locations.

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Cree un nuevo almacén de claves mediante az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Tenga en cuenta el nombre del almacén (nombre), el nombre del grupo de recursos, el id. de recurso (identificador), el URI de almacén y el id. de objeto que se devuelven para su uso posterior.

Creación de un almacén de claves con una plantilla de Resource Manager

Puede crear un almacén de claves con la plantilla de Resource Manager.

  1. En la plantilla de inicio rápido de Azure, seleccione Implementar en Azure.
  2. 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, a continuación, seleccione Comprar.

Configuración de una aplicación y una entidad de servicio de Microsoft Entra

Cuando necesite habilitar el cifrado en una máquina virtual en ejecución en Azure, Azure Disk Encryption genera y escribe las claves de cifrado en el almacén de claves. La administración de claves de cifrado en el almacén de claves requiere la autenticación de Microsoft Entra. Cree una aplicación de Microsoft Entra para este fin. Para la autenticación, se puede usar la autenticación basada en secretos de cliente o la autenticación de Microsoft Entra basada en certificados de cliente.

Configuración de una aplicación y una entidad de servicio de Microsoft Entra con Azure PowerShell

Para ejecutar los siguientes comandos, obtenga y use el módulo de Azure PowerShell.

  1. Use el cmdlet New-AzADApplication de PowerShell para crear una aplicación de Microsoft Entra. MyApplicationHomePage y MyApplicationUri pueden tener los valores que desee.

    $aadClientSecret = "My AAD client secret"
    $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force
    $azureAdApplication = New-AzADApplication -DisplayName "My Application Display Name" -HomePage "https://MyApplicationHomePage" -IdentifierUris "https://MyApplicationUri" -Password $aadClientSecretSec
    $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor
    
  2. $azureAdApplication.ApplicationId es el identificador de cliente de Microsoft Entra. $aadClientSecret es el secreto de cliente que usará más adelante para habilitar Azure Disk Encryption. Proteja adecuadamente el secreto de cliente de Microsoft Entra. Ejecutar $azureAdApplication.ApplicationId mostrará el valor de ApplicationID.

Configuración de una aplicación y una entidad de servicio de Microsoft Entra con la CLI de Azure

Puede administrar las entidades de servicio con CLI de Azure usando los comandos az ad sp. Para más información, consulte Creación de una entidad de servicio de Azure.

  1. Cree una nueva entidad de servicio.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. El valor de appId devuelto es el identificador de cliente de Microsoft Entra que se usa en otros comandos. También es el SPN que se va a usar para az keyvault set-policy. La contraseña es el secreto de cliente que se debe usar posteriormente para habilitar Azure Disk Encryption. Proteja adecuadamente el secreto de cliente de Microsoft Entra.

Configuración de una aplicación y una entidad de servicio de Microsoft Entra en Azure Portal

Siga los pasos que se indican en el artículo Creación de una aplicación y una entidad de servicio de Microsoft Entra con acceso a los recursos para crear una aplicación de Microsoft Entra. Cada paso que se enumera a continuación lo llevará directamente a la sección del artículo que hay que completar.

  1. Comprobar los permisos requeridos
  2. Crear una aplicación de Microsoft Entra
    • Puede utilizar cualquier nombre y dirección URL de inicio de sesión que desee al crear la aplicación.
  3. Obtener el identificador de aplicación y la clave de autenticación
    • La clave de autenticación es el secreto de cliente y se usa como el objeto AadClientSecret para Set-AzVMDiskEncryptionExtension.
      • La aplicación usa la clave de autenticación como credencial para iniciar sesión en Microsoft Entra ID. En Azure Portal, este secreto se denomina "claves", pero no tiene relación con los almacenes de claves. Proteja adecuadamente este secreto.
    • El identificador de aplicación se usará más adelante como objeto AadClientId para Set-AzVMDiskEncryptionExtension y como objeto ServicePrincipalName para Set-AzKeyVaultAccessPolicy.

Establecimiento de la directiva de acceso del almacén de claves para la aplicación de Microsoft Entra

Para escribir secretos de cifrado en un key vault especificado, Azure Disk Encryption necesita el identificador de cliente y el secreto de cliente de la aplicación de Microsoft Entra que tiene permisos para escribir secretos en el Key Vault.

Nota:

Nota: Azure Disk Encryption requiere que se configuren las siguientes directivas de acceso a la aplicación cliente de Microsoft Entra: permisos WrapKey y Set.

Establecimiento de la directiva de acceso del almacén de claves para la aplicación de Microsoft Entra con Azure PowerShell

La aplicación de Microsoft Entra necesita derechos de acceso a las claves o secretos del almacén. Use el cmdlet Set-AzKeyVaultAccessPolicy para conceder permisos a la aplicación, con el identificador de cliente (que se generó cuando se registró la aplicación) como valor del parámetro –ServicePrincipalName. Para obtener más información, consulte la entrada de blog Azure Key Vault - Step by Step (Azure Key Vault - Paso a paso).

  1. Establezca la directiva de acceso de Key Vault para la aplicación Microsoft Entra con PowerShell.

    $keyVaultName = 'MySecureVault'
    $aadClientID = 'MyAadAppClientID'
    $KVRGname = 'MyKeyVaultResourceGroup'
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
    

Establecimiento de la directiva de acceso del almacén de claves para la aplicación de Microsoft Entra con la CLI de Azure

Use az keyvault set-policy para establecer la directiva de acceso. Para más información, consulte Administración del almacén de claves mediante la CLI 2.0.

Conceda al principal de servicio que creó mediante la CLI de Azure acceso para obtener secretos y encapsular claves con el siguiente comando:

az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Microsoft Entra ClientID>" --key-permissions wrapKey --secret-permissions set

Establecimiento de la directiva de acceso del almacén de claves para la aplicación de Microsoft Entra en el portal

  1. Abra el grupo de recursos que contiene su Key Vault.
  2. Seleccione el almacén de claves, vaya a Directivas de acceso y, a continuación, seleccione Agregar nuevo.
  3. En Seleccionar la entidad de seguridad, busque la aplicación de Microsoft Entra que ha creado y selecciónela.
  4. Para Permisos de claves, active Encapsular clave en Operaciones criptográficas.
  5. Para Permisos de secretos, active Establecer en Operaciones de administración de secretos.
  6. Seleccione Aceptar para guardar la directiva de acceso.

Operaciones criptográficas de Azure Key Vault: Encapsular clave

Permisos de secretos de Azure Key Vault: Establecer

Establecimiento de directivas de acceso avanzadas del almacén de claves

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. Habilite el cifrado de disco en el almacén de claves o se producirá un error en las implementaciones.

Establecimiento de directivas de acceso avanzadas del almacén de claves con 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 el almacén de claves para el cifrado de disco: EnabledForDiskEncryption es necesario para el cifrado de discos de Azure.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Habilite el almacén de claves para la implementación, si es necesario: Habilita 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 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Habilitar el almacén de claves para la implementación de plantillas, si es necesario: Permite a Azure Resource Manager obtener secretos de este almacén de claves cuando se hace referencia a él en la implementación de una plantilla.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
    

Establecimiento de directivas de acceso avanzado de Key Vault mediante el CLI de Azure

Use az keyvault update para habilitar el cifrado de disco para el almacén de claves.

  • Habilitar el cofre de claves para el cifrado de discos: El valor enabled-for-disk-encryption es obligatorio.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Habilite el almacén de claves para la implementación, si es necesario: Permita que las máquinas virtuales recuperen certificados almacenados como secretos en el almacén.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Habilite el almacén de claves para la implementación de plantillas, si es necesario: Permita a Resource Manager recuperar secretos del almacén de claves.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
    

Establecimiento de directivas de acceso avanzadas del almacén de claves desde Azure Portal

  1. Seleccione el almacén de claves, seleccione Directivas de acceso y, después, haga clic para mostrar directivas de acceso avanzadas.
  2. Active la casilla etiquetada Habilitar el acceso a Azure Disk Encryption para el cifrado de volúmenes.
  3. Seleccione Habilitar el acceso a Azure máquinas virtuales para la implementación o Habilitar el acceso a Azure Resource Manager para la implementación de plantillas, si es necesario.
  4. Haga clic en Guardar.

Azure Key Vault directivas de acceso avanzadas

Configuración de una clave de cifrado de claves (KEK) (opcional)

Si quiere usar una clave de cifrado de claves (KEK) para una capa adicional de seguridad para las claves de cifrado, agregue una KEK al almacén de claves. Use el cmdlet Add-AzKeyVaultKey para crear una clave de cifrado de claves en el almacén de claves. También puede importar una KEK en el HSM de administración de claves local. Para obtener más información, consulte Key Vault documentación. 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.

  • Al generar las claves, use un tipo de clave RSA. Azure Disk Encryption no admite aún el uso de claves de curva elíptica.

  • El secreto del almacén de claves y las direcciones URL de KEK 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 Disk Encryption no admite la especificación de números de puerto como parte de los secretos del almacén de claves y las direcciones URL de KEK. Para ver ejemplos de direcciones URL de almacén de claves admitidas y no admitidas, consulte los siguientes:

    • Dirección URL de almacén de claves inaceptable https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    • Dirección URL de almacén de claves aceptable: https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Configuración de una clave de cifrado de claves con Azure PowerShell

Antes de usar el script de PowerShell, debe estar familiarizado con los requisitos previos de Azure Disk Encryption para entender los pasos en el script. Es posible que el script de ejemplo requiera cambios para adaptarse al entorno en cuestión. Este script crea todos los requisitos previos de Azure Disk Encryption y cifra una máquina virtual IaaS existente, encapsulando la clave de cifrado de disco mediante el uso de una clave de cifrado de claves.

 # Step 1: Create a new resource group and key vault in the same location.
	 # Fill in 'MyLocation', 'MyKeyVaultResourceGroup', and 'MySecureVault' with your values.
	 # Use Get-AzLocation to get available locations and use the DisplayName.
	 # To use an existing resource group, comment out the line for New-AzResourceGroup

     $Loc = 'MyLocation';
     $KVRGname = 'MyKeyVaultResourceGroup';
     $KeyVaultName = 'MySecureVault';
     New-AzResourceGroup –Name  $KVRGname –Location $Loc;
     New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc;
     $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname;
     $KeyVaultResourceId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).ResourceId;
     $diskEncryptionKeyVaultUrl = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).VaultUri;

 # Step 2: Create the Microsoft Entra application and service principal.
	 # Fill in 'MyAADClientSecret', "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
	 # MyApplicationHomePage and the MyApplicationUri can be any values you wish.

	 $aadClientSecret =  'MyAADClientSecret';
     $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
     $azureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
     $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor;
     $aadClientID = $azureAdApplication.ApplicationId;

 #Step 3: Enable the vault for disk encryption and set the access policy for the Microsoft Entra application.

	 Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption;
     Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName  $KVRGname;

 #Step 4: Create a new key in the key vault with the Add-AzKeyVaultKey cmdlet.
	 # Fill in 'MyKeyEncryptionKey' with your value.

	 $keyEncryptionKeyName = 'MyKeyEncryptionKey';
     Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
     $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;

 #Step 5: Encrypt the disks of an existing IaaS VM
	 # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

	 $VMName = 'MySecureVM';
      $VMRGName = 'MyVirtualMachineResourceGroup';
     Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;

Autenticación basada en certificados (opcional)

Si desea usar la autenticación de certificados, puede cargar una en el almacén de claves e implementarla en el cliente. Antes de usar el script de PowerShell, debe estar familiarizado con los requisitos previos de Azure Disk Encryption para entender los pasos en el script. Es posible que el script de ejemplo requiera cambios para adaptarse al entorno en cuestión.


 # Fill in "MyKeyVaultResourceGroup", "MySecureVault", and 'MyLocation' ('My location' only if needed)

   $KVRGname = 'MyKeyVaultResourceGroup'
   $KeyVaultName= 'MySecureVault'

   # Create a key vault and set enabledForDiskEncryption property on it.
   # Comment out the next three lines if you already have an existing key vault enabled for encryption. No need to set 'My location' in this case.

   $Loc = 'MyLocation'
   New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

   #Setting some variables with the key vault information
   $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
   $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
   $KeyVaultResourceId = $KeyVault.ResourceId

   # Create the Microsoft Entra application and associate the certificate with it.
   # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
   # MyApplicationHomePage and the MyApplicationUri can be any values you wish

   $CertPath = "C:\certificates\mycert.pfx"
   $CertPassword = "Password"
   $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
   $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

   $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
   $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

   $AADClientID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

   # Upload the pfx file to the Key Vault.
   # Fill in "MyAADCert".

   $KeyVaultSecretName = "MyAADCert"
   $FileContentBytes = get-content $CertPath -Encoding Byte
   $FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
           $JSONObject = @"
           {
               "data" : "$filecontentencoded",
               "dataType" : "pfx",
               "password" : "$CertPassword"
           }
"@

   $JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
   $JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

   #Set the secret and set the key vault policy for -EnabledForDeployment

   $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
   Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

   # Deploy the certificate to the VM
   # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

   $VMName = 'MySecureVM'
   $VMRGName = 'MyVirtualMachineResourceGroup'
   $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
   $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
   $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
   $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
   Update-AzVM -VM $VM -ResourceGroupName $VMRGName

   #Enable encryption on the VM using Microsoft Entra client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

Autenticación basada en certificados y una KEK (opcional)

Si desea usar la autenticación de certificados y encapsular la clave de cifrado con una KEK, puede usar el siguiente script como ejemplo. Antes de usar el script de PowerShell, debe estar familiarizado con todos los requisitos previos de Azure Disk Encryption anteriores para conocer los pasos en el script. Es posible que el script de ejemplo requiera cambios para adaptarse al entorno en cuestión.

Importante

Actualmente no se admite la autenticación basada en certificados de Microsoft Entra en las máquinas virtuales Linux.

# Fill in 'MyKeyVaultResourceGroup', 'MySecureVault', and 'MyLocation' (if needed)

   $KVRGname = 'MyKeyVaultResourceGroup'
   $KeyVaultName= 'MySecureVault'

   # Create a key vault and set enabledForDiskEncryption property on it.
   # Comment out the next three lines if you already have an existing key vault enabled for encryption.

   $Loc = 'MyLocation'
   New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

   # Create the Microsoft Entra application and associate the certificate with it.
   # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
   # MyApplicationHomePage and the MyApplicationUri can be any values you wish

   $CertPath = "C:\certificates\mycert.pfx"
   $CertPassword = "Password"
   $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
   $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

   $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
   $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

   $AADClientID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   ## Give access for setting secrets and wrapping keys
   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

   # Upload the pfx file to the Key Vault.
   # Fill in "MyAADCert".

   $KeyVaultSecretName = "MyAADCert"
   $FileContentBytes = get-content $CertPath -Encoding Byte
   $FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
           $JSONObject = @"
           {
               "data" : "$filecontentencoded",
               "dataType" : "pfx",
               "password" : "$CertPassword"
           }
"@

   $JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
   $JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

   #Set the secret and set the key vault policy for deployment

   $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
   Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

   #Setting some variables with the key vault information and generating a KEK
   # Fill in 'KEKName'

   $KEKName ='KEKName'
   $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
   $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
   $KeyVaultResourceId = $KeyVault.ResourceId
   $KEK = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
   $KeyEncryptionKeyUrl = $KEK.Key.kid



   # Deploy the certificate to the VM
   # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

   $VMName = 'MySecureVM';
   $VMRGName = 'MyVirtualMachineResourceGroup';
   $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
   $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
   $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
   $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
   Update-AzVM -VM $VM -ResourceGroupName $VMRGName

   #Enable encryption on the VM using Microsoft Entra client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

Pasos siguientes

Habilitación de Azure Disk Encryption con Microsoft Entra ID en máquinas virtuales Linux (versión anterior)