Use a CLI do Azure para habilitar a criptografia do lado do servidor com chaves gerenciadas pelo cliente para discos gerenciados
Aplica-se a: ✔️ VMs ✔️ Linux VMs ✔️ do Windows Conjuntos ✔️ de escala flexíveis Conjuntos de balanças uniformes
O Armazenamento em Disco do Azure permite que você gerencie suas próprias chaves ao usar a criptografia do lado do servidor (SSE) para discos gerenciados, se desejar. Para obter informações conceituais sobre SSE com chaves gerenciadas pelo cliente, bem como outros tipos de criptografia de disco gerenciado, consulte a seção Chaves gerenciadas pelo cliente de 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 snapshots incrementais, ele não poderá ser desabilitado nesse disco ou em seus snapshots. Para contornar isso, copie todos os dados para um disco gerenciado totalmente diferente que não esteja usando chaves gerenciadas pelo cliente. Você pode fazer isso com a CLI do Azure ou o módulo do Azure PowerShell.
- Um disco e todos os snapshots incrementais associados devem ter o mesmo conjunto de criptografia de disco.
- Apenas software e chaves HSM RSA de tamanhos de 2.048 bits, 3.072 bits e 4.096 bits são suportados, sem outras chaves ou tamanhos.
- As chaves HSM exigem a camada premium dos cofres da Chave do Azure.
- Apenas para discos Ultra e SSD Premium v2:
- Os discos criados a partir de instantâneos criptografados com criptografia do lado do servidor e chaves gerenciadas pelo cliente devem ser criptografados com o mesmo conjunto de criptografia de disco.
- As identidades gerenciadas atribuídas pelo usuário não são suportadas para discos Ultra Disks e SSD Premium v2 criptografados com chaves gerenciadas pelo cliente.
- Atualmente, não há suporte para a criptografia de discos Ultra e discos SSD Premium v2 com chaves gerenciadas pelo cliente usando os Cofres de Chaves do Azure 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) deve estar na mesma assinatura e região.
- Os Cofres de Chaves do Azure podem ser usados a partir de uma assinatura diferente, mas devem estar na mesma região do conjunto de criptografia de disco. Como visualização, você pode usar os Cofres de Chaves do Azure de diferentes locatários do Microsoft Entra.
- Os discos criptografados com chaves gerenciadas pelo cliente só podem ser movidos para outro grupo de recursos se a VM à qual estão conectados for deslocalizada.
- Discos, instantâneos e imagens criptografados com chaves gerenciadas pelo cliente não podem ser movidos entre assinaturas.
- Os discos gerenciados atualmente ou anteriormente criptografados usando o Azure Disk Encryption não podem ser criptografados usando chaves gerenciadas pelo cliente.
- Só pode criar até 5000 conjuntos de criptografia de disco por região e por assinatura.
- Para obter informações sobre como usar chaves gerenciadas pelo cliente com galerias de imagens compartilhadas, consulte Visualização: usar chaves gerenciadas pelo cliente para criptografar imagens.
Criar recursos
Depois que o recurso estiver habilitado, você precisará configurar um DiskEncryptionSet e um Cofre da Chave do Azure ou um HSM Gerenciado do Cofre da Chave do Azure.
Azure Key Vault
- Instale a CLI do Azure mais recente e faça logon em uma conta do Azure com az login.
- Crie um Cofre de Chaves do Azure e uma chave de criptografia.
Ao criar o Cofre da Chave, você deve habilitar a proteção contra limpeza. A proteção contra limpeza garante que uma chave excluída não possa ser excluída permanentemente até que o período de retenção expire. Estas definições protegem-no contra a perda de dados devido à eliminação acidental. Essas configurações são obrigatórias ao usar um Cofre de Chaves para criptografar discos gerenciados.
Importante
Não camel caso a região, se você fizer isso, você pode ter problemas ao atribuir discos adicionais para o 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
- Crie um DiskEncryptionSet. Você pode definir enable-auto-key-rotation igual a 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 dentro de 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 ao recurso DiskEncryptionSet acesso ao cofre de chaves.
Nota
Pode levar alguns minutos para o Azure criar a identidade do seu DiskEncryptionSet em sua ID do Microsoft Entra. Se você receber um erro como "Não é possível localizar o objeto do Ative Directory" ao executar o seguinte comando, 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
HSM Gerido do Azure Key Vault
Como alternativa, você pode usar um HSM gerenciado para manipular suas chaves.
Para fazer isso, você deve preencher os seguintes pré-requisitos:
- Instale a CLI do Azure mais recente e inicie sessão numa conta do Azure com az login.
- Crie e configure um HSM gerenciado.
- Atribua permissões a um usuário, para que ele possa gerenciar seu 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
Em seguida, 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, conceda ao DiskEncryptionSet acesso ao 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 links a seguir contêm scripts de exemplo, cada um com um respetivo cenário, 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
Criptografar discos gerenciados existentes
Seus discos existentes não devem ser anexados a uma VM em execução para que você os criptografe 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áquina virtual 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 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
Altere a chave de um DiskEncryptionSet para girar a chave para 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
Localizar 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. Quando você configura chaves gerenciadas pelo cliente, uma identidade gerenciada é automaticamente atribuída aos seus recursos sob as cobertas. Se, posteriormente, você mover 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 podem não funcionar mais. Para obter mais informações, consulte Transferindo uma assinatura entre diretórios do Microsoft Entra.
Próximos passos
- Explore 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 após desastre de VMs do VMware para o Azure com o PowerShell
- Configurar a recuperação após desastre para o Azure para VMs Hyper-V com o PowerShell e com o Azure Resource Manager
- Consulte Criar um disco gerenciado a partir de um snapshot com a CLI para obter um exemplo de código.