Partilhar via


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

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:

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