Partilhar via


Criptografia do SO e dos discos de dados anexados num Conjunto de Dimensionamento de Máquinas Virtuais com a CLI do Azure

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 no host para novas VMs. 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.

A CLI do Azure é usada para criar e gerenciar recursos do Azure a partir da linha de comando ou em scripts. Este guia de início rápido mostra como usar a CLI do Azure para criar e criptografar um Conjunto de Dimensionamento de Máquina Virtual. Para obter mais informações sobre como aplicar a criptografia de disco do Azure a um conjunto de dimensionamento de máquina virtual, consulte Azure Disk Encryption for Virtual Machine Scale Sets.

Pré-requisitos

  • Este artigo requer a versão 2.0.31 ou posterior da CLI do Azure. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

Criar um conjunto de escalas

Antes de criar um conjunto de escalas, crie um grupo de recursos com az group create. O exemplo seguinte cria um grupo de recursos com o nome myResourceGroup na localização eastus:

az group create --name myResourceGroup --location eastus

Agora crie um conjunto de escala de máquina virtual com az vmss create. O exemplo a seguir cria um conjunto de escala chamado myScaleSet que é definido para atualizar automaticamente à medida que as alterações são aplicadas e gera chaves SSH se elas não existirem em ~/.ssh/id_rsa. Um disco de dados de 32 Gb é anexado a cada instância de VM e a Extensão de Script Personalizada do Azure é usada para preparar os discos de dados com o conjunto de extensões az vmss:

Importante

Certifique-se de selecionar o sistema operativo suportado pelo ADE. Sistemas Operativos Suportados para ADE.

# Create a scale set with attached data disk
az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --orchestration-mode Flexible \
  --image <SKU Linux Image> \
  --admin-username azureuser \
  --generate-ssh-keys \
  --data-disk-sizes-gb 32

# Prepare the data disk for use with the Custom Script Extension
az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings '{"fileUris":["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/prepare_vm_disks.sh"],"commandToExecute":"./prepare_vm_disks.sh"}'

Demora alguns minutos para criar e configurar todos os recursos do conjunto de dimensionamento e as VMs.

Criar um cofre de chaves do Azure habilitado para criptografia de disco

O Azure Key Vault pode armazenar chaves, segredos ou palavras-passe que lhe permitem implementá-los com segurança nas suas aplicações e serviços. As chaves criptográficas são armazenadas no Cofre de Chaves do Azure usando proteção de software ou você pode importar ou gerar suas chaves em HSMs (Módulos de Segurança de Hardware) certificados de acordo com os padrões validados pelo FIPS 140 . Essas chaves criptográficas são usadas para criptografar e descriptografar discos virtuais anexados à sua VM. Você mantém o controle dessas chaves criptográficas e pode auditar seu uso.

Defina o seu próprio keyvault_name único. Em seguida, crie um Key Vault com az keyvault create na mesma assinatura e região do conjunto de dimensionamento, e defina a política de acesso --enabled-for-disk-encryption.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault create --resource-group myResourceGroup --name $keyvault_name --enabled-for-disk-encryption

Usar um Cofre de Chaves existente

Esta etapa só é necessária se você tiver um Cofre de Chaves existente que deseja usar com criptografia de disco. Pule esta etapa se você criou um Cofre de Chaves na seção anterior.

Defina o seu próprio keyvault_name único. Em seguida, atualize o seu KeyVault com az keyvault update e defina a política de acesso --enabled-for-disk-encryption.

# Provide your own unique Key Vault name
keyvault_name=myuniquekeyvaultname

# Create Key Vault
az keyvault update --name $keyvault_name --enabled-for-disk-encryption

Ativar encriptação

Observação

Se estiver usando Conjuntos de Dimensionamento de Máquina Virtual no Modo de Orquestração Flexível, somente novas instâncias serão criptografadas. As instâncias existentes no conjunto de escala precisarão ser criptografadas individualmente ou removidas e substituídas.

Para encriptar instâncias de VM num Azure Scale Set, primeiro obtenha informações sobre o ID do recurso do Azure Key Vault com az keyvault show. Essas variáveis são usadas para iniciar o processo de criptografia com az vmss encryption enable:

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Pode levar um ou dois minutos para que o processo de criptografia seja iniciado.

Uma vez que a política de atualização no conjunto de escala criado numa etapa anterior está definida como automática, as instâncias de VM iniciam automaticamente o processo de criptografia. Em conjuntos de escala onde a política de atualização é manual, inicie a política de encriptação nas instâncias de máquinas virtuais usando o comando az vmss update-instances.

Habilite a criptografia usando o KEK para encapsular a chave

Você também pode usar uma chave de criptografia de chave para maior segurança ao criptografar o Conjunto de Dimensionamento de Máquina Virtual.

# Get the resource ID of the Key Vault
vaultResourceId=$(az keyvault show --resource-group myResourceGroup --name $keyvault_name --query id -o tsv)

# Enable encryption of the data disks in a scale set
az vmss encryption enable \
    --resource-group myResourceGroup \
    --name myScaleSet \
    --disk-encryption-keyvault $vaultResourceId \
    --key-encryption-key myKEK \
    --key-encryption-keyvault $vaultResourceId \
    --volume-type DATA

Observação

A sintaxe para o valor do parâmetro disk-encryption-keyvault é a cadeia de caracteres do identificador completo:
/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]

A sintaxe para o valor do parâmetro key-encryption-key é o URI completo para o KEK como em:
https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]

Verificar o progresso da encriptação

Para verificar o status da criptografia de disco, use az vmss encryption show:

az vmss encryption show --resource-group myResourceGroup --name myScaleSet

Quando as instâncias de VM são criptografadas, o código de status relata EncryptionState/encrypted, conforme mostrado na saída de exemplo a seguir:

[
  {
    "disks": [
      {
        "encryptionSettings": null,
        "name": "myScaleSet_myScaleSet_0_disk2_3f39c2019b174218b98b3dfae3424e69",
        "statuses": [
          {
            "additionalProperties": {},
            "code": "EncryptionState/encrypted",
            "displayStatus": "Encryption is enabled on disk",
            "level": "Info",
            "message": null,
            "time": null
          }
        ]
      }
    ],
    "id": "/subscriptions/guid/resourceGroups/MYRESOURCEGROUP/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/virtualMachines/0",
    "resourceGroup": "MYRESOURCEGROUP"
  }
]

Desativar encriptação

Se já não deseja usar discos de instâncias de VM criptografadas, pode desativar a criptografia com az vmss encryption disable da seguinte maneira:

az vmss encryption disable --resource-group myResourceGroup --name myScaleSet

Próximos passos

  • Neste artigo, você usou a CLI do Azure para criptografar um Conjunto de Dimensionamento de Máquina Virtual. Você também pode usar modelos do Azure PowerShell ou do Azure Resource Manager.
  • Se desejar que a Criptografia de Disco do Azure seja aplicada após o provisionamento de outra extensão, você poderá usar o sequenciamento de extensão.
  • Um exemplo de arquivo em lote de ponta a ponta para criptografia de disco de dados de conjunto de escala Linux pode ser encontrado aqui. Este exemplo cria um grupo de recursos, conjunto de escala Linux, monta um disco de dados de 5 GB e criptografa o Conjunto de Escala de Máquina Virtual.