Exercício – Criptografar discos de VM existentes

Concluído

Suponha que você esteja desenvolvendo um aplicativo de gerenciamento financeiro para novas startups. Como você deseja garantir que os dados de todos os clientes sejam protegidos, decide implementar o ADE (Azure Disk Encryption) em todos os discos de dados e sistema operacional nos servidores que hospedarão esse aplicativo. Como parte de seus requisitos de conformidade, você também precisará ser responsável pelo seu próprio gerenciamento de chaves de criptografia.

Nesta unidade, você criptografará discos em uma VM (máquina virtual) existente e gerenciará as chaves de criptografia usando seu Azure Key Vault.

Preparar o ambiente

Você começará implantando uma nova VM do Windows em uma VM do Azure.

Implantar VM do Windows

Para criar e implantar uma VM do Windows, use a janela do Azure PowerShell à direita.

  1. Para armazenar a localização selecionada, defina uma variável do PowerShell. Você usará a mesma região do grupo de recursos.

    $location = (Get-AzResourceGroup -name <rgn>[sandbox Resource Group]</rgn>).location
    

    Dica

    Use o botão Copiar para copiar os comandos para a área de transferência. Para colar o conteúdo, clique com o botão direito do mouse em uma nova linha no terminal do Cloud Shell e selecione Colar ou use o atalho de teclado Shift + Insert (⌘ + V no macOS).

  2. Em seguida, defina mais algumas variáveis convenientes para capturar o nome da VM e o grupo de recursos. Observe que você está usando aqui o grupo de recursos criado previamente. Normalmente, você criaria um grupo de recursos na assinatura usando New-AzResourceGroup.

    $vmName = "fmdata-vm01"
    $rgName = "<rgn>[sandbox Resource Group]</rgn>"
    
  3. Para criar uma VM, use New-AzVm:

    New-AzVm `
        -ResourceGroupName $rgName `
        -Name $vmName `
        -Location $location `
        -OpenPorts 3389
    

    Quando solicitado pelo Cloud Shell, insira um nome de usuário e uma senha para a VM. Isso será usado como a conta inicial criada para a VM.

    Observação

    Este comando usará alguns padrões, pois não fornecemos muitas opções. Especificamente, ele criará uma imagem do Windows Server 2016 com o tamanho Standard_DS1_v2. Lembre-se de que as VMs da camada Básico não dão suporte ao ADE se você decidir especificar o tamanho da VM.

  4. Depois que a implantação da VM for concluída, capture os detalhes da VM em uma variável. Você pode usar esta variável para explorar o que você criou:

    $vm = Get-AzVM -Name $vmName -ResourceGroupName $rgName
    
  5. É possível usar o código abaixo para confirmar o disco do sistema operacional anexado à VM:

    $vm.StorageProfile.OSDisk
    
    OsType                  : Windows
    EncryptionSettings      :
    Name                    : fmdata-vm01_OsDisk_1_6bcf8dcd49794aa785bad45221ec4433
    Vhd                     :
    Image                   :
    Caching                 : ReadWrite
    WriteAcceleratorEnabled :
    CreateOption            : FromImage
    DiskSizeGB              : 127
    ManagedDisk             : Microsoft.Azure.Management.Compute.Models.ManagedDiskP
                              arameters
    
  6. Verifique o status atual de criptografia no disco do sistema operacional (e em outros discos de dados).

    Get-AzVmDiskEncryptionStatus  `
        -ResourceGroupName $rgName `
        -VMName $vmName
    

    Você observará que os discos não estão criptografados no momento.

    OsVolumeEncrypted          : NotEncrypted
    DataVolumesEncrypted       : NotEncrypted
    OsVolumeEncryptionSettings :
    ProgressMessage            : No Encryption extension or metadata found on the VM
    

Vamos mudar isso.

Criptografar os discos de VM com o Azure Disk Encryption

É necessário proteger esses dados, portanto, vamos criptografar os discos. Lembre-se de que há várias etapas a serem executadas:

  1. Criar um cofre de chaves.

  2. Configurar o cofre de chaves para dar suporte à criptografia de disco.

  3. Instruir o Azure a criptografar os discos de VM usando a chave armazenada no cofre de chaves.

Dica

Vamos percorrer as etapas individualmente, mas ao realizar essa tarefa em sua própria assinatura, você poderá usar um script do PowerShell, que vinculamos à seção Resumo deste módulo.

Criar um cofre de chaves

