Exercício – Criptografar discos de VM existentes
Suponha que você esteja desenvolvendo um aplicativo de gerenciamento financeiro para novas startups. Você deseja garantir que todos os dados de seus clientes sejam protegidos. Portanto, você decidiu implementar o ADE (Azure Disk Encryption) em todos os discos de dados e do sistema operacional nos servidores que hospedam 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ê criptografa discos em uma VM (máquina virtual) existente e gerencia as chaves de criptografia usando seu Azure Key Vault.
Preparar o ambiente
Você começa 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. Use 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. 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 o Cloud Shell solicitar, insira um nome de usuário e uma senha para a VM. Essas informações serão usadas como a conta inicial criada para a VM.
Observação
Este comando usará alguns padrões, pois não fornecemos muitas opções. Especificamente, isso criará uma imagem do Windows Server 2016 com o tamanho definido como 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 seguinte código 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. Você só precisa habilitar o serviço uma vez.
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
:- Verifique se você o colocou no mesmo grupo de recursos e na mesma localização que a VM.
- Habilite o cofre de chaves para uso com a criptografia de disco.
- Especifique um nome exclusivo para o cofre de chaves.
New-AzKeyVault -VaultName $keyVaultName ` -Location $location ` -ResourceGroupName $rgName ` -EnabledForDiskEncryption
Você recebe 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 warning can occur if the vault was created by a service principal. To set access policies, use Set-AzKeyVaultAccessPolicy.
Nenhum problema acontece em decorrência desse aviso, 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, use o cmdlet New-AzSnapshot
. 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 é 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 avisa 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.