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

Se aplica a: ✔️ máquinas virtuales 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 hace falta especificar las credenciales de Microsoft Entra en el paso de habilitación del cifrado. Con esta nueva versión, todas las máquinas virtuales nuevas deben cifrarse sin parámetros de aplicación de Microsoft Entra. Para ver las instrucciones necesarias para habilitar el cifrado de disco de máquina virtual con la nueva versión, consulte Azure Disk Encryption. Las máquinas virtuales que ya se han 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 almacén de claves.
  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.

Si lo desea, 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.

Creación de un Almacén 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 la CLI de Azure para crear un almacén de claves.

Advertencia

Con el fin de garantizar que los secretos de cifrado no traspasen los límites regionales, Azure Disk Encryption necesita que Key Vault y las máquinas virtuales estén ubicadas conjuntamente en la misma región. Cree y use una instancia de Key Vault 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 otros cmdlets de 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. Cree un nuevo almacén de claves con 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 la CLI de Azure mediante el comando 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 con crear az keyvault.

    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 luego seleccione Comprar.

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

Si es preciso habilitar el cifrado en una máquina virtual en ejecución en Azure, Azure Disk Encryption genera y escribe las claves de cifrado en su 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 la CLI de Azure mediante el comando 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 los secretos de cifrado en un almacén de claves especificado, Azure Disk Encryption necesita el identificador y el secreto de cliente de la aplicación de Microsoft Entra que tiene permisos para escribir secretos en 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 del almacén de claves para la aplicación de AD 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 de Key Vault mediante CLI 2.0.

Conceda a la entidad de servicio que creó mediante la CLI de Azure accesp para obtener los secretos y encapsular las claves con el comando siguiente:

az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Azure AD 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 con el almacén de claves.
  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.

Azure Key Vault cryptographic operations - Wrap Key

Azure Key Vault Secret permissions - Set

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 Key Vault para el cifrado de disco: se requiere EnabledForDiskEncryption para el cifrado de Azure Disk.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -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 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -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 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
    

Establecimiento de directivas de acceso avanzadas del almacén de claves mediante la CLI de Azure

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 "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Habilitar Key Vault para la implementación, si es necesario: permite que Virtual Machines recupere certificados almacenados como secretos del almacén.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --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 "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, vaya a Directivas de acceso y Haga clic para mostrar las directivas de acceso avanzado.
  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 Virtual Machines para la implementación o Habilitar el acceso a Azure Resource Manager para la implementación de plantillas, si es necesario.
  4. Seleccione Guardar.

Azure key vault advanced access policies

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

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. 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 más información, consulte la documentación de Key Vault. 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.

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 AD 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 certificado, puede cargar uno en el almacén de claves e implementarlo 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 certificado 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 Azure AD 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 wraping 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 Azure AD 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)