Crear un almacén de claves para ADE con Microsoft Entra ID

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 Windows

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 Microsoft Entra credenciales durante el paso de habilitación del cifrado. Cifre todas las máquinas virtuales nuevas con la nueva versión sin parámetros de aplicación de Microsoft Entra. Para obtener 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 estaban cifradas con parámetros de aplicación Microsoft Entra siguen siendo compatibles. Siga manteniendo esas máquinas virtuales con la sintaxis 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.

La creación y configuración de un almacén de claves para su uso con Azure Disk Encryption con Microsoft Entra ID (versión anterior) implica cuatro 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.

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

Consulte el artículo principal Creación y configuración de un almacén de claves para Azure Disk Encryption para ver los pasos sobre cómo instalar 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

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

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

Puede crear un almacén de claves mediante Azure PowerShell y el cmdlet New-AzKeyVault. Para ver 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. 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 identificador de recurso, el URI del almacén y el identificador de objeto que se devuelven para su uso posterior al cifrar los discos.

Creación de un almacén de claves mediante CLI de Azure

Puede administrar el almacén de claves mediante CLI de Azure y 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. Anote el nombre del almacén (nombre), el nombre del grupo de recursos, el identificador de recurso ( ID ), el URI del almacén y el identificador de objeto que se devuelven para su uso más adelante.

Creación de un almacén de claves mediante 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

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 de Microsoft Entra y una entidad de servicio mediante Azure PowerShell

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

  1. Use el cmdlet New-AzADApplication de PowerShell para crear una aplicación de Microsoft Entra. MyApplicationHomePage y MyApplicationUri pueden ser cualquier valor que elija.

    $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 Microsoft Entra y el $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. Al ejecutar $azureAdApplication.ApplicationId, se muestra el identificador de la aplicación.

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

Puede administrar las entidades de servicio con la CLI de Azure y 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 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 usa más adelante 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 uno de estos pasos te lleva directamente a la sección correspondiente del artículo para completarla.

  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 usa más adelante como AadClientId para Set-AzVMDiskEncryptionExtension y como 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.

Establezca 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 mediante PowerShell.

    $keyVaultName = 'MySecureVault'
    $aadclient ID = 'MyAadAppclient ID'
    $KVRGname = 'MyKeyVaultResourceGroup'
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
    

Establecer la directiva de acceso del almacén de claves para la aplicación de Microsoft Entra mediante 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ó a través de la CLI de Azure acceso para obtener los secretos y encapsular las claves con el comando siguiente:

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

Establezca la directiva de acceso de Key Vault para la aplicación Microsoft Entra mediante 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 seleccione Agregar nuevo.
  3. En Seleccionar la entidad de seguridad, busque la aplicación de Microsoft Entra que ha creado y selecciónela.
  4. En Permisos de la clave, seleccione Encapsular clave en Operaciones criptográficas.
  5. En Permisos de secretos, seleccione Establecer debajo de 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 produce un error en las implementaciones.

Establecimiento de directivas de acceso avanzado de Key Vault mediante 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 Azure Disk Encryption.

    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 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 Key Vault para el cifrado de disco: se requiere 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 recuperen certificado 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 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 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.

Directivas de acceso avanzado de Azure Key Vault

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 aún no admite 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 mediante Azure PowerShell

Antes de usar el script de PowerShell, revise con los requisitos previos de Azure Disk Encryption para comprender los pasos del 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 that you choose.

	 $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;
    $aadclient ID = $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 $aadclient ID -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 -Aadclient ID $aadclient ID -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, revise con los requisitos previos de Azure Disk Encryption para comprender los pasos del 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

  $AADclient ID = $AzureAdApplication.ApplicationId
  $aadClientCertThumbprint= $cert.Thumbprint

  Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -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 by using Microsoft Entra client ID and the client certificate thumbprint

  Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -Aadclient ID $AADclient ID -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, revise con todos los requisitos previos de Azure Disk Encryption anteriores para comprender los pasos del script. Es posible que el script de ejemplo requiera cambios para adaptarse al entorno en cuestión.

# 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

   $AADclient ID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   ## Give access for setting secrets and wrapping keys
   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -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 by using Microsoft Entra client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -Aadclient ID $AADclient ID -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 Windows (versión anterior)