Partilhar via


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.
  • 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

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:

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.

Exemplos de modelo do Azure Resource Manager