Partilhar via


Criando e configurando um cofre de chaves para o Azure Disk Encryption com o Microsoft Entra ID (versão anterior) para VMs Linux

Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível

A nova versão da Criptografia de Disco do Azure elimina a necessidade de fornecer um parâmetro de aplicativo Microsoft Entra para habilitar a criptografia de disco de VM. Com a nova versão, não é mais necessário fornecer credenciais do Microsoft Entra durante a etapa de habilitação de criptografia. Todas as novas VMs devem ser criptografadas sem os parâmetros do aplicativo Microsoft Entra usando a nova versão. Para exibir instruções para habilitar a criptografia de disco de VM usando a nova versão, consulte Criptografia de disco do Azure. As VMs que já foram criptografadas com os parâmetros do aplicativo Microsoft Entra ainda são suportadas e devem continuar a ser mantidas com a sintaxe do Microsoft Entra.

O Azure Disk Encryption usa o Azure Key Vault para controlar e gerenciar chaves e segredos de criptografia de disco. Para obter mais informações sobre cofres de chaves, consulte Introdução ao Cofre de Chaves do Azure e Proteger seu cofre de chaves.

Criar e configurar um cofre de chaves para uso com o Azure Disk Encryption com o Microsoft Entra ID (versão anterior) envolve três etapas:

  1. Criar um cofre de chaves.
  2. Configure um aplicativo e uma entidade de serviço do Microsoft Entra.
  3. Defina a política de acesso ao cofre de chaves para o aplicativo Microsoft Entra.
  4. Definir as políticas avançadas de acesso do cofre de chaves.

Você também pode, se desejar, gerar ou importar uma chave de criptografia de chave (KEK).

Consulte o artigo principal Criando e configurando um cofre de chaves para o Azure Disk Encryption para obter etapas sobre como instalar ferramentas e conectar-se ao Azure.

Nota

As etapas neste artigo são automatizadas no script CLI de pré-requisitos de Criptografia de Disco do Azure e no script PowerShell de pré-requisitos de Criptografia de Disco do Azure.

Criar um cofre de chaves

O Azure Disk Encryption é integrado ao Azure Key Vault para ajudá-lo a controlar e gerenciar as chaves e segredos de criptografia de disco em sua assinatura do cofre de chaves. Você pode criar um cofre de chaves ou usar um existente para o Azure Disk Encryption. Para obter mais informações sobre cofres de chaves, consulte Introdução ao Cofre de Chaves do Azure e Proteger seu cofre de chaves. Você pode usar um modelo do Gerenciador de Recursos, o Azure PowerShell ou a CLI do Azure para criar um cofre de chaves.

Aviso

Para garantir que os segredos de criptografia não cruzem os limites regionais, o Azure Disk Encryption precisa que o Cofre da Chave e as VMs estejam colocalizados na mesma região. Crie e use um Cofre da Chave que esteja na mesma região da VM a ser criptografada.

Criar um cofre de chaves com o PowerShell

Você pode criar um cofre de chaves com o Azure PowerShell usando o cmdlet New-AzKeyVault . Para obter cmdlets adicionais para o Cofre da Chave, consulte Az.KeyVault.

  1. Crie um novo grupo de recursos, se necessário, com New-AzResourceGroup. Para listar locais de data center, use Get-AzLocation.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Criar um novo cofre de chaves usando New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Observe o Nome do Vault, o Nome do Grupo de Recursos, o ID do Recurso, o URI do Vault e o ID do Objeto que são retornados para uso posterior quando você criptografa os discos.

Criar um cofre de chaves com a CLI do Azure

Você pode gerenciar seu cofre de chaves com a CLI do Azure usando os comandos az keyvault . Para criar um cofre de chaves, use az keyvault create.

  1. Crie um novo grupo de recursos, se necessário, com az group create. Para listar locais, use az account list-locations

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Crie um novo cofre de chaves usando az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Observe o Nome do Vault (nome), o Nome do Grupo de Recursos, o ID do Recurso (ID), o URI do Vault e o ID do Objeto que são retornados para uso posterior.

Criar um cofre de chaves com um modelo do Resource Manager

Você pode criar um cofre de chaves usando o modelo do Gerenciador de Recursos.

  1. No Modelo de Início Rápido do Azure, selecione Implantar no Azure.
  2. Selecione a subscrição, o grupo de recursos, a localização do grupo de recursos, o nome do Cofre da Chave, o ID do objeto, os termos legais e o contrato e, em seguida, selecione Comprar.

Configurar um aplicativo e uma entidade de serviço do Microsoft Entra

