Criação e configuração de um cofre de chaves para o Azure Disk Encryption com o Microsoft Entra ID (versão anterior) para VMs Linux
Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis
A nova versão do Azure Disk Encryption elimina a exigência 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 exigido que você forneça as credenciais do Microsoft Entra durante a etapa de habilitação da criptografia. Todas as novas VMs devem ser criptografadas sem os parâmetros do aplicativo Microsoft Entra utilizando a nova versão. Para exibir instruções para habilitar a criptografia de disco da VM usando a nova versão, confira Azure Disk Encryption. As VMs que já estavam criptografadas com os parâmetros do aplicativo Microsoft Entra ainda têm suporte e devem continuar a ser mantidas com a sintaxe do Microsoft Entra.
O Azure Disk Encryption usa o Azure Key Vault para ajudar você a controlar e gerenciar os segredos e chaves de criptografia de disco. Para obter mais informações sobre cofres-chave, consulte Introdução ao Cofre de Chaves do Azure e Proteja seu cofre de chaves.
A criação e configuração de um cofre de chaves para usar com o Azure Disk Encryption com o Microsoft Entra ID (versão anterior) envolve três etapas:
- Crie um cofre da chave.
- Configure um aplicativo Microsoft Entra e uma entidade de serviço.
- Definir a política de acesso do cofre de chaves para o aplicativo Microsoft Entra.
- Defina as políticas de acesso avançado da chave de segurança.
Caso queira, também é possível gerar ou importar uma KEK (chave de criptografia de chave).
Consulte o artigo principal Criação e configuração de um cofre de chaves para o Azure Disk Encryption para saber as etapas de como instalar as ferramentas e conectar-se ao Azure.
Observação
As etapas neste artigo são automatizadas no Script de CLI de pré-requisitos do Azure Disk Encryption e no Script do PowerShell de pré-requisitos do Azure Disk Encryption.
Criar um cofre de chaves
O Azure Disk Encryption se integra Azure Key Vault para ajudá-lo a controlar e gerenciar as chaves de criptografia de disco e segredos 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-chave, consulte Introdução ao Cofre de Chaves do Azure e Proteja seu cofre de chaves. Você pode usar um modelo do Resource Manager, o Azure PowerShell ou a CLI do Azure para criar um cofre de chaves.
Aviso
Para garantir que os segredos de criptografia não ultrapassem os limites regionais, o Azure Disk Encryption precisa que o Key Vault e as VMs sejam colocados na mesma região. Crie e use um cofre de chaves 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. Consulte Az.KeyVault para outros cmdlets para o Key Vault.
Criar um novo grupo de recursos, se necessário, com New-AzResourceGroup. Use Get-AzLocation para listar os locais de data center.
# Get-AzLocation New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
Criar um novo cofre de chaves usando New-AzKeyVault
New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
Observe a nome do cofre, nome do grupo de recursos, ID do recurso, URI do cofree o ID de objeto que são retornados para uso posterior ao criptografar os discos.
Criar um cofre de chaves com CLI do Azure
Você pode gerenciar o Cofre de chaves com CLI do Azure usando os comandos keyvault az. Para criar um cofre de chaves, use az creata.
Criar um novo grupo de recursos, se necessário, com criar grupo de az. Para listar os locais, use az account list-locations
# To list locations: az account list-locations --output table az group create -n "MyKeyVaultResourceGroup" -l "East US"
Crie um novo cofre de chave usando az keyvault create.
az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
Observação o nome do cofre (nome), nome do grupo de recursos, ID do recurso (ID), URI do cofree o deIDdeobjeto 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 Resource Manager.
- No modelo de início rápido do Azure, selecione Implantar no Azure.
- Selecione a assinatura, o grupo de recursos, a localização do grupo de recursos, o nome do Key Vault, a ID do Objeto, os termos legais e o contrato e, em seguida, Comprar.
Configurar um aplicativo Microsoft Entra e uma entidade de serviço
Quando você precisa habilitar a criptografia em uma VM em execução no Azure, o Azure Disk Encryption gera e grava as chaves de criptografia no cofre de chaves. O gerenciamento de chaves de criptografia no cofre de chaves requer a autenticação do Microsoft Entra. Crie um aplicativo do 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 do cliente.
Configurar um aplicativo Microsoft Entra e uma entidade de serviço com o Azure PowerShell
Para executar os comandos a seguir, obtenha e use o módulo do Azure PowerShell.
Use o cmdlet New-AzADApplication do PowerShell para criar um aplicativo Microsoft Entra. MyApplicationHomePage e MyApplicationUri podem ser quaisquer valores que você 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
O $ azureAdApplication.ApplicationId é o ClientID do Microsoft Entra e o $aadClientSecret é o segredo do cliente que você usará posteriormente para habilitar o Azure Disk Encryption. Proteja o segredo do cliente do Microsoft Entra adequadamente. A execução
$azureAdApplication.ApplicationId
mostrará o ApplicationID.
Configurar um aplicativo Microsoft Entra e uma entidade de serviço com a CLI do Azure
Você pode gerenciar seus principais de serviço com a CLI do Azure usando os comandos az ad sp. Para mais informações, consulte Criar uma entidade de serviço do Azure.
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>
O appId retornado é o ClientID do Microsoft Entra usado em outros comandos. Ele é também o SPN que você usará para az keyvault set-policy. A senha é o segredo do cliente que você deve usar posteriormente para ativar a criptografia de disco do Azure. Proteja o segredo do cliente do Microsoft Entra adequadamente.
Configurar um aplicativo Microsoft Entra e uma entidade de serviço por meio do portal do Azure
Use as etapas do artigo Usar o portal para criar um aplicativo Microsoft Entra e uma entidade de serviço que possam acessar os recursos para criar um aplicativo Microsoft Entra. Cada etapa listada abaixo levará você diretamente para a seção de artigos para concluir.
- Verifique se as permissões necessárias
- Criar um aplicativo Microsoft Entra
- Você pode usar qualquer nome e URL de logon que desejar ao criar o aplicativo.
- Obtenha o ID do aplicativo e a chave de autenticação.
- A chave de autenticação é o segredo do cliente e é usada como o 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 da chave. Proteja esse segredo adequadamente.
- A ID do aplicativo será usada posteriormente como o AadClientId para Set-AzVMDiskEncryptionExtension e como o ServicePrincipalName para Set-AzKeyVaultAccessPolicy.
- A chave de autenticação é o segredo do cliente e é usada como o AadClientSecret para Set-AzVMDiskEncryptionExtension.
Definir a política de acesso do 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 tenha permissões para gravar segredos no cofre de chaves.
Observação
O Azure Disk Encryption exige que você configure as seguintes políticas de acesso ao aplicativo cliente do 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 os 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, confira a postagem de blog Azure Key Vault - passo a passo.
Defina a política de acesso ao vault principal 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 do 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 Gerenciar cofre de chaves usando o CLI 2.0.
Dê à entidade de serviço que você criou por meio do acesso da CLI do Azure para obter segredos e agrupar chaves 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 do cofre de chaves para o aplicativo Microsoft Entra com o portal
- Abra o grupo de recursos com o Cofre de chaves.
- Selecione seu cofre de chaves, vá para Acessar Políticas e, em seguida, selecione Adicionar novo.
- Em Selecionar entidade de segurança, procure o aplicativo Microsoft Entra criado e selecione-o.
- Para permissões de chave, verifique Wrap Key sob operações criptográficas.
- Para permissões do segredo, verifique definir sob operações de gerenciamento de segredo.
- Selecione Ok para salvar a política de acesso.
Definir as políticas de acesso avançado do cofre de chaves
A plataforma Azure precisa acessar as chaves de criptografia ou os segredos no cofre de chaves para disponibilizá-los para a máquina virtual para inicialização e descriptografar os volumes. Habilite a criptografia de disco no cofre da chave ou as implantações falharão.
Definir políticas de acesso avançado ao cofre de chaves com o Azure PowerShell
Use o cmdlet de cofre de chaves Set-AzKeyVaultAccessPolicy do PowerShell para habilitar a criptografia de disco para o cofre da chaves.
Ative o Key Vault para criptografia de disco: EnabledForDiskEncryption é necessário para a criptografia do Azure Disk.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
Habilitar o Key Vault para a implantação, se necessário: habilita a Microsoft. Provedor de recursos de computação usado para recuperar os segredos desse cofre de chaves quando ele for referenciado na criação de recursos, por exemplo, quando uma máquina virtual for criada.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
Ative o cofre de chaves para implantação de modelos, se necessário: Permite que o Azure Resource Manager obtenha segredos desse cofre de chaves quando esse cofre de chaves for mencionado em uma implantação de modelo.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
Definir Cofre de chaves avançadas de políticas de acesso usando a CLI do Azure
Use atualização de keyvault az para habilitar a criptografia de disco para o Cofre de chaves.
Habilite o cofre de chaves para criptografia de disco: habilitado para criptografia de disco é necessária.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
Habilite o cofre de chaves para a implantação, se necessário: máquinas de virtuais permitem recuperar certificados armazenados como segredos do cofre.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
Habilite o cofre de chaves para implantação de modelo, se necessário: permitem que o Gerenciador de recursos para recuperar segredos do cofre.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
Defina as políticas de acesso avançado ao cofre de chaves por meio do portal do Azure
- Selecione sua keyvault, vá para Access Policies e Clique para mostrar as políticas de acesso avançadas.
- Selecione a caixa rotulada habilitar o acesso ao Azure Disk Encryption para criptografia de volume.
- Selecione habilitar o 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.
- Selecione Salvar.
Configurar uma chave de criptografia de chave (opcional)
Se você quiser usar uma chave de criptografia (KEK) para uma camada adicional de segurança para chaves de criptografia, adicione uma KEK ao seu cofre de chaves. Use o cmdlet Add-AzKeyVaultKey para criar uma chave de criptografia no cofre de chaves. Você também pode importar a KEK do HSM do gerenciamento de chaves local. Para obter mais informações, consulte documentação do cofre de chaves. Quando uma chave de criptografia de chave é especificada, o Azure Disk Encryption usa essa chave para agrupar os segredos de criptografia antes de gravar no Key Vault.
Ao gerar chaves, use um tipo de chave RSA. O Azure Disk Encryption ainda não é compatível com chaves de Curva Elíptica.
O segredo do cofre de chaves e as URLs KEK devem ter controle de versão. O Azure impõe essa restrição de controle de versão. Para um segredo válido e URLs KEK, confira os seguintes exemplos:
- Exemplo de uma URL secreta válida: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Exemplo de uma URL de KEK válida: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
o Azure Disk Encryption não dá suporte à especificação de números de portas como parte de segredos do cofre de chaves e URLs KEK. Para exemplos de URLs do cofre de chaves não suportados e suportados, 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
Configurar uma chave de criptografia 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 amostra pode precisar de mudanças para seu ambiente. Esse script cria todos os pré-requisitos da criptografia de disco do Azure e criptografa uma VM IaaS existente, envolvendo 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 você quiser usar a autenticação de certificado, poderá fazer o upload de um para o seu 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 amostra pode precisar de mudanças 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 uma KEK (opcional)
Se você quiser usar a autenticação de certificado e encapsular a chave de criptografia com uma KEK, use 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 do script. O script de amostra pode precisar de mudanças para seu ambiente.
Importante
No momento, não há suporte para autenticação baseada em certificado do Microsoft Entra 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óximas etapas
Habilitar o Azure Disk Encryption com o Microsoft Entra ID em VMs Linux (versão anterior)