Partilhar via


Use a CLI do Azure para habilitar a criptografia do lado do servidor com chaves gerenciadas pelo cliente para discos gerenciados

pt-PT: Aplica-se a: ✔️ VMs Linux ✔️ VMs Windows ✔️ Conjuntos de escala flexíveis ✔️ Conjuntos de escala 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 2.048 bits, 3.072 bits e 4.096 bits são suportados, não são suportados outros tamanhos ou chaves.
    • As chaves HSM exigem a camada premium dos cofres de Chave do Azure.
  • Apenas para discos Ultra e SSD Premium v2:
    • (Pré-visualização) As identidades gerenciadas atribuídas pelo usuário estão disponíveis para discos Ultra e SSD Premium v2 criptografados com chaves gerenciadas pelo cliente.
    • (Pré-visualização) Você pode criptografar discos Ultra e discos SSD Premium v2 com chaves geridas pelo cliente usando os Cofres de Chaves do Azure armazenados em um tenant diferente do Microsoft Entra ID.
  • A maioria dos recursos relacionados às chaves geridas pelo cliente (conjuntos de criptografia de disco, VMs, discos e instantâneos) devem 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. Em pré-visualização, 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 estiver deslocalizada.
  • Discos, instantâneos e imagens criptografados com chaves geridas pelo cliente não podem ser transferidos 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

Assim que a funcionalidade estiver habilitada, será necessário configurar um DiskEncryptionSet e um Azure Key Vault ou um Azure Key Vault Managed HSM.

Azure Key Vault

  • Instale a versão mais recente da Azure CLI e inicie sessão numa conta do Azure com az login.
  • Crie um Cofre de Chaves do Azure e uma chave de criptografia.

Ao criar o Cofre de Chaves, deve habilitar a proteção contra eliminação. A proteção contra eliminação garante que uma chave eliminada não possa ser eliminada de forma permanente 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 uses camel case para a região; se o fizeres, podes ter problemas ao atribuir 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
  • Crie um conjunto de encriptação de disco. 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 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

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á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 se configuram chaves geridas pelo cliente, uma identidade gerida é automaticamente atribuída aos seus recursos nos bastidores. 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