Quando você precisa que a criptografia seja habilitada em uma VM em execução no Azure, o Azure Disk Encryption gera e grava as chaves de criptografia em seu cofre de chaves. A gestão de chaves de encriptação no cofre de chaves requer autenticação do Microsoft Entra. Crie um aplicativo Microsoft Entra para essa finalidade. Para fins de autenticação, você pode usar a autenticação baseada em segredo do cliente ou a autenticação do Microsoft Entra baseada em certificado de cliente.

Configurar um aplicativo e uma entidade de serviço do Microsoft Entra com o Azure PowerShell

Para executar os comandos a seguir, obtenha e use o módulo do Azure PowerShell.

  1. Use o cmdlet New-AzADApplication PowerShell para criar um aplicativo Microsoft Entra. MyApplicationHomePage e o MyApplicationUri podem ser quaisquer valores que desejar.

    $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. O $azureAdApplication.ApplicationId é o Microsoft Entra ClientID e o $aadClientSecret é o segredo do cliente que você usará mais tarde para habilitar a Criptografia de Disco do Azure. Proteja o segredo do cliente Microsoft Entra adequadamente. A execução $azureAdApplication.ApplicationId mostrará o ApplicationID.

Configurar um aplicativo e uma entidade de serviço do Microsoft Entra com a CLI do Azure

Você pode gerenciar suas entidades de serviço com a CLI do Azure usando os comandos az ad sp . Para obter mais informações, consulte Criar uma entidade de serviço do Azure.

  1. Crie uma nova entidade de serviço.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. O appId retornado é o Microsoft Entra ClientID usado em outros comandos. É também o SPN que você usará para az keyvault set-policy. A senha é o segredo do cliente que você deve usar mais tarde para habilitar a Criptografia de Disco do Azure. Proteja o segredo do cliente Microsoft Entra adequadamente.

Configurar uma entidade de serviço e aplicativo Microsoft Entra por meio do portal do Azure

Use as etapas do artigo Usar portal para criar um aplicativo Microsoft Entra e uma entidade de serviço que possa acessar recursos para criar um aplicativo Microsoft Entra. Cada etapa listada abaixo irá levá-lo diretamente para a seção do artigo para concluir.

  1. Verificar as permissões necessárias
  2. Criar um aplicativo Microsoft Entra
    • Você pode usar qualquer nome e URL de logon que desejar ao criar o aplicativo.
  3. Obtenha o ID do aplicativo e a chave de autenticação.
    • A chave de autenticação é o segredo do cliente e é usada como AadClientSecret para Set-AzVMDiskEncryptionExtension.
      • A chave de autenticação é usada pelo aplicativo como uma credencial para entrar no Microsoft Entra ID. No portal do Azure, esse segredo é chamado de chaves, mas não tem relação com os cofres de chaves. Proteja este segredo adequadamente.
    • O ID do aplicativo será usado posteriormente como AadClientId para Set-AzVMDiskEncryptionExtension e como ServicePrincipalName para Set-AzKeyVaultAccessPolicy.

Definir a política de acesso ao cofre de chaves para o aplicativo Microsoft Entra

Para gravar segredos de criptografia em um Cofre de Chaves especificado, o Azure Disk Encryption precisa da ID do Cliente e do Segredo do Cliente do aplicativo Microsoft Entra que tem permissões para gravar segredos no Cofre da Chave.

Nota

O Azure Disk Encryption exige que você configure as seguintes políticas de acesso ao seu aplicativo cliente Microsoft Entra: permissões WrapKey e set .

Definir a política de acesso ao cofre de chaves para o aplicativo Microsoft Entra com o Azure PowerShell

Seu aplicativo Microsoft Entra precisa de direitos para acessar as chaves ou segredos no cofre. Use o cmdlet Set-AzKeyVaultAccessPolicy para conceder permissões ao aplicativo, usando a ID do cliente (que foi gerada quando o aplicativo foi registrado) como o valor do parâmetro –ServicePrincipalName . Para saber mais, consulte a postagem do blog Azure Key Vault - Step by Step.

  1. Defina a política de acesso ao cofre de chaves para o aplicativo AD com o PowerShell.

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

Definir a política de acesso ao cofre de chaves para o aplicativo Microsoft Entra com a CLI do Azure

Use az keyvault set-policy para definir a política de acesso. Para obter mais informações, consulte Manage Key Vault using CLI 2.0.

Dê à entidade de serviço que você criou por meio da CLI do Azure acesso para obter segredos e chaves de encapsulamento com o seguinte comando:

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

Definir a política de acesso ao cofre de chaves para o aplicativo Microsoft Entra com o portal

  1. Abra o grupo de recursos com o cofre de chaves.
  2. Selecione o cofre de chaves, aceda a Políticas de Acesso e, em seguida, selecione Adicionar novo.
  3. Em Selecionar entidade de segurança, procure o aplicativo Microsoft Entra que você criou e selecione-o.
  4. Para permissões de chave, marque Chave de encapsulamento em Operações criptográficas.
  5. Para permissões secretas, marque Definir em Operações de gerenciamento secreto.
  6. Selecione OK para salvar a política de acesso.

Operações criptográficas do Azure Key Vault - Wrap Key

Permissões secretas do Azure Key Vault - Definir

Definir as políticas avançadas de acesso do cofre de chaves

A plataforma Azure precisa de acesso às chaves de encriptação ou segredos no seu cofre de chaves para disponibilizá-los à VM para arranque e desencriptação dos volumes. Habilite a criptografia de disco no cofre de chaves ou as implantações falharão.

Definir políticas de acesso avançado do cofre de chaves com o Azure PowerShell

Use o cmdlet do PowerShell do cofre de chaves Set-AzKeyVaultAccessPolicy para habilitar a criptografia de disco para o cofre de chaves.

  • Habilitar o Cofre da Chave para criptografia de disco: EnabledForDiskEncryption é necessário para a criptografia de disco do Azure.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Habilite o Cofre da Chave para implantação, se necessário: habilita a Microsoft. Provedor de recursos de computação para recuperar segredos desse cofre de chaves quando esse cofre de chaves é referenciado na criação de recursos, por exemplo, ao criar uma máquina virtual.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Habilitar o Cofre da Chave para implantação de modelo, se necessário: Permite que o Azure Resource Manager obtenha segredos desse cofre de chaves quando esse cofre de chaves é referenciado em uma implantação de modelo.

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

Definir políticas de acesso avançado do cofre de chaves usando a CLI do Azure

Use az keyvault update para habilitar a criptografia de disco para o cofre de chaves.

  • Habilitar o Cofre da Chave para criptografia de disco: é necessário habilitar a criptografia de disco.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Habilite o Cofre da Chave para implantação, se necessário: permita que as máquinas virtuais recuperem certificados armazenados como segredos do cofre.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Habilite o Cofre da Chave para implantação de modelo, se necessário: permita que o Gerenciador de Recursos recupere segredos do cofre.

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

Definir políticas de acesso avançado do cofre de chaves através do portal do Azure

  1. Selecione seu cofre de chave, vá para Políticas de acesso e Clique para mostrar políticas de acesso avançadas.
  2. Marque a caixa Habilitar acesso à Criptografia de Disco do Azure para criptografia de volume.
  3. Selecione Habilitar acesso às Máquinas Virtuais do Azure para implantação e/ou Habilitar acesso ao Azure Resource Manager para implantação de modelo, se necessário.
  4. Selecione Guardar.

Políticas avançadas de acesso do cofre de chaves do Azure

Configurar uma chave de criptografia de chave (opcional)

Se você quiser usar uma chave de criptografia de chave (KEK) para uma camada adicional de segurança para chaves de criptografia, adicione um KEK ao seu cofre de chaves. Use o cmdlet Add-AzKeyVaultKey para criar uma chave de criptografia de chave no cofre de chaves. Você também pode importar um KEK do HSM de gerenciamento de chaves local. Para obter mais informações, consulte Documentação do Key Vault. Quando uma chave de criptografia de chave é especificada, o Azure Disk Encryption usa essa chave para encapsular os segredos de criptografia antes de gravar no Cofre da Chave.

Configurar uma chave de criptografia de chave com o Azure PowerShell

Antes de usar o script do PowerShell, você deve estar familiarizado com os pré-requisitos do Azure Disk Encryption para entender as etapas no script. O script de exemplo pode precisar de alterações para seu ambiente. Esse script cria todos os pré-requisitos do Azure Disk Encryption e criptografa uma VM IaaS existente, encapsulando a chave de criptografia de disco usando uma chave de criptografia de chave.

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

Autenticação baseada em certificado (opcional)

Se quiser usar a autenticação de certificado, você pode carregar um para o cofre de chaves e implantá-lo no cliente. Antes de usar o script do PowerShell, você deve estar familiarizado com os pré-requisitos do Azure Disk Encryption para entender as etapas no script. O script de exemplo pode precisar de alterações para seu ambiente.


# 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

Autenticação baseada em certificado e um KEK (opcional)

Se você quiser usar a autenticação de certificado e encapsular a chave de criptografia com um KEK, você pode usar o script abaixo como exemplo. Antes de usar o script do PowerShell, você deve estar familiarizado com todos os pré-requisitos anteriores do Azure Disk Encryption para entender as etapas no script. O script de exemplo pode precisar de alterações para seu ambiente.

Importante

Atualmente, a autenticação baseada em certificado do Microsoft Entra não é suportada em VMs 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

Próximos passos

Habilitar o Azure Disk Encryption com o Microsoft Entra ID em VMs Linux (versão anterior)