Compartilhar via


Use o 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 Windows ✔️ Conjuntos de dimensionamento flexíveis ✔️ Conjuntos de dimensionamento uniformes

Armazenamento em Disco do Azure permite que você gerencie suas 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 o módulo CLI do Azure ou o módulo Azure PowerShell.
  • Um disco e todos os seus instantâneos incrementais associados devem ter o mesmo conjunto de criptografia do disco.
  • 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 do Cofre de Chaves do Azure.
  • Somente para Discos Ultra e discos SSD Premium v2:
    • (Versão prévia) As identidades gerenciadas atribuídas pelo usuário estão disponíveis para discos Ultra Disks e Premium SSD v2 criptografados com chaves gerenciadas pelo cliente.
  • A maioria dos recursos relacionados às chaves gerenciadas pelo cliente (conjuntos de criptografia de disco, VMs, discos e instantâneos) precisam estar na mesma assinatura e região.
  • Os discos criptografados com chaves gerenciadas pelo cliente só poderão ser movidos para outro grupo de recursos se a VM à qual estão anexadas for desalocada.
  • Os discos, os instantâneos e as imagens criptografadas com chaves gerenciadas pelo cliente não podem ser movidas entre assinaturas.
  • Discos gerenciados atualmente ou previamente criptografados 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 Azure Key Vault HSM Gerenciado.

Azure Key Vault

  • Instale o CLI do Azure mais recente e faça logon em uma conta de Azure com logon az.
  • Crie um Azure Key Vault e uma chave de criptografia.

Ao criar o cofre de chaves, você deve habilitar a proteção contra limpeza. A proteção contra exclusão definitiva garante que uma chave excluída não possa ser excluída permanentemente até que o período de retenção expire. 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 camel case para a região; se o fizer, poderá ter problemas ao atribuir discos adicionais ao recurso no Azure Portal.

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 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 o acesso ao recurso DiskEncryptionSet para o Key Vault.

Observação

Pode levar alguns minutos para Azure criar a identidade do DiskEncryptionSet em seu Microsoft Entra ID. Se você receber um erro como "Não é possível localizar 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

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:

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

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
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

Altere a chave de um DiskEncryptionSet para girar a chave dos recursos que referenciam o 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 em segundo plano. Se você mover posteriormente a assinatura, o grupo de recursos ou o disco gerenciado de um Microsoft Entra diretório 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, consulte Transferindo uma assinatura entre diretórios do Microsoft Entra.

Próximas etapas