Para criar um Azure Key Vault, é necessário habilitar o serviço em nossa assinatura. Esse é um requisito avulso.

Dica

Dependendo da sua assinatura, talvez você precise habilitar o provedor Microsoft.KeyVault com o cmdlet Register-AzResourceProvider. Isso não é necessário na assinatura de área restrita do Azure.

  1. Escolha um nome para seu novo cofre de chaves. Ele precisa ser exclusivo e pode ter entre 3 e 24 caracteres e ser composto por números, letras e traços. Tente adicionar alguns números aleatórios ao final, substituindo o seguinte 1234:

    $keyVaultName = "mvmdsk-kv-1234"
    
  2. Crie um Azure Key Vault com New-AzKeyVault:

    • Verificar se ele está no mesmo grupo de recursos e na mesma localização que a VM
    • Habilitar o cofre de chaves para uso com a criptografia de disco
    • Especificar um nome exclusivo para o cofre de chaves
    New-AzKeyVault -VaultName $keyVaultName `
        -Location $location `
        -ResourceGroupName $rgName `
        -EnabledForDiskEncryption
    

    Você receberá um aviso desse comando indicando que não há usuários com acesso.

    WARNING: Access policy is not set. No user or app have access permission to use this vault. This can happen if the vault was created by a service principal. To set access policies, use Set-AzKeyVaultAccessPolicy.
    

    Nenhum problema acontece em decorrência disso porque você está usando o cofre apenas para armazenar as chaves de criptografia da VM e os usuários não precisam acessar esses dados.

Criptografar o disco

Você está quase pronto para criptografar os discos. Antes disso, é importante lembrar-se de algo sobre a criação de backups.

Importante

Se esse fosse um sistema de produção, seria necessário executar um backup dos discos gerenciados usando o Backup do Azure ou criando um instantâneo. Você pode criar instantâneos no portal do Azure ou por meio da linha de comando. No PowerShell, o comando New-AzSnapshot seria usado. Como este é um exercício simples e você descartará os dados ao terminar, ignore esta etapa.

  1. Para armazenar as informações do cofre de chaves, defina uma variável:

    $keyVault = Get-AzKeyVault `
        -VaultName $keyVaultName `
        -ResourceGroupName $rgName
    
  2. Em seguida, para criptografar os discos da VM, execute o cmdlet Set-AzVmDiskEncryptionExtension.

    • O parâmetro VolumeType permite que você especifique quais discos deseja criptografar: [Todos | Sistema Operacional | Dados]. O padrão será Todos. Você pode criptografar os discos de dados apenas para algumas distribuições do Linux.
    • É possível fornecer o sinalizador SkipVmBackup para discos gerenciados quando não há instantâneos.
    Set-AzVmDiskEncryptionExtension `
        -ResourceGroupName $rgName `
        -VMName $vmName `
        -VolumeType All `
        -DiskEncryptionKeyVaultId $keyVault.ResourceId `
        -DiskEncryptionKeyVaultUrl $keyVault.VaultUri `
        -SkipVmBackup
    
  3. O cmdlet avisará você que a VM precisa ser colocada offline e que a tarefa pode levar vários minutos para ser concluída. Permita que ele continue sendo executado:

    Enable AzureDiskEncryption on the VM
    This cmdlet prepares the VM and enables encryption which may reboot the machine and takes 10-15 minutes to
    finish. Please save your work on the VM before confirming. Do you want to continue?
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
    
  4. Depois da execução do cmdlet, verifique o status de criptografia novamente:

    Get-AzVmDiskEncryptionStatus  -ResourceGroupName $rgName -VMName $vmName
    

    Agora o disco do sistema operacional deve estar criptografado. Os discos de dados anexados que estiverem visíveis para o Windows também serão criptografados.

    OsVolumeEncrypted          : Encrypted
    DataVolumesEncrypted       : NoDiskFound
    OsVolumeEncryptionSettings : Microsoft.Azure.Management.Compute.Models.DiskEncryptionSettings
    ProgressMessage            : Provisioning succeeded
    

Observação

Os novos discos adicionados após a criptografia não serão criptografados automaticamente. Você pode executar novamente o cmdlet Set-AzVMDiskEncryptionExtension para criptografar novos discos. Se você adicionar discos a uma VM que já tenha discos criptografados, forneça um novo número em sequência. Além disso, os discos que não estão visíveis para o sistema operacional não serão criptografados. O disco deve ser particionado, formatado e montado corretamente para que a extensão do BitLocker o veja.