Creación y configuración de un almacén de claves para Azure Disk Encryption con Azure AD (versión anterior) para máquinas virtuales LinuxCreating and configuring a key vault for Azure Disk Encryption with Azure AD (previous release) for Linux VMs

La nueva versión de Azure Disk Encryption elimina la necesidad de proporcionar un parámetro de aplicación de Azure AD para habilitar el cifrado de disco de máquina virtual. Con la nueva versión, ya no es necesario proporcionar credenciales de Azure AD durante el paso de habilitar el cifrado. Todas las nuevas máquinas virtuales deben estar cifradas sin los parámetros de aplicación de Azure AD con la nueva versión. 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 aplicación de Azure AD se siguen admitiendo y se deben seguir manteniendo con la sintaxis de AAD.The new release of Azure Disk Encryption eliminates the requirement for providing an Azure AD application parameter to enable VM disk encryption. With the new release, you are no longer required to provide Azure AD credentials during the enable encryption step. All new VMs must be encrypted without the Azure AD application parameters using the new release. To view instructions to enable VM disk encryption using the new release, see Azure Disk Encryption. VMs that were already encrypted with Azure AD application parameters are still supported and should continue to be maintained with the AAD syntax.

Azure Disk Encryption usa Azure Key Vault para controlar y administrar las claves y los secretos de cifrado de discos.Azure Disk Encryption uses Azure Key Vault to control and manage disk encryption keys and secrets. 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.For more information about key vaults, see Get started with Azure Key Vault and Secure your key vault.

Para crear y configurar un almacén de claves para Azure Disk Encryption con Azure AD (versión anterior) debe seguir estos tres pasos:Creating and configuring a key vault for use with Azure Disk Encryption with Azure AD (previous release) involves three steps:

  1. Cree un almacén de claves.Create a key vault.
  2. Configure una aplicación de Azure AD y una entidad de servicio.Set up an Azure AD application and service principal.
  3. Establezca la directiva de acceso del almacén de claves para la aplicación de Azure AD.Set the key vault access policy for the Azure AD app.
  4. Configure las directivas de acceso avanzado del almacén de claves.Set key vault advanced access policies.

