Utilisez le Azure CLI pour activer le chiffrement côté serveur avec des clés gérées par le client pour les disques managés

S’applique à : ✔️ Machines virtuelles Linux ✔️ Machines virtuelles Windows ✔️ Ensembles de mise à l’échelle flexibles ✔️ Ensembles de mise à l’échelle uniformes

Azure Disk Storage 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 le module Azure CLI ou le module Azure PowerShell.
  • Un disque et tous les instantanés incrémentiels qui lui sont associés doivent avoir le même jeu de chiffrement de disque.
  • Seules les clés de logiciels et de HSM RSA de tailles 2 048 bits, 3 072 bits et 4 096 bits sont prises en charge; aucune autre clé ou taille ne sont prises en charge.
    • Les clés HSM nécessitent le niveau premium des coffres Azure.
  • Pour les disques Ultra et SSD Premium v2 uniquement :
    • (Aperçu) Les identités managées affectées par l'utilisateur sont disponibles pour les disques Ultra et les disques SSD Premium v2 chiffrés à l'aide de clés gérées par le client.
  • La plupart des ressources associées à vos clés gérées par le client, telles que les ensembles de chiffrement de disque, les machines virtuelles, les disques et les instantanés, doivent se trouver dans le même abonnement et dans la même région.
  • Les disques chiffrés avec des clés gérées par le client ne peuvent passer qu’à un autre groupe de ressources si la machine virtuelle à laquelle elles sont attachées est libéré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 de Azure Disk Encryption ne peuvent pas être chiffrés à l'aide de 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 un Azure Key Vault ou un Azure Key Vault Managed HSM.

Azure Key Vault

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

Lors de la création du Key Vault, vous devez activer la protection contre le vidage. La protection contre le vidage 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 expiré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 Key Vault pour chiffrer les 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 définir activer la rotation automatique de la clé sur true 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, captures instantanées et 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

Il est possible que la création par Azure de l'identité de votre DiskEncryptionSet dans votre Microsoft Entra ID prenne quelques minutes. Si vous obtenez une erreur telle que « Impossible de trouver l’objet Active Directory » lors de l’exécution de la commande suivante, patientez 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 :

Paramétrage

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

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

Créer un groupe de machines virtuelles identiques en utilisant une image du 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
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 vous déplacez par la suite 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 au nouveau locataire, de sorte que les clés gérées par le client peuvent ne plus fonctionner. Pour plus d'informations, consultez Transférer un abonnement entre les annuaires Microsoft Entra.

Étapes suivantes