Usar a CLI do Azure para habilitar a criptografia de ponta a ponta usando criptografia no host
Aplica-se a: ✔️ Linux VMs ✔️ Conjuntos de escala flexível
Quando você habilita a criptografia no host, os dados armazenados no host da VM são criptografados em repouso e fluem criptografados para o serviço de armazenamento. Para obter informações conceituais sobre criptografia no host e outros tipos de criptografia de disco gerenciado, consulte Criptografia no host - Criptografia de ponta a ponta para seus dados de VM.
Restrições
- Compatível com Ultra Disks de tamanho de sector 4k e SSD Premium v2.
- Suportado apenas em Ultra Disks de tamanho de setor 512e e SSD Premium v2 se tiverem sido criados após 13/05/2023.
- Para discos criados antes dessa data, crie um snapshot do disco e crie um novo disco usando o snapshot.
- Não pode ser habilitado em máquinas virtuais (VMs) ou conjuntos de dimensionamento de máquinas virtuais que atualmente ou já tiveram a Criptografia de Disco do Azure habilitada.
- A Criptografia de Disco do Azure não pode ser habilitada em discos com criptografia no host habilitada.
- A criptografia pode ser habilitada em conjuntos de escala de máquina virtual existentes. No entanto, apenas as novas VMs criadas após a ativação da criptografia são automaticamente criptografadas.
- As VMs existentes devem ser desalocadas e realocadas para serem criptografadas.
Tamanhos de VM suportados
A lista completa de tamanhos de VM suportados pode ser extraída programaticamente. Para saber como recuperá-los programaticamente, consulte a seção Localizando tamanhos de VM suportados. A atualização do tamanho da VM resulta na validação para verificar se o novo tamanho da VM suporta o recurso EncryptionAtHost.
Pré-requisitos
Você deve habilitar o recurso para sua assinatura antes de usar a propriedade EncryptionAtHost para sua VM/VMSS. Use as seguintes etapas para habilitar o recurso para sua assinatura:
- Execute o seguinte comando para registrar o recurso para sua assinatura
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
- Verifique se o estado de registro é Registrado (leva alguns minutos) usando o comando abaixo antes de experimentar o recurso.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost
Criar recursos
Nota
Esta seção só se aplica a configurações com chaves gerenciadas pelo cliente. Se estiver a utilizar chaves geridas pela plataforma, pode saltar para a secção Scripts de exemplo.
Depois que o recurso estiver habilitado, você precisará configurar um DiskEncryptionSet e um Azure Key Vault ou um Azure Key Vault Managed HSM.
Azure Key Vault
- Instale a CLI do Azure mais recente e faça logon em uma conta do Azure com az login.
- Crie um Cofre de Chaves do Azure e uma chave de criptografia.
Ao criar o Cofre da Chave, você deve habilitar a proteção contra limpeza. A proteção contra limpeza garante que uma chave excluída não possa ser excluída permanentemente até que o período de retenção expire. Estas definições protegem-no contra a perda de dados devido à eliminação acidental. Essas configurações são obrigatórias ao usar um Cofre de Chaves para criptografar discos gerenciados.
Importante
Não camel caso a região, se você fizer isso, você pode ter problemas ao atribuir discos adicionais para o recurso no portal do Azure.
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az group create --resource-group $rgName --location $location
az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true
az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
- Crie um DiskEncryptionSet. Você pode definir enable-auto-key-rotation igual a true para habilitar a rotação automática da chave. Quando você habilita a rotação automática, o sistema atualiza automaticamente todos os discos gerenciados, instantâneos e imagens que fazem referência ao conjunto de criptografia de disco para usar a nova versão da chave dentro de uma hora.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
- Conceda ao recurso DiskEncryptionSet acesso ao cofre de chaves.
Nota
Pode levar alguns minutos para o Azure criar a identidade do seu DiskEncryptionSet em sua ID do Microsoft Entra. Se você receber um erro como "Não é possível localizar o objeto do Ative Directory" ao executar o seguinte comando, aguarde alguns minutos e tente novamente.
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get
HSM Gerido do Azure Key Vault
Como alternativa, você pode usar um HSM gerenciado para manipular suas chaves.
Para fazer isso, você deve preencher os seguintes pré-requisitos:
- Instale a CLI do Azure mais recente e inicie sessão numa conta do Azure com az login.
- Crie e configure um HSM gerenciado.
- Atribua permissões a um usuário, para que ele possa gerenciar seu HSM gerenciado.
Configuração
Depois de criar um HSM gerenciado e adicionar permissões, habilite a proteção contra limpeza e crie uma chave de criptografia.
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
az keyvault key create --hsm-name $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048
Em seguida, crie um DiskEncryptionSet.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
Por fim, conceda ao DiskEncryptionSet acesso ao HSM gerenciado.
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys
Scripts de exemplo
Crie uma VM com criptografia no host habilitada com chaves gerenciadas pelo cliente
Crie uma VM com discos gerenciados usando o URI de recurso do DiskEncryptionSet criado anteriormente para criptografar o cache do sistema operacional e discos de dados com chaves gerenciadas pelo cliente. Os discos temporários são criptografados com chaves gerenciadas pela plataforma.
rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Criar uma VM com criptografia no host habilitada com chaves gerenciadas pela plataforma
Crie uma VM com criptografia no host habilitada para criptografar o cache de discos de SO/dados e discos temporários com chaves gerenciadas pela plataforma.
rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=LinuxImageURN
az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \
Atualizar uma VM para habilitar a criptografia no host
rgName=yourRGName
vmName=yourVMName
az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true
Verificar o status da criptografia no host para uma VM
rgName=yourRGName
vmName=yourVMName
az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv
Atualizar uma VM para desativar a criptografia no host
Você deve desalocar sua VM antes de poder desabilitar a criptografia no host.
rgName=yourRGName
vmName=yourVMName
az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false
Criar um conjunto de dimensionamento de máquina virtual com criptografia no host habilitada com chaves gerenciadas pelo cliente
Crie um Conjunto de Dimensionamento de Máquina Virtual com discos gerenciados usando o URI de recurso do DiskEncryptionSet criado anteriormente para criptografar o cache do sistema operacional e discos de dados com chaves gerenciadas pelo cliente. Os discos temporários são criptografados com chaves gerenciadas pela plataforma.
Importante
A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure assumirão como padrão o Modo de Orquestração Flexível se nenhum modo de orquestração for especificado. Para obter mais informações sobre essa alteração e quais ações você deve tomar, vá para Breaking Change for VMSS PowerShell/CLI Customers - Microsoft Community Hub
rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 64 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Criar um conjunto de dimensionamento de máquina virtual com criptografia no host habilitada com chaves gerenciadas pela plataforma
Crie um Conjunto de Dimensionamento de Máquina Virtual com criptografia no host habilitada para criptografar cache de discos de SO/dados e discos temporários com chaves gerenciadas pela plataforma.
Importante
A partir de novembro de 2023, os conjuntos de dimensionamento de VM criados usando o PowerShell e a CLI do Azure assumirão como padrão o Modo de Orquestração Flexível se nenhum modo de orquestração for especificado. Para obter mais informações sobre essa alteração e quais ações você deve tomar, vá para Breaking Change for VMSS PowerShell/CLI Customers - Microsoft Community Hub
rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=Ubuntu2204
az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image $image \
--orchestration-mode flexible \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \
Atualizar um Conjunto de Dimensionamento de Máquina Virtual para habilitar a criptografia no host
rgName=yourRGName
vmssName=yourVMName
az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true
Verificar o status da criptografia no host para um conjunto de dimensionamento de máquina virtual
rgName=yourRGName
vmssName=yourVMName
az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv
Atualizar um Conjunto de Dimensionamento de Máquina Virtual para desabilitar a criptografia no host
Você pode desabilitar a criptografia no host em seu Conjunto de Dimensionamento de Máquina Virtual, mas isso só afetará as VMs criadas depois que você desabilitar a criptografia no host. Para VMs existentes, você deve desalocar a VM, desabilitar a criptografia no host nessa VM individual e, em seguida, realocar a VM.
rgName=yourRGName
vmssName=yourVMName
az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false
Localizando tamanhos de VM suportados
Não há suporte para tamanhos de VM herdados. Você pode encontrar a lista de tamanhos de VM suportados usando APIs de SKU de recurso ou o módulo do Azure PowerShell. Não é possível encontrar os tamanhos suportados usando a CLI.
Ao chamar a API Resource Skus, verifique se o EncryptionAtHostSupported
recurso está definido como True.
{
"resourceType": "virtualMachines",
"name": "Standard_DS1_v2",
"tier": "Standard",
"size": "DS1_v2",
"family": "standardDSv2Family",
"locations": [
"CentralUSEUAP"
],
"capabilities": [
{
"name": "EncryptionAtHostSupported",
"value": "True"
}
]
}
Para o módulo do Azure PowerShell, use o cmdlet Get-AzComputeResourceSku .
$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')}
foreach($vmSize in $vmSizes)
{
foreach($capability in $vmSize.capabilities)
{
if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
{
$vmSize
}
}
}
Próximos passos
Agora que você criou e configurou esses recursos, pode usá-los para proteger seus discos gerenciados. O link a seguir contém scripts de exemplo, cada um com um respetivo cenário, que você pode usar para proteger seus discos gerenciados.