Si lo desea, también puede generar o importar una clave de cifrado de claves (KEK).You may also, if you wish, generate or import a key encryption key (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.See the main Creating and configuring a key vault for Azure Disk Encryption article for steps on how to Install tools and connect to Azure.

Creación de un Almacén de clavesCreate a key vault

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.Azure Disk Encryption is integrated with Azure Key Vault to help you control and manage the disk-encryption keys and secrets in your key vault subscription. Puede crear un almacén de claves o usar uno existente para Azure Disk Encryption.You can create a key vault or use an existing one for 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.For more information about key vaults, see Get started with Azure Key Vault and Secure your key vault. Puede usar una plantilla de Resource Manager, Azure PowerShell o la CLI de Azure para crear un almacén de claves.You can use a Resource Manager template, Azure PowerShell, or the Azure CLI to create a key vault.

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.In order to make sure the encryption secrets don’t cross regional boundaries, Azure Disk Encryption needs the Key Vault and the VMs to be co-located in the same region. 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.Create and use a Key Vault that is in the same region as the VM to be encrypted.

Crear un almacén de claves con PowerShellCreate a key vault with PowerShell

Puede crear un almacén de claves con Azure PowerShell mediante el cmdlet New-AzKeyVault.You can create a key vault with Azure PowerShell using the New-AzKeyVault cmdlet. Para otros cmdlets de Key Vault, consulte Az.KeyVault.For additional cmdlets for Key Vault, see Az.KeyVault.

  1. Cree un nuevo grupo de recursos, si fuera necesario, con New-AzResourceGroup.Create a new resource group, if needed, with New-AzResourceGroup. Para enumerar las ubicaciones de los centro de datos, use Get-AzLocation.To list data center locations, use Get-AzLocation.

    # Get-AzLocation 
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Cree un nuevo almacén de claves con New-AzKeyVault.Create a new key vault using 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.Note the Vault Name, Resource Group Name, Resource ID, Vault URI, and the Object ID that are returned for later use when you encrypt the disks.

Crear un almacén de claves con la CLI de AzureCreate a key vault with Azure CLI

Puede administrar el almacén de claves con la CLI de Azure mediante el comando az keyvault.You can manage your key vault with Azure CLI using the az keyvault commands. Para crear un almacén de claves, use crear az keyvault.To create a key vault, use az keyvault create.

  1. Cree un nuevo grupo de recursos, si es necesario, con crear grupo az.Create a new resource group, if needed, with az group create. Para enumerar las ubicaciones, use az account list-locations.To list locations, 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.Create a new key vault using 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.Note the Vault Name (name), Resource Group Name, Resource ID (ID), Vault URI, and the Object ID that are returned for use later.

Crear un almacén de claves con una plantilla de Resource ManagerCreate a key vault with a Resource Manager template

Puede crear un almacén de claves con la plantilla de Resource Manager.You can create a key vault by using the Resource Manager template.

  1. En la plantilla de inicio rápido de Azure, haga clic en Deploy to Azure (Implementar en Azure).On the Azure quickstart template, click Deploy to 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 id. de objeto, los términos legales y el contrato, y luego haga clic en Comprar.Select the subscription, resource group, resource group location, Key Vault name, Object ID, legal terms, and agreement, and then click Purchase.

Configurar una aplicación de Azure AD y una entidad de servicioSet up an Azure AD app and service principal

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.When you need encryption to be enabled on a running VM in Azure, Azure Disk Encryption generates and writes the encryption keys to your key vault. La administración de claves de cifrado en el almacén de claves necesita la autenticación de Azure AD.Managing encryption keys in your key vault requires Azure AD authentication. Para ello, cree una aplicación de Azure AD.Create an Azure AD application for this purpose. Para realizar la autenticación, se pueden usar la autenticación basada en secreto de cliente o la autenticación de Azure AD basada en certificado del cliente.For authentication purposes, you can use either client secret-based authentication or client certificate-based Azure AD authentication.

Configurar una aplicación de Azure AD y una entidad de servicio con Azure PowerShellSet up an Azure AD app and service principal with Azure PowerShell

Para ejecutar los siguientes comandos, obtenga y use el módulo de PowerShell de Azure AD.To execute the following commands, get and use the Azure AD PowerShell module.

  1. Use el cmdlet New-AzADApplication de PowerShell para crear una aplicación de Azure AD.Use the New-AzADApplication PowerShell cmdlet to create an Azure AD application. MyApplicationHomePage y MyApplicationUri pueden tener los valores que desee.MyApplicationHomePage and the MyApplicationUri can be any values you wish.

    $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
    
  2. $azureAdApplication.ApplicationId es el identificador de cliente de Azure AD y $aadClientSecret es el secreto de cliente que usará posteriormente para habilitar Azure Disk Encryption.The $azureAdApplication.ApplicationId is the Azure AD ClientID and the $aadClientSecret is the client secret that you will use later to enable Azure Disk Encryption. Proteja el secreto del cliente de Azure AD apropiadamente.Safeguard the Azure AD client secret appropriately. Ejecutar $azureAdApplication.ApplicationId mostrará el valor de ApplicationID.Running $azureAdApplication.ApplicationId will show you the ApplicationID.

Configurar una aplicación de Azure AD y una entidad de servicio con la CLI de AzureSet up an Azure AD app and service principal with Azure CLI

Puede administrar las entidades de servicio con la CLI de Azure mediante el comando az ad sp.You can manage your service principals with Azure CLI using the az ad sp commands. Para más información, consulte Creación de una entidad de servicio de Azure.For more information, see Create an Azure service principal.

  1. Cree una nueva entidad de servicio.Create a new service principal.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --skip-assignment 
    
  2. El valor de appId devuelto es el identificador de cliente de Azure AD que se usa en otros comandos.The appId returned is the Azure AD ClientID used in other commands. También es el SPN que se va a usar para az keyvault set-policy.It's also the SPN you'll use for az keyvault set-policy. La contraseña es el secreto de cliente que se debe usar posteriormente para habilitar Azure Disk Encryption.The password is the client secret that you should use later to enable Azure Disk Encryption. Proteja el secreto del cliente de Azure AD apropiadamente.Safeguard the Azure AD client secret appropriately.

Configurar una aplicación de Azure AD y una entidad de servicioa través de Azure PortalSet up an Azure AD app and service principal though the Azure portal

Siga los pasos que aparecen en el artículo Uso del portal para crear una aplicación de Azure Active Directory y una entidad de servicio con acceso a los recursos para crear una aplicación de Azure AD.Use the steps from the Use portal to create an Azure Active Directory application and service principal that can access resources article to create an Azure AD application. Cada paso que se enumera a continuación lo llevará directamente a la sección del artículo que hay que completar.Each step listed below will take you directly to the article section to complete.

  1. Comprobar los permisos requeridosVerify required permissions
  2. Crear una aplicación de Azure Active DirectoryCreate an Azure Active Directory application
    • Puede utilizar cualquier nombre y dirección URL de inicio de sesión que desee al crear la aplicación.You can use any name and sign-on URL you would like when creating the application.
  3. Obtener el identificador de aplicación y la clave de autenticaciónGet the application ID and the authentication key.
    • La clave de autenticación es el secreto de cliente y se usa como el objeto AadClientSecret para Set-AzVMDiskEncryptionExtension.The authentication key is the client secret and is used as the AadClientSecret for Set-AzVMDiskEncryptionExtension.
      • La aplicación usa la clave de autenticación como una credencial para iniciar sesión en Azure AD.The authentication key is used by the application as a credential to sign in to Azure AD. En Azure Portal, este secreto se denomina "claves", pero no tiene relación con los almacenes de claves.In the Azure portal, this secret is called keys, but has no relation to key vaults. Proteja adecuadamente este secreto.Secure this secret appropriately.
    • El identificador de aplicación se usará más adelante como objeto AadClientId para Set-AzVMDiskEncryptionExtension y como objeto ServicePrincipalName para Set-AzKeyVaultAccessPolicy.The application ID will be used later as the AadClientId for Set-AzVMDiskEncryptionExtension and as the ServicePrincipalName for Set-AzKeyVaultAccessPolicy.

Establecer la directiva de acceso del almacén de claves para la aplicación de Azure ADSet the key vault access policy for the Azure AD app

Para escribir los secretos de cifrado en un almacén de claves especificado, Azure Disk Encryption necesita el identificador de cliente y el secreto de cliente de la aplicación de Azure Active Directory que tenga permisos para escribir secretos en Key Vault.To write encryption secrets to a specified Key Vault, Azure Disk Encryption needs the Client ID and the Client Secret of the Azure Active Directory application that has permissions to write secrets to the Key Vault.

Nota

Azure Disk Encryption requiere que configure las siguientes directivas de acceso a la aplicación de cliente de Azure AD: los permisos WrapKey y Set.Azure Disk Encryption requires you to configure the following access policies to your Azure AD client application: WrapKey and Set permissions.

Establecer la directiva de acceso del almacén de claves para la aplicación de Azure AD con Azure PowerShellSet the key vault access policy for the Azure AD app with Azure PowerShell

La aplicación de Azure AD necesita derechos de acceso a las claves o secretos del almacén.Your Azure AD application needs rights to access the keys or secrets in the vault. 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.Use the Set-AzKeyVaultAccessPolicy cmdlet to grant permissions to the application, using the client ID (which was generated when the application was registered) as the –ServicePrincipalName parameter value. Para obtener más información, consulte la entrada de blog Azure Key Vault - Step by Step (Azure Key Vault - Paso a paso).To learn more, see the blog post Azure Key Vault - Step by Step.

  1. Establezca la directiva de acceso del almacén de claves para la aplicación de AD con PowerShell.Set the key vault access policy for the AD application with PowerShell.

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

Establecer la directiva de acceso del almacén de claves para la aplicación de Azure AD con la CLI de AzureSet the key vault access policy for the Azure AD app with Azure CLI

Use az keyvault set-policy para establecer la directiva de acceso.Use az keyvault set-policy to set the access policy. Para más información, consulte Administración de Key Vault mediante CLI 2.0.For more information, see Manage Key Vault using 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:Give the service principal you created via the Azure CLI access to get secrets and wrap keys with the following command:

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

Establecer la directiva de acceso del almacén de claves para la aplicación de Azure AD con el portalSet the key vault access policy for the Azure AD app with the portal

  1. Abra el grupo de recursos con el almacén de claves.Open the resource group with your key vault.
  2. Seleccione el almacén de claves, vaya a Directivas de acceso y haga clic en Agregar nuevo.Select your key vault, go to Access Policies, then click Add new.
  3. En Select principal (Seleccionar la entidad de seguridad), busque la aplicación de Azure AD que creó y selecciónela.Under Select principal, search for the Azure AD application you created and select it.
  4. Para Permisos de claves, active Encapsular clave en Operaciones criptográficas.For Key permissions, check Wrap Key under Cryptographic Operations.
  5. Para Permisos de secretos, active Establecer en Operaciones de administración de secretos.For Secret permissions, check Set under Secret Management Operations.
  6. Haga clic en Aceptar para guardar la directiva de acceso.Click OK to save the access policy.

Operaciones criptográficas de Azure Key Vault: Encapsular clave

Permisos de secretos de Azure Key Vault: Establecer

Configurar las directivas de acceso avanzado del almacén de clavesSet key vault advanced access policies

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.The Azure platform needs access to the encryption keys or secrets in your key vault to make them available to the VM for booting and decrypting the volumes. Habilite el cifrado de disco en el almacén de claves o se producirá un error en las implementaciones.Enable disk encryption on the key vault or deployments will fail.

Establecer las directivas de acceso avanzado del almacén de claves con Azure PowerShellSet key vault advanced access policies with 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.Use the key vault PowerShell cmdlet Set-AzKeyVaultAccessPolicy to enable disk encryption for the key vault.

  • Habilitar Key Vault para el cifrado de disco: se requiere EnabledForDiskEncryption para el cifrado de Azure Disk.Enable Key Vault for disk encryption: EnabledForDiskEncryption is required for 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.Enable Key Vault for deployment, if needed: Enables the Microsoft.Compute resource provider to retrieve secrets from this key vault when this key vault is referenced in resource creation, for example when creating a virtual machine.

     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.Enable Key Vault for template deployment, if needed: Enables Azure Resource Manager to get secrets from this key vault when this key vault is referenced in a template deployment.

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

Establecer directivas de acceso avanzado del almacén de claves mediante la CLI de AzureSet key vault advanced access policies using the Azure CLI

Use az keyvault update para habilitar el cifrado de disco para el almacén de claves.Use az keyvault update to enable disk encryption for the key vault.

  • Habilitar Key Vault para el cifrado de disco: Es necesario Enabled-for-disk-encryption.Enable Key Vault for disk encryption: Enabled-for-disk-encryption is required.

    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.Enable Key Vault for deployment, if needed: Allow Virtual Machines to retrieve certificates stored as secrets from the vault.

    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.Enable Key Vault for template deployment, if needed: Allow Resource Manager to retrieve secrets from the vault.

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

Establecer directivas de acceso avanzado del almacén de claves a través de Azure PortalSet key vault advanced access policies through the Azure portal

  1. Seleccione el almacén de claves, vaya a Directivas de acceso y Haga clic para mostrar las directivas de acceso avanzado.Select your keyvault, go to Access Policies, and Click to show advanced access policies.
  2. Active la casilla etiquetada Habilitar el acceso a Azure Disk Encryption para el cifrado de volúmenes.Select the box labeled Enable access to Azure Disk Encryption for volume encryption.
  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.Select Enable access to Azure Virtual Machines for deployment and/or Enable Access to Azure Resource Manager for template deployment, if needed.
  4. Haga clic en Save(Guardar).Click Save.

Directivas de acceso avanzado de Azure Key Vault

Configurar una clave de cifrado de claves (opcional)Set up a key encryption key (optional)

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.If you want to use a key encryption key (KEK) for an additional layer of security for encryption keys, add a KEK to your key vault. Use el cmdlet Add-AzKeyVaultKey para crear una clave de cifrado de claves en el almacén de claves.Use the Add-AzKeyVaultKey cmdlet to create a key encryption key in the key vault. También puede importar una KEK en el HSM de administración de claves local.You can also import a KEK from your on-premises key management HSM. Para más información, consulte la documentación de Key Vault.For more information, see Key Vault Documentation. 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.When a key encryption key is specified, Azure Disk Encryption uses that key to wrap the encryption secrets before writing to Key Vault.

Configurar una clave de cifrado de claves con Azure PowerShellSet up a key encryption key with 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.Before using the PowerShell script, you should be familiar with the Azure Disk Encryption prerequisites to understand the steps in the script. Es posible que el script de ejemplo requiera cambios para adaptarse al entorno en cuestión.The sample script might need changes for your environment. 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.This script creates all Azure Disk Encryption prerequisites and encrypts an existing IaaS VM, wrapping the disk encryption key by using a key encryption key.

# 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;
    $aadClientID = $azureAdApplication.ApplicationId;
    
#Step 3: Enable the vault for disk encryption and set the access policy for the Azure AD 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)Certificate-based authentication (optional)

Si desea usar la autenticación de certificado, puede cargar uno en el almacén de claves e implementarlo en el cliente.If you would like to use certificate authentication, you can upload one to your key vault and deploy it to the client. 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.Before using the PowerShell script, you should be familiar with the Azure Disk Encryption prerequisites to understand the steps in the script. Es posible que el script de ejemplo requiera cambios para adaptarse al entorno en cuestión.The sample script might need changes for your environment.


# 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 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

  $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 Azure AD 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)Certificate-based authentication and a KEK (optional)

Si desea usar la autenticación de certificado y encapsular la clave de cifrado con una KEK, puede usar el siguiente script como ejemplo.If you would like to use certificate authentication and wrap the encryption key with a KEK, you can use the below script as an example. 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.Before using the PowerShell script, you should be familiar with all of the previous Azure Disk Encryption prerequisites to understand the steps in the script. Es posible que el script de ejemplo requiera cambios para adaptarse al entorno en cuestión.The sample script might need changes for your environment.

Importante

Actualmente no se admite la autenticación basada en certificado de Azure AD en máquinas virtuales con Linux.Azure AD certificate-based authentication is currently not supported on Linux VMs.

# 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

  $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 siguientesNext steps

Habilitación de Azure Disk Encryption con Azure AD en máquinas virtuales Linux (versión anterior)Enable Azure Disk Encryption with Azure AD on Linux VMs (previous release)