Usar a CLI do Azure para habilitar a criptografia do lado do servidor com as chaves gerenciadas pelo cliente para discos gerenciados
Aplica-se a: ✔️ VMs do Linux ✔️ VMs do Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento uniformes
O Armazenamento em Disco do Azure permite que você gerencie as próprias chaves ao usar a SSE (criptografia do lado do servidor) para discos gerenciados, se você escolher. Para obter informações conceituais sobre a SSE com chaves gerenciadas pelo cliente, bem como outros tipos de criptografia de disco gerenciado, confira a seção Chaves gerenciadas pelo cliente do nosso artigo sobre criptografia de disco.
Restrições
Por enquanto, as chaves gerenciadas pelo cliente têm as seguintes restrições:
- Se esse recurso estiver habilitado para um disco com instantâneos incrementais, ele não poderá ser desabilitado nesse disco ou em seus instantâneos. Para contornar isso, copie todos os dados para um disco gerenciado totalmente diferente que não use chaves gerenciadas pelo cliente. Você pode fazer isso com a CLI do Azure ou com o módulo do Azure PowerShell.
- Um disco e todos os seus instantâneos incrementais associados devem ter o mesmo Conjunto de Criptografia de Disco.
- Só chaves de software e chaves RSA HSM de tamanhos 2.048, 3.072 e 4.096 bits são suportadas. Não são aceitas outras chaves ou tamanhos.
- As chaves HSM exigem a camada Premium de cofres de chaves do Azure.
- Somente para Discos Ultra e discos SSD Premium v2:
- Discos criados a partir de instantâneos que são criptografados com Criptografia do lado do Servidor e Chaves gerenciadas pelo Cliente devem ser criptografados com o mesmo Conjunto de Criptografia de Disco.
- Não há suporte para identidades gerenciadas atribuídas pelo usuário em Discos Ultra e discos SSD Premium v2 criptografados com chaves gerenciadas pelo cliente.
- No momento, não há suporte para a criptografia de discos Ultra e discos SSD Premium v2 com chaves gerenciadas pelo cliente usando Azure Key Vaults armazenados em um locatário diferente do Microsoft Entra ID.
- A maioria dos recursos relacionados às chaves gerenciadas pelo cliente (conjuntos de criptografia de disco, VMs, discos e instantâneos) precisa estar na mesma assinatura e região.
- Os cofres de chaves do Azure podem ser usados em outra assinatura, mas precisam estar na mesma região do conjunto de criptografia de disco. Com o acesso à versão prévia, você poderá usar os Azure Key Vaults de diferentes locatários do Microsoft Entra.
- Os discos criptografados com chaves gerenciadas pelo cliente só poderão ser movidos para outro grupo de recursos se a VM à qual estão anexados for desalocada.
- Os discos, os instantâneos e as imagens criptografadas com chaves gerenciadas pelo cliente não podem ser movidas entre assinaturas.
- Os discos gerenciados atualmente ou criptografados anteriormente usando Azure Disk Encryption não podem ser criptografados usando chaves gerenciadas pelo cliente.
- Só é possível criar até 5 mil conjuntos de criptografia de disco por região e assinatura.
- Para obter informações sobre o uso de chaves gerenciadas pelo cliente com galerias de imagens compartilhadas, confira Preview: Use chaves gerenciadas pelo cliente para criptografar imagens.
Criar recursos
Depois que o recurso estiver habilitado, você precisará configurar um DiskEncryptionSet e um Azure Key Vault ou um HSM Gerenciado do Azure Key Vault.
Cofre de Chave do Azure
- Instale a CLI do Azure mais recente e faça logon em uma conta do Azure com az login.
- Criar um Azure Key Vault e uma chave de criptografia.
Ao criar o Key Vault, você deve habilitar a proteção contra limpeza. A proteção de limpeza garante que uma chave excluída não seja excluída permanentemente até que o período de retenção termine. Essas configurações protegem você contra a perda de dados devido à exclusão acidental. Essas configurações são obrigatórias ao usar um Key Vault para criptografar discos gerenciados.
Importante
Não use camelCase na região. Isso pode causar problemas na atribuição de discos adicionais ao recurso no portal do Azure.
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az group create --resource-group $rgName --location $location
az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true
az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
- Criar um DiskEncryptionSet. Você pode definir “enable-auto-key-rotation” como “true” para habilitar a rotação automática da chave. Quando você habilita a rotação automática, o sistema atualiza automaticamente todos os discos gerenciados, instantâneos e imagens que fazem referência ao conjunto de criptografia de disco para usar a nova versão da chave em uma hora.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
- Conceda o acesso ao recurso DiskEncryptionSet para o Key Vault.
Observação
Pode levar alguns minutos para o Azure criar a identidade do DiskEncryptionSet no seu Microsoft Entra ID. Se você receber um erro como "não é possível encontrar o objeto Active Directory" ao executar o comando a seguir, aguarde alguns minutos e tente novamente.
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get
Sobre o HSM Gerenciado do Azure Key Vault
Como alternativa, você pode usar um HSM gerenciado para lidar com as chaves.
Para isso, conclua os pré-requisitos a seguir:
- Instale a CLI do Azure mais recente e faça logon em uma conta do Azure com az login.
- Crie e configure um HSM gerenciado.
- Atribua permissões a um usuário para que ele possa gerenciar o HSM Gerenciado.
Configuração
Depois de criar um HSM gerenciado e adicionar permissões, habilite a proteção contra limpeza e crie uma chave de criptografia.
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
az keyvault key create --hsm-name $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048
Depois crie um DiskEncryptionSet.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set create -n $diskEncryptionSetName \
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
Por fim, permita que o DiskEncryptionSet acesse o HSM gerenciado.
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys
Agora que você criou e configurou esses recursos, pode usá-los para proteger seus discos gerenciados. Os seguintes links contém scripts de exemplo, cada um com um cenário respectivo, que você pode usar para proteger seus discos gerenciados.
Exemplos
Crie uma VM usando uma imagem do Marketplace, criptografando o sistema operacional e os discos de dados com chaves gerenciadas pelo cliente
rgName=yourResourceGroupName
vmName=yourVMName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vm create -g $rgName -n $vmName -l $location --image $image --size $vmSize --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 128 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Criptografe os discos gerenciados existentes
Os discos existentes não devem ser anexados a uma VM em execução para que você possa criptografá-los usando o seguinte script:
rgName=yourResourceGroupName
diskName=yourDiskName
diskEncryptionSetName=yourDiskEncryptionSetName
az disk update -n $diskName -g $rgName --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId
Crie um conjunto de dimensionamento de máquinas virtuais usando uma imagem do Marketplace, criptografando o sistema operacional e os discos de dados com chaves gerenciadas pelo cliente
rgName=yourResourceGroupName
vmssName=yourVMSSName
location=westcentralus
vmSize=Standard_DS3_V2
image=LinuxImageURN
diskEncryptionSetName=yourDiskencryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az vmss create -g $rgName -n $vmssName --image $image --upgrade-policy automatic --admin-username azureuser --generate-ssh-keys --os-disk-encryption-set $diskEncryptionSetId --data-disk-sizes-gb 64 128 --data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId
Crie um disco vazio criptografado usando a criptografia do lado do servidor com chaves gerenciadas pelo cliente e anexe-o a uma VM
vmName=yourVMName
rgName=yourResourceGroupName
diskName=yourDiskName
diskSkuName=Premium_LRS
diskSizeinGiB=30
location=westcentralus
diskLUN=2
diskEncryptionSetName=yourDiskEncryptionSetName
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az disk create -n $diskName -g $rgName -l $location --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId --size-gb $diskSizeinGiB --sku $diskSkuName
diskId=$(az disk show -n $diskName -g $rgName --query [id] -o tsv)
az vm disk attach --vm-name $vmName --lun $diskLUN --ids $diskId
Mude a chave de um DiskEncryptionSet para alternar a chave de todos os recursos que fazem referência ao DiskEncryptionSet
rgName=yourResourceGroupName
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
keyVaultId=$(az keyvault show --name $keyVaultName--query [id] -o tsv)
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
az disk-encryption-set update -n keyrotationdes -g keyrotationtesting --key-url $keyVaultKeyUrl --source-vault $keyVaultId
Encontre o status da criptografia do lado do servidor de um disco
az disk show -g yourResourceGroupName -n yourDiskName --query [encryption.type] -o tsv
Importante
As chaves gerenciadas pelo cliente dependem de identidades gerenciadas para recursos do Azure, um recurso do Microsoft Entra ID. Ao configurar chaves gerenciadas pelo cliente, uma identidade gerenciada é atribuída automaticamente aos recursos nos bastidores. Caso mova posteriormente a assinatura, o grupo de recursos ou o disco gerenciado de um diretório do Microsoft Entra para outro, a identidade gerenciada associada aos discos gerenciados não será transferida para o novo locatário, portanto, as chaves gerenciadas pelo cliente poderão não funcionar mais. Para obter mais informações, confira Como transferir uma assinatura entre os diretórios do Microsoft Entra.
Próximas etapas
- Conheça os modelos do Azure Resource Manager para criar discos criptografados com chaves gerenciadas pelo cliente
- Replicar máquinas com discos habilitados para chaves gerenciadas pelo cliente
- Configurar a recuperação de desastre de VMs VMware para o Azure usando o PowerShell
- Configurar a recuperação de desastres para o Azure para máquinas virtuais do Hyper-V usando o PowerShell e o Azure Resource Manager
- Consulte Criar um disco gerenciado de um instantâneo com a CLI para obter um exemplo de código.