Criptografar os discos de sistema operacional e de dados anexados em um Conjunto de Dimensionamento de Máquinas Virtuais com a CLI do Azure

A CLI do Azure é usada para criar e gerenciar recursos do Azure da linha de comando ou em scripts. Este início rápido mostra como usar a CLI do Azure para criar e criptografar um Conjunto de Dimensionamento de Máquinas Virtuais. Consulte o Azure Disk Encryption para Conjuntos de Dimensionamento de Máquinas Virtuais para saber mais sobre como aplicar o Azure Disk Encryption em um conjunto de dimensionamento de máquina virtual.

Pré-requisitos

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

Criar um conjunto de escala

Antes de criar uma máquina virtual, crie um grupo de recursos com o az group create. O exemplo a seguir cria um grupo de recursos chamado myResourceGroup na localização eastus:

az group create --name myResourceGroup --location eastus

Crie um Conjunto de Dimensionamento de Máquinas Virtuais com az vmss create. O exemplo a seguir cria um conjunto de dimensionamento chamado myScaleSet definido para atualizar automaticamente à medida que alterações são aplicadas e gera chaves SSH caso elas não existam em ~/.ssh/id_rsa. Um disco de dados de 32 GB é anexado a cada instância de VM, e a Extensão de script personalizado do Azure é usada para preparar os discos de dados com az vmss extension set:

Importante

Selecione o Sistema Operacional com suporte com o ADE. Sistema operacional com suporte 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"}'

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

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

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

Defina seu próprio keyvault_name exclusivo. Em seguida, crie um cofre de chaves 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 Key Vault existente

Essa etapa só é necessária se você tiver um Key Vault existente que você deseje usar com a criptografia de disco. Ignore esta etapa se você tiver criado um Key Vault na seção anterior.

Defina seu próprio keyvault_name exclusivo. Em seguida, atualize o 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

Habilitar criptografia

Observação

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

Para criptografar as instâncias de VM em um conjunto de dimensionamento, primeiro obtenha algumas informações sobre a ID de recursos do 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 minuto ou dois para o processo de criptografia ser iniciado.

Como o conjunto de dimensionamento atualiza a política no conjunto de dimensionamento criado em uma etapa anterior definida como automática, as instâncias de VM iniciam automaticamente o processo de criptografia. Em conjuntos de dimensionamento em que a política de atualização é manual, inicie a política de criptografia nas instâncias de VM com az vmss update-instances.

Habilitar criptografia usando KEK para encapsular a chave

Também é possível usar uma Chave de Criptografia de Chave para aumentar a segurança ao criptografar o Conjunto de Dimensionamento de Máquinas Virtuais.

# 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/[GUID-ID-daAssinatura]/resourceGroups/[nome-do-grupo-de-recursos]/providers/Microsoft.KeyVault/vaults/[nome-do-cofre-de-chaves]

A sintaxe do valor do parâmetro key-encryption-key é o URI completo da KEK como em:
https://[nome-do-cofre-de-chaves].vault.azure.net/keys/[nomedakek]/[id-exclusiva-da-kek]

Verificar o andamento da criptografia

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

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

Quando instâncias de VM são criptografadas, o código relata EncryptionState/encrypted, conforme mostrado no seguinte exemplo de saída:

[
  {
    "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"
  }
]

Desabilitar criptografia

Se você não quiser mais usar discos de instâncias de VM criptografadas, você pode desabilitar a criptografia com az vmss encryption disable da seguinte maneira:

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

Próximas etapas

  • Neste artigo, você usou a CLI do Azure para criptografar um Conjunto de Dimensionamento de Máquinas Virtuais. Também é possível usar o Azure PowerShell ou os modelos do Azure Resource Manager.
  • Caso queira aplicar Azure Disk Encryption depois que outra extensão for provisionada, você poderá usar o sequenciamento de extensão.
  • Um exemplo de arquivo em lotes de ponta a ponta para criptografia de disco de dados do conjunto de dimensionamento Linux pode ser encontrado aqui. Este exemplo cria um grupo de recursos e o conjunto de dimensionamento Linux, monta um disco de dados de 5 GB e criptografa o Conjunto de Dimensionamento de Máquinas Virtuais.