Criar um Key Vault para ADE com o Microsoft Entra ID

Importante

O Azure Disk Encryption está programado para ser descontinuado a 15 de setembro de 2028. Até essa data, pode continuar a usar o Azure Disk Encryption sem interrupções. A 15 de setembro de 2028, cargas de trabalho com ADE continuarão a funcionar, mas os discos encriptados não conseguirão desbloquear após o reinício da VM, resultando em interrupção do serviço.

Use encriptação na hospedagem para novas VMs, ou considere tamanhos de VM confidenciais com encriptação do disco do SO para workloads de computação confidencial. Todas as VMs habilitadas por ADE (incluindo backups) devem migrar para encriptação no host antes da data de desativação para evitar interrupções do serviço. Consulte Migrar de Encriptação de Disco Azure para Encriptação no Host para mais detalhes.

Aplica-se a: ✔️ VMs Windows

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, já não precisa de fornecer credenciais Microsoft Entra durante a etapa de ativar encriptação. Encripte todas as novas VMs usando a nova versão sem parâmetros de aplicação Microsoft Entra. Para instruções para ativar a encriptação de disco de VM usando a nova versão, consulte Azure Disk Encryption. VMs que já estavam encriptadas com parâmetros de aplicação Microsoft Entra continuam a ser suportadas. Continue a gerir essas VMs 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 Azure Disk Encryption com Microsoft Entra ID (versão anterior) envolve quatro etapas:

  1. Criar um cofre de chaves.
  2. Defina uma aplicação 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.

Também pode gerar ou importar uma chave de encriptação de chaves (KEK).

Consulte o artigo principal Criar e configurar um cofre de chaves para Azure Disk Encryption para os passos sobre como instalar ferramentas e ligar-se ao 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 encriptação não ultrapassam fronteiras regionais, o Azure Disk Encryption exige que o cofre de chaves e as VMs estejam na mesma região. Cria e usa um cofre de chaves na mesma região da VM que queres encriptar.

Crie um cofre de chaves usando o PowerShell

Pode criar um cofre de chaves usando o Azure PowerShell e o cmdlet New-AzKeyVault. Para outros comandos do Key Vault, veja 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. Crie um novo cofre de chaves usando o New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Note o nome do Cofre, o nome do grupo de recursos, o ID do Recurso, o URI do Cofre e o ID do Objeto que são devolvidos para uso posterior quando encriptar os discos.

Crie um cofre de chaves usando CLI do Azure

Podes gerir o teu cofre de chaves usando o CLI do Azure e os comandos do 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 o az-keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Note o nome do Cofre (nome), o nome do grupo de recursos, o ID do recurso (ID), o URI do Cofre e o ID do Objeto que são devolvidos para uso posterior.

Crie um cofre de chaves usando 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, grupo de recursos, localização do grupo de recursos, nome do cofre de chaves, ID do objeto, termos legais e acordo, e depois selecione Comprar.

Configurar uma aplicação 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.

Configure um principal de aplicação e serviço Microsoft Entra usando Azure PowerShell

Para executar os seguintes comandos, obtenha e utilize o módulo Azure PowerShell.

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

    $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 ID de cliente do Microsoft Entra e o $aadClientSecret é o segredo do cliente que irá utilizar mais tarde para ativar a Azure Disk Encryption. Proteja o segredo do cliente Microsoft Entra adequadamente. Executar $azureAdApplication.ApplicationId mostra o ID da aplicação.

Configure uma aplicação Microsoft Entra e um principal de serviço com a CLI do Azure

Pode gerir os seus princípios de serviço usando o CLI do Azure e os comandos az ad sp. Para obter mais informações, consulte Criar um principal 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 devolvido é o ID do cliente Microsoft Entra usado noutros comandos. É também o SPN que você usará para az keyvault set-policy. A palavra-passe é o segredo do cliente que usa mais tarde para ativar o Azure Disk Encryption. Proteja o segredo do cliente Microsoft Entra adequadamente.

Configurar uma aplicação e entidade de serviço Microsoft Entra através do portal Azure

