Exercício – Criptografar discos de VM existentes
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.
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).
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>"
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.
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
É 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
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:
Criar um cofre de chaves.
Configurar o cofre de chaves para dar suporte à criptografia de disco.
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.
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"
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.
Para armazenar as informações do cofre de chaves, defina uma variável:
$keyVault = Get-AzKeyVault ` -VaultName $keyVaultName ` -ResourceGroupName $rgName
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
- O parâmetro
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
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.