Utiliser Azure CLI pour activer le chiffrement côté serveur à l'aide de clés gérées par le client pour les disques managés

S’applique aux : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows ✔️ Groupes identiques flexibles ✔️ Groupes identiques uniformes

Le stockage sur disque Azure vous permet de gérer vos propres clés lors de l’utilisation du chiffrement côté serveur (SSE) pour les disques managés, si vous le souhaitez. Pour obtenir des informations conceptuelles sur SSE avec des clés gérées par le client, ainsi que d’autres types de chiffrement de disque managés, consultez la section Customer-managed keys (Clés gérées par le client) de notre article sur le chiffrement de disque.

Restrictions

Pour le moment, les clés gérées par le client sont soumises aux restrictions suivantes :

  • Si vous activez cette fonctionnalité pour un disque ayant des captures instantanées incrémentielles, vous ne pouvez pas la désactiver sur ce disque ou ses captures instantanées. Pour éviter cette situation, copiez toutes les données sur un disque managé totalement différent qui n’utilise pas de clés gérées par le client. Vous pouvez le faire avec Azure CLI ou le module Azure PowerShell.
  • Seules les clés RSA HSM et de logiciels des tailles une tailles 2 048 bits, 3 072 bits et 4 096 bits sont prises en charge ; aucune autre clé ou taille n’est prise en charge.
    • Les clés HSM nécessitent le niveau Premium de coffres de clés Azure.
  • Pour les disques Ultra et SSD Premium v2 uniquement :
    • Les instantanés créés à partir de disques chiffrés à l’aide du chiffrement côté serveur et des clés gérées par le client doivent être chiffrés avec les mêmes clés gérées par le client.
    • Les identités managées affectées par l’utilisateur ne sont pas prises en charge pour les disques Ultra et SSD Premium v2 chiffrés avec des clés gérées par le client.
  • La plupart des ressources liées à vos clés gérées par le client (jeux de chiffrement de disque, machines virtuelles, disques et instantanés) doivent se trouver dans le même abonnement et la même région.
    • Les coffres de clés Azure peuvent être utilisés à partir d’un autre abonnement, mais doivent se trouver dans la même région que votre jeu de chiffrement de disque. En préversion, vous pouvez utiliser des coffres de clés Azure à partir de différents locataires Microsoft Entra.
  • Les disques chiffrés avec des clés gérées par le client peuvent uniquement se déplacer vers un autre groupe de ressources si la machine virtuelle à laquelle ils sont attachés est désallouée.
  • Les disques, les captures instantanées et les images chiffrées à l’aide de clés gérées par le client ne peuvent pas être déplacés d’un abonnement à un autre.
  • Les disques managés actuellement ou précédemment chiffrés à l’aide d’Azure Disk Encryption ne peuvent pas faire l’objet d’un chiffrement en utilisant des clés gérées par le client.
  • Ne peut créer que jusqu’à 5 000 jeux de chiffrements de disques par région et par abonnement.
  • Pour plus d’informations sur l’utilisation de clés gérées par le client avec des galeries d’images partagées, consultez Préversion : Utiliser des clés gérées par le client pour le chiffrement d’images.

Créer des ressources

Une fois la fonctionnalité activée, vous devez configurer un DiskEncryptionSet et une instance Azure Key Vault ou un HSM géré par Azure Key Vault.

Azure Key Vault

  • Installez la dernière version d’Azure CLI et connectez-vous à un compte Azure avec az login.
  • Créez un Azure Key Vault et une clé de chiffrement.

Quand vous créez le Key Vault, vous devez activer la protection de purge. La protection de purge garantit qu’une clé supprimée ne peut pas être supprimée définitivement tant que la période de rétention n’est pas écoulée. Ces paramètres vous protègent contre la perte de données en raison d’une suppression accidentelle. Ces paramètres sont obligatoires lors de l’utilisation d’un coffre de clés Key Vault pour le chiffrement des disques managés.

Important

N’utilisez pas de casse mixte pour la région. Si vous le faites, vous risquez de rencontrer des problèmes lors de l’attribution de disques supplémentaires à la ressource dans le Portail 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
  • Créez un DiskEncryptionSet. Vous pouvez affecter la valeur true à Enable-Auto-Key-rotation pour activer la rotation automatique de la clé. Lorsque vous activez la rotation automatique, le système met automatiquement à jour tous les disques managés, les captures instantanées et les images référençant le jeu de chiffrement de disque pour utiliser la nouvelle version de la clé dans un délai d’une heure.
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
  • Accorder à la ressource DiskEncryptionSet l’accès au coffre de clés.

Remarque

La création de l’identité de votre DiskEncryptionSet dans Microsoft Entra ID peut prendre quelques minutes à Azure. Si vous recevez une erreur comme « Impossible de trouver l’objet Active Directory » lors de l’exécution de la commande suivante, attendez quelques minutes et réessayez.

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 géré par Azure Key Vault

Vous pouvez également utiliser un HSM géré pour gérer vos clés.

Pour ce faire, vous devez remplir les conditions préalables suivantes :

Configuration

Une fois que vous avez créé un module HSM géré et ajouté des autorisations, activez la protection contre le vidage et créez une clé de chiffrement.

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

Ensuite, créez un 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

Enfin, accordez au DiskEncryptionSet l’accès au HSM géré.

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

Maintenant que vous avez créé et configuré ces ressources, vous pouvez les utiliser pour sécuriser vos disques managés. Les liens suivants contiennent des exemples de scripts, chacun avec un scénario respectif, que vous pouvez utiliser pour sécuriser vos disques managés.

Exemples

Créer une machine virtuelle à l’aide d’une image marketplace, en chiffrant le système d’exploitation et les disques de données avec des clés gérées par le client

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

Chiffrer des disques managés existants

Vos disques existants ne doivent pas être attachés à une machine virtuelle en cours d’exécution pour que vous puissiez les chiffrer à l’aide du script suivant :

rgName=yourResourceGroupName
diskName=yourDiskName
diskEncryptionSetName=yourDiskEncryptionSetName

az disk update -n $diskName -g $rgName --encryption-type EncryptionAtRestWithCustomerKey --disk-encryption-set $diskEncryptionSetId

Créer un groupe de machines virtuelles identiques en utilisant une image de la Place de marché, en chiffrant le système d’exploitation et les disques de données avec des clés gérées par le client

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

Créer un disque vide chiffré à l’aide du chiffrement côté serveur avec des clés gérées par le client et l’attacher à une machine virtuelle

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

Modifier la clé d’un DiskEncryptionSet pour faire pivoter la clé de toutes les ressources référençant le 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

Rechercher l’état de chiffrement côté serveur d’un disque

az disk show -g yourResourceGroupName -n yourDiskName --query [encryption.type] -o tsv

Important

Les clés gérées par le client s’appuient sur des identités managées pour les ressources Azure, une fonctionnalité de Microsoft Entra ID. Quand vous configurez des clés gérées par le client, une identité managée est automatiquement affectée à vos ressources à l’arrière plan. Si, par la suite, vous déplacez l’abonnement, le groupe de ressources ou le disque managé d’un répertoire Microsoft Entra vers un autre, l’identité managée associée aux disques managés n’est pas transférée vers le nouveau locataire, de sorte que les clés gérées par le client peuvent ne plus fonctionner. Si vous souhaitez en savoir plus, veuillez consulter la rubrique Transfert d’un abonnement entre des répertoires Azure AD.

Étapes suivantes