Use o CLI do Azure para habilitar a criptografia de ponta a ponta usando a criptografia no host

Aplica-se a: ✔️ VMs do Linux ✔️ Conjuntos de dimensionamento flexíveis

Quando você habilita a criptografia no host, os dados armazenados no host da VM são criptografados em repouso e os fluxos são criptografados para o serviço de armazenamento. Para obter informações conceituais sobre criptografia no host, bem como outros tipos de criptografia de disco gerenciado, confira Criptografia no host: criptografia de ponta a ponta para os dados da VM.

Restrições

  • Compatível com Discos Ultra de tamanho de setor de 4k e SSD Premium v2.
  • Só terá suporte em Discos Ultra de tamanho de setor 512e e SSD Premium v2 se eles foram criados após 13/5/2023.
    • Para discos criados antes dessa data, gere um instantâneo do disco e crie um novo disco usando esse instantâneo.
  • Não pode ser habilitado em VMs (máquinas virtuais) ou conjuntos de dimensionamento de máquinas virtuais que já tiverem ou têm atualmente o Azure Disk Encryption habilitado.
  • O Azure Disk Encryption não pode ser habilitado em discos que têm criptografia no host habilitada.
  • A criptografia pode ser habilitada nos conjuntos de dimensionamento de máquinas virtuais existentes. No entanto, somente as novas VMs criadas após a ativação da criptografia são criptografadas automaticamente.
  • As VMs existentes devem ser desalocadas e realocadas para serem criptografadas.

Tamanhos de VM com suporte

A lista completa de tamanhos de VM compatíveis pode ser extraída programaticamente. Para saber como recuperá-los de modo programático, confira a seção Encontrando os tamanhos de VM compatíveis. A atualização do tamanho da VM resulta na validação para verificar se o novo tamanho da VM dá suporte ao recurso EncryptionAtHost.

Pré-requisitos

É necessário habilitar o recurso para sua assinatura antes de usar a propriedade EncryptionAtHost para a VM/VMSS. Use as seguintes etapas para habilitar o recurso para sua assinatura:

  • Execute o comando a seguir para registrar o recurso para sua assinatura.
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
  • Verifique se o estado do registro é Registrado (leva alguns minutos) usando o comando a seguir antes de testar o recurso.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost

Criar recursos

Observação

Esta seção só se aplica a configurações com chaves gerenciadas pelo cliente. Se você estiver usando chaves de criptografia gerenciadas pela plataforma, pule para a seção Scripts de exemplo.

Depois que o recurso estiver habilitado, você precisará configurar um DiskEncryptionSet e um Azure Key Vault ou um HSM Gerenciado do Azure Key Vault.

Cofre de Chave do Azure

  • Instale a CLI do Azure mais recente e faça logon em uma conta do Azure com az login.
  • Criar um Azure Key Vault e uma chave de criptografia.

Ao criar o Key Vault, você deve habilitar a proteção contra limpeza. A proteção de limpeza garante que uma chave excluída não seja excluída permanentemente até que o período de retenção termine. Essas configurações protegem você contra a perda de dados devido à exclusão acidental. Essas configurações são obrigatórias ao usar um Key Vault para criptografar discos gerenciados.

Importante

Não use camelCase na região. Isso pode causar problemas na atribuição de discos adicionais ao 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
  • Criar um DiskEncryptionSet. Você pode definir “enable-auto-key-rotation” como “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 em 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 o acesso ao recurso DiskEncryptionSet para o Key Vault.

Observação

Pode levar alguns minutos para o Azure criar a identidade do DiskEncryptionSet no seu Microsoft Entra ID. Se você receber um erro como "não é possível encontrar o objeto Active Directory" ao executar o comando a seguir, 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

Sobre o HSM Gerenciado do Azure Key Vault

Como alternativa, você pode usar um HSM gerenciado para lidar com as chaves.

Para isso, conclua os pré-requisitos a seguir:

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

Depois 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, permita que o DiskEncryptionSet acesse o 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

Crie uma VM com criptografia no host habilitada com chaves gerenciadas pela plataforma

Crie uma VM com criptografia no host habilitado para criptografar o cache de discos de sistema operacional/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 \

Atualize 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 de uma VM

rgName=yourRGName
vmName=yourVMName

az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv

Atualize uma VM para desabilitar a criptografia no host

Você deve desalocar sua VM para 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áquinas Virtuais com criptografia no host habilitado com chaves gerenciadas pelo cliente

Crie um Conjunto de Dimensionamento de Máquinas Virtuais com discos gerenciados usando o URI de recurso do DiskEncryptionSet criado anteriormente para criptografar o cache de discos de dados e do sistema operacional 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 serão padrão para 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 executar, acesse Alteração interruptiva para clientes PowerShell/CLI do VMSS – Hub de Comunidade da Microsoft

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áquinas Virtuais com criptografia no host habilitado com chaves gerenciadas pela plataforma

Crie um Conjunto de Dimensionamento de Máquinas Virtuais com criptografia no host habilitado para criptografar o cache de sistema operacional/discos de 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 serão padrão para 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 executar, acesse Alteração interruptiva para clientes PowerShell/CLI do VMSS – Hub de Comunidade da Microsoft

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

Verifique o status da criptografia no host para um Conjunto de Dimensionamento de Máquinas Virtuais.

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 no Conjunto de Dimensionamento de Máquinas Virtuais, mas isso afetará apenas as VMs criadas depois de desabilitar a criptografia no host. Para VMs existentes, você deve desalocar a VM, desabilitar a criptografia no host nessa VM individual, e realocá-la.

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false

Encontrando os tamanhos de VM compatíveis

Não há compatibilidade para tamanhos de VM herdados. Você pode encontrar a lista de tamanhos de VM suportados usando os recursos de APIs de SKU ou o módulo Azure PowerShell. Não é possível encontrar os tamanhos com suporte usando a CLI.

Ao chamar a API de SKUs de Recursos, verifique se a funcionalidade EncryptionAtHostSupported está definida 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 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óximas etapas

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 cenário respectivo, que você pode usar para proteger seus discos gerenciados.

Exemplos de modelo do Azure Resource Manager