Use os passos do artigo Use o portal para criar uma aplicação Microsoft Entra e uma entidade de serviço que possa aceder a recursos para criar uma aplicação Microsoft Entra. Cada um destes passos leva-o diretamente à secção do artigo para completar.

  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 da aplicação é 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 configure as políticas de acesso seguintes para a sua aplicação cliente Microsoft Entra: permissões WrapKey e permissões Set.

Defina a política de acesso ao cofre de chaves para a aplicação Microsoft Entra usando Azure PowerShell

O seu aplicativo Microsoft Entra precisa de permissões para aceder às 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 a aplicação AD usando o PowerShell.

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

Defina a política de acesso ao cofre de chaves para a aplicação Microsoft Entra usando o 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.

Conceda ao principal de serviço que criou com a CLI do Azure acesso para obter segredos e encapsular chaves com o seguinte comando:

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

Defina a política de acesso ao cofre de chaves para a aplicação Microsoft Entra usando o portal

  1. Abra o grupo de recursos com o cofre de chaves.
  2. Seleciona o teu cofre de chaves, vai a Políticas de Acesso e depois seleciona Adicionar novo.
  3. Em Selecionar principal, procure a aplicação Microsoft Entra que você criou e selecione-a.
  4. Para permissões de chave, verifique Enrolar Chave em Operações Criptográficas.
  5. Para permissões secretas, verifique Definir em operações de gestão secreta.
  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. Ative a encriptação de disco no cofre de chaves ou as implementações falham.

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

Use o cmdlet do PowerShell Set-AzKeyVaultAccessPolicy para ativar a encriptação de disco no cofre de chaves.

  • Ativar o Key Vault para encriptação de disco: O EnabledForDiskEncryption é necessário para o Azure Disk Encryption.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Habilite o Cofre da Chave para implantação, se necessário: Permite que o provedor de recursos Microsoft.Compute recupere 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çadas do cofre de chaves com a CLI do Azure

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

  • Habilitar o Key Vault para criptografia de disco: É necessário que esteja habilitado para a criptografia de disco.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Habilite o Cofre de Chaves 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 o seu cofre de chaves, vá a 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 Permitir acesso ao Máquinas Virtuais do Azure para implementação ou Permitir o acesso ao Azure Resource Manager para implementação de templates, 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 quiser usar uma chave de encriptação de chaves (KEK) para uma camada extra de segurança para chaves de encriptação, 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ê pode também importar um KEK do HSM de gestão de chaves local. Para mais informações, consulte a documentação do Key Vault. Quando uma chave de encriptação principal é especificada, o Azure Disk Encryption usa essa chave para envolver os segredos de encriptação antes de os gravar no Azure Key Vault.

  • Ao gerar chaves, use um tipo de chave RSA. O Azure Disk Encryption ainda não suporta o uso de chaves de curva elíptica.

  • O segredo do cofre de chaves e os URLs KEK devem ter versão. O Azure impõe essa restrição de controle de versão. Para URLs secretas e KEK válidas, consulte os seguintes exemplos:

  • Exemplo de um URL secreto válido: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • Exemplo de um URL KEK válido: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • O Azure Disk Encryption não suporta a especificação de números de porta como parte dos segredos do cofre de chaves e URLs KEK. Para obter exemplos de URLs de cofre de chaves não suportadas e suportadas, consulte os seguintes exemplos:

  • URL inaceitável do cofre de chaves https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

  • URL aceitável do cofre de chaves: https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Configure uma chave de encriptação de chaves usando o Azure PowerShell

Antes de utilizar o script do PowerShell, consulte os pré-requisitos do Azure Disk Encryption para compreender as etapas do 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 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;

Autenticação baseada em certificado (opcional)

Se quiseres usar autenticação de certificados, podes carregar um para o teu cofre de chaves e implementá-lo no cliente. Antes de utilizar o script do PowerShell, reveja os pré-requisitos do Azure Disk Encryption para compreender os passos do 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

  $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

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

Se quiser usar autenticação de certificado e envolver a chave de encriptação com um KEK, pode usar o script abaixo como exemplo. Antes de usares o script PowerShell, revê todos os pré-requisitos anteriores do Azure Disk Encryption para perceberes os passos do script. O script de exemplo pode precisar de alterações para seu ambiente.

# 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

Próximos passos

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