Criptografar o sistema operacional e discos de dados anexados em um conjunto de dimensionamento de máquina virtual com a CLI do Azure

A CLI do Azure é utilizada para criar e gerir recursos do Azure a partir da linha de comandos 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

  • Use o ambiente Bash no Azure Cloud Shell. Para obter mais informações, consulte Guia de início rápido para Bash no Azure Cloud Shell.

  • Se preferir executar comandos de referência da CLI localmente, instale a CLI do Azure. Se estiver a utilizar o Windows ou macOS, considere executar a CLI do Azure num contentor Docker. Para obter mais informações, consulte Como executar a CLI do Azure em um contêiner do Docker.

    • Se estiver a utilizar uma instalação local, inicie sessão no CLI do Azure ao utilizar o comando az login. Para concluir o processo de autenticação, siga os passos apresentados no seu terminal. Para outras opções de entrada, consulte Entrar com a CLI do Azure.

    • Quando solicitado, instale a extensão da CLI do Azure na primeira utilização. Para obter mais informações sobre as extensões, veja Utilizar extensões com o CLI do Azure.

    • Execute o comando az version para localizar a versão e as bibliotecas dependentes instaladas. Para atualizar para a versão mais recente, execute o comando az upgrade.

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

Para poder criar um conjunto de dimensionamento, crie primeiro 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 operacional suportado com ADE. SO suportado 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"}'

A criação e configuração de todas as VMs e recursos do conjunto de dimensionamento demora alguns minutos.

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 KeyVault com az keyvault create na mesma assinatura e região do conjunto de escala 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 da Chave existente

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

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

Nota

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 criptografar instâncias de VM em um conjunto de escala, primeiro obtenha algumas informações sobre o ID do recurso do Cofre da Chave com az keyvault show. Essas variáveis são usadas para iniciar o processo de criptografia com a criptografia az vmss habilitar:

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

Como o conjunto de escala é a política de atualização no conjunto de escala criado em uma etapa anterior é definida como automática, as instâncias de VM iniciam automaticamente o processo de criptografia. Em conjuntos de escala 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.

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

Nota

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 você não deseja mais usar discos de instâncias de VM criptografadas, você pode desabilitar a criptografia com a criptografia az vmss desabilitar 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.