Le chiffrement des disques Azure existe depuis longtemps, mais il reste souvent mal compris : SSE, Encryption at Host, ADE… tout ne fonctionne pas au même niveau, et tout n’a pas le même impact. Je vous propose ici un tour d’horizon concret : explications, tests de performance et retour d’expérience sur la migration depuis Azure Disk Encryption.

Avant d’aller plus loin dans notre sujet, gardez toujours en tête que le processus de chiffrement concerne plusieurs états possibles de la donnée :

Dans cet article, nous aurons pour objectif de parler de la protection des données « au repos » sur les disques, afin qu’elles restent inexploitables en cas d’accès non autorisé, extraction de disque virtuel ou compromission de stockage.
Vue d’ensemble des options de chiffrement des disques de VM :
À ce jour, il existe plusieurs mécanismes de chiffrement disponibles pour vos disques de vos machines virtuelles Azure. Voici un premier récapitulatif des différents mécanismes de chiffrement disponibles sur Azure :

- Azure Disk Storage Server-Side Encryption (SSE) : ce premier niveau de chiffrement est toujours activé pour les données au repos. Il chiffre automatiquement les données stockées sur les disques gérés Azure (disques OS et disques de données, à l’exception des disques temporaires et des caches disque).

Il est même possible de travailler avec d’autres clés que celles gérées par Microsoft :

- Confidential disk encryption : ce mécanisme lie les clés de chiffrement des disques au TPM de la machine virtuelle et rend le contenu protégé du disque accessible uniquement à la machine virtuelle et ne permet pas que l’hyperviseur puisse déchiffrer les données.
- Encryption at host : option au niveau de la machine virtuelle qui améliore le chiffrement côté serveur Azure Disk Storage afin de garantir que tous les disques temporaires et les caches disque sont chiffrés au repos et transférés chiffrés vers les clusters de stockage.

- Azure Disk Encryption (ADE) : ce mécanisme chiffre le système d’exploitation et les disques de données des machines virtuelles Azure (VM) à l’intérieur de vos VM à l’aide de la fonctionnalité DM-Crypt de Linux ou de la fonctionnalité BitLocker de Windows. Azure Key Vault permet de contrôler et gérer les clés et les secrets de chiffrement de disque.
Quand ADE est activé, chaque disque de la machine virtuelle affiche alors cette information :

Une extension ADE est sur la machine virtuelle :

Est-ce que Azure Disk Encryption est déprécié ?
Azure Disk Encryption présente actuellement plusieurs limites importantes :
- Le chiffrement réalisé directement dans l’OS peut entraîner une consommation CPU supplémentaire dans la VM.
- ADE n’est pas compatible avec l’ensemble des types de disques ni toutes les distributions Linux.
- Son intégration étroite avec l’OS et l’agent Azure le rend plus sensible et plus complexe à maintenir.
Partant de ce constat, je suppose que Microsoft a fait son choix et que ADE sera officiellement retiré le 15 septembre 2028, et propose même une stratégie de migration vers Encryption at host :
Azure Disk Encryption pour les machines virtuelles et les Virtual Machine Scale Sets sera mis hors service le 15 septembre 2028. Les nouveaux clients doivent utiliser le chiffrement sur l’hôte pour toutes les nouvelles machines virtuelles.
Les clients existants doivent planifier la migration des machines virtuelles ADE actuelles vers le chiffrement sur l’hôte avant la date de mise hors service pour éviter toute interruption de service.
Qu’est-ce que Encryption at host ?
Encryption at Host est un mécanisme de chiffrement fourni par la plateforme Microsoft Azure permettant de chiffrer les disques de machines virtuelles au niveau de l’hôte (l’hyperviseur), avant que les données ne soient écrites sur le stockage.
Plutôt que de chiffrer les disques directement dans la machine virtuelle via BitLocker ou DM-Crypt, ce mode déplace le chiffrement sur l’hyperviseur Azure lui-même.
Cela permet de chiffrer l’ensemble des composants associés à la VM (disques OS, disques de données, disques temporaires et cache) tout en évitant la charge CPU dans la VM :
Quelles sont les restrictions liées à cette migration ?
Microsoft rappelle ici les différents points et limitations à prendre lorsque vous souhaitez migrer d’Azure Disk Encryption à Encryption at host, Voici quelques-unes d’entre elles :
- Temps d’arrêt requis : le processus de migration nécessite un temps d’arrêt de machine virtuelle pour les opérations de disque et la recréation des machines virtuelles.
- Aucune migration sur place : vous ne pouvez pas convertir directement des disques chiffrés par ADE en chiffrement sur l’hôte. La migration nécessite la création de disques et de machines virtuelles.
- Machines virtuelles jointes à un domaine : si vos machines virtuelles font partie d’un domaine Active Directory, d’autres étapes sont requises :
- La machine virtuelle d’origine doit être supprimée du domaine avant la suppression
- Après avoir créé la machine virtuelle, elle doit être jointe au domaine
- Pour les machines virtuelles Linux, la jonction de domaine peut être effectuée à l’aide d’extensions Azure AD
- Etape 0 – Rappel des prérequis
- Etape I – Création de la machine virtuelle Azure
- Etape II – Installation de l’outil de mesure Diskspd
- Etape III – Tests de performances avec le chiffrement au repos SSE
- Etape IV – Tests de performances avec Encryption at host
- Etape V – Tests de performances avec Azure Disk Encryption
- Etape VI – Comparaison des performances de chiffrement
- Etape VII – Migration d’ADE vers Encryption at host
Commençons par un rappel des prérequis.
Etape 0 – Rappel des prérequis :
Pour réaliser cet exercice sur les différentes méthodes de chiffrements, il faut disposer de :
- Un tenant Microsoft
- Une souscription Azure valide
La suite se passera par la création d’une machine virtuelle depuis le portail Azure.
Etape I – Création de la machine virtuelle Azure :
Je commence par créer une machine virtuelle Windows Server 2025 avec 32 cœurs, afin d’éviter toute limitation liée aux performances de la VM pendant les tests :

Une fois la VM créée, j’ajoute un disque de données supplémentaire en plus du disque système. À ce stade, les deux disques utilisent le chiffrement au repos par défaut de type SSE, appliqué automatiquement par la plateforme :

Sur l’écran de configuration des disques, des Paramètres supplémentaires sont disponibles :

Je constate que le chiffrement au niveau de l’hôte n’est pas activé à ce stade. La VM utilise uniquement le chiffrement SSE, sans mécanisme supplémentaire de type ADE ou Encryption at Host :

Je me connecte à la machine virtuelle via Azure Bastion :

Je vérifie que le service BDESVC associé à BitLocker n’est pas actif et qu’aucun chiffrement au niveau du système d’exploitation n’a été configuré :
Get-Service BDESVC
manage-bde -status
Cela confirme que seul le chiffrement SSE au niveau du stockage est en place, et qu’aucune couche de chiffrement, au niveau de la machine virtuelle ou de l’hyperviseur est activée :

Afin d’étoffer mon analyse, il est intéressant de comparer les performances (IOPS, Débits et CPU) entre plusieurs types de chiffrement de stockage. Pour cela j’utiliserai l’outil de mesure Diskspd et les métriques disponibles sur le portail Azure.
Etape II – Installation de l’outil de mesure Diskspd :
L’installation de Diskspd se fait directement sur la machine virtuelle à tester :
DISKSPD est un outil que vous pouvez personnaliser pour créer vos propres charges de travail synthétiques. Nous utiliserons la même configuration que celle décrite ci-dessus pour exécuter des tests d’évaluation. Vous pouvez modifier les spécifications pour tester différentes charges de travail.

Microsoft recommande d’utiliser l’utilitaire DiskSpd pour générer une charge sur un système de disques (stockage) et … pour mesurer les performances du stockage et obtenir la vitesse maximale disponible en lecture/écriture et les IOPS du serveur spécifique.
Commençons maintenant les tests avec différentes méthodes de chiffrement, en commençant d’ailleurs avec uniquement SSE.
Etape III – Tests de performance avec le chiffrement au repos SSE :
Pour réaliser des tests avec Diskspd, et pour obtenir un maximum d’IOPS / débit, je lance les deux commandes PowerShell suivante :
C:\DiskSpd\amd64\diskspd.exe -d900 -r -w100 -F4 -o128 -b8K -Sh -L -c50G E:\diskpsdtmp.dat > IOPS-PremiumSSDv2-0encryption.txt
C:\DiskSpd\amd64\diskspd.exe -d900 -r -w100 -F4 -o128 -b64K -Sh -L -c50G E:\diskpsdtmp.dat > Throughput-PremiumSSDv2-0encryption.txt

J’ouvre Task Manager afin d’observer en temps réel l’activité du disque :

Je surveille l’utilisation CPU de la VM depuis le portail Azure :

Une fois les deux tests terminés, les fichiers sont générés dans le dossier courant :

- le premier fichier TXT généré est pour consigner les IOPS :

- Le second fichier TXT est généré pour consigner les débits :

Continuons les tests de performances avec Encryption at host d’activé.
Etape IV – Tests de performance avec Encryption at host :
Pour activer Encryption at host, il est d’abord nécessaire d’éteindre la machine virtuelle :

Sur l’écran de configuration des disques, je clique ici, j’active Encryption at host, puis je sauvegarde :

Une fois la modification appliquée, je redémarre la machine virtuelle :

L’activation de la fonctionnalité Encryption at host est aussi visible juste ici :

Je me reconnecte à la VM via Azure Bastion, puis je relance une seconde salve de tests avec Diskspd :
C:\DiskSpd\amd64\diskspd.exe -d900 -r -w100 -F4 -o128 -b8K -Sh -L -c50G E:\diskpsdtmp.dat > IOPS-PremiumSSDv2-encryptionathost.txt
C:\DiskSpd\amd64\diskspd.exe -d900 -r -w100 -F4 -o128 -b64K -Sh -L -c50G E:\diskpsdtmp.dat > Throughput-PremiumSSDv2-encryptionathost.txt
J’ouvre Task Manager afin d’observer en temps réel l’activité du disque :

Je surveille l’utilisation CPU de la VM depuis le portail Azure :

Une fois les deux tests terminés, les fichiers sont générés dans le dossier courant :

- le premier fichier TXT généré est pour consigner les résultats IOPS :

- Le second fichier TXT est généré pour consigner les résultats débits :

Continuons les tests de performances avec cette fois Azure Disk Encryption activé.
Etape V – Tests de performance avec Azure Disk Encryption :
Pour configurer Azure Disk Encryption, il est nécessaire de commencer par créer un Azure KeyVault :

Sur l’écran de configuration des disques, j’effectue les actions suivantes :
- J’éteins la machine virtuelle,
- Je désactive Encryption at host,
- Je redémarre la machine virtuelle,
- J’active Azure Disk Encryption avec mon Azure Key Vault (4096),
- Je sauvegarde la configuration

Azure lance alors le déploiement automatique d’ADE :

Une extension s’installe alors sur la machine virtuelle :

Je me reconnecte, puis je vérifie que le service BDESVC associé à BitLocker démarre :
Get-Service BDESVC
manage-bde -status
Je constate le démarrage du chiffrement pour les deux disques de ma machine virtuelle :

Quelques minutes plus tard, le chiffrement est terminé :

Je constate l’apparition de la mention ADE sur le disque OS :

Je m’y reconnecte via Azure Bastion, puis relance une troisième salve de tests avec Diskspd :
C:\DiskSpd\amd64\diskspd.exe -d900 -r -w100 -F4 -o128 -b8K -Sh -L -c50G E:\diskpsdtmp.dat > IOPS-PremiumSSDv2-ADEencryption.txt
C:\DiskSpd\amd64\diskspd.exe -d900 -r -w100 -F4 -o128 -b64K -Sh -L -c50G E:\diskpsdtmp.dat > Throughput-PremiumSSDv2-ADEencryption.txt
J’ouvre Task Manager afin d’observer en temps réel l’activité du disque :

Je surveille l’utilisation CPU de la VM depuis le portail Azure :

Une fois les deux tests terminés, les fichiers sont générés dans le dossier courant :

- le premier fichier TXT généré est pour consigner les résultats IOPS :

- Le second fichier TXT est généré pour consigner les résultats débits :

Etape VI – Comparaison des performances de chiffrement :
Les mesures montrent que les performances des disques restent globalement équivalentes entre les trois modes, mais que l’usage CPU varie nettement, notamment lorsque le chiffrement est exécuté dans le système d’exploitation comme avec Azure Disk Encryption :
| Mode de chiffrement | CPU moyen (%) |
|---|---|
| SSE (Storage Service Encryption) | 1.5 % |
| Encryption at Host | 1.0 % |
| ADE (Azure Disk Encryption) | 2.8 % |
- SSE et Encryption at Host ont un impact CPU faible et comparable.
- ADE présente une charge CPU sensiblement supérieure, liée au chiffrement effectué par BitLocker dans la VM, ce qui correspond à l’architecture même de ce mode.
La surcharge induite par ADE reste faible, mais l’hétérogénéité des latences confirme qu’il reste plus sensible que les modes opérés directement par la plateforme.
Etape VII – Migration d’ADE vers Encryption at host :
La migration depuis ADE vers Encryption at host sur une machine virtuelle n’est pas possible pour des raisons techniques. Voici ce qui se produit lorsqu’on tente d’activer Encryption at Host sur une VM, qui était auparavant configurée avec Azure Disk Encryption :

Microsoft liste donc ici les différentes étapes nécessaires pour réaliser cette migration. Nous allons commencer par désactiver Azure Disk Encryption.
Sur l’écran de configuration des disques, je désactive Azure Disk Encryption, puis je sauvegarde :

Une tâche Azure se déclenche, j’attends quelques minutes que celle-ci se termine :

Je me reconnecte à la machine via Azure Bastion, puis je vérifie que le service BDESVC est toujours activé et qu’une phase de déchiffrement vient de démarrer :
Get-Service BDESVC
manage-bde -status

Quelques minutes plus tard, le déchiffrement est entièrement terminé :

Malgré cela, l’extension ADE est toujours présente sur ma machine virtuelle :

Je la désinstalle depuis le portail Azure :

Quelques minutes plus tard, la notification Azure suivante apparaît :


Lancez la commande PowerShell suivante depuis Azure Cloud Shell pour chacun des disques afin de créer des disques qui ne portent pas sur les métadonnées de chiffrement ADE :
Attention : Ce script ne fonctionne pas sur les disques Premium SSDv2 et Ultra.
# Get source disk information
$sourceDisk = Get-AzDisk -ResourceGroupName "MyResourceGroup" -DiskName "MySourceDisk"
# Create a new empty target disk
# For Windows OS disks
$diskConfig = New-AzDiskConfig -Location $sourceDisk.Location -CreateOption Upload -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -OsType Windows -HyperVGeneration "V2"
# For Linux OS disks (if not ADE-encrypted)
# $diskConfig = New-AzDiskConfig -Location $sourceDisk.Location -CreateOption Upload # -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512) -OsType Linux # -HyperVGeneration "V2"
# For data disks (no OS type needed)
# $diskConfig = New-AzDiskConfig -Location $sourceDisk.Location -CreateOption Upload # -UploadSizeInBytes $($sourceDisk.DiskSizeBytes+512)
$targetDisk = New-AzDisk -ResourceGroupName "MyResourceGroup" -DiskName "MyTargetDisk" -Disk $diskConfig
# Generate SAS URIs and copy the data
# Get SAS URIs for both disks
$sourceSAS = Grant-AzDiskAccess -ResourceGroupName "MyResourceGroup" -DiskName $sourceDisk.Name -Access Read -DurationInSecond 7200
$targetSAS = Grant-AzDiskAccess -ResourceGroupName "MyResourceGroup" -DiskName $targetDisk.Name -Access Write -DurationInSecond 7200
# Copy the disk data using AzCopy
azcopy copy $sourceSAS.AccessSAS $targetSAS.AccessSAS --blob-type PageBlob
# Revoke SAS access when complete
Revoke-AzDiskAccess -ResourceGroupName "MyResourceGroup" -DiskName $sourceDisk.Name
Revoke-AzDiskAccess -ResourceGroupName "MyResourceGroup" -DiskName $targetDisk.Name

Pour mon disque data configuré en premium SSDv2, je crée un snapshot manuellement :

Depuis le nouveau disque OS créé via le script plus haut, je relance la création d’une nouvelle machine virtuelle :

Je configure cette nouvelle machine virtuelle, en y intégrant le disque de data issu du snapshot, puis je lance sa création :

Une fois la machine virtuelle créée, j’éteins celle-ci, puis j’active Encryption at host dans les paramétrages des disques :

Je redémarre la machine virtuelle, puis je constate dans l’affichage du diagnostic le bon démarrage de celle-ci :

Conclusion
Au final, SSE et Encryption at Host couvrent aujourd’hui l’essentiel des besoins, avec un impact quasi nul sur la VM et une gestion simplifiée. SSE reste la base, toujours activée, tandis qu’Encryption at Host ajoute une couche complète de protection sans coût CPU notable.
ADE fonctionne encore, mais son intégration à l’OS et sa charge CPU supplémentaire en font une solution plus lourde à exploiter. Avec les résultats obtenus et sa dépréciation annoncée, il devient clairement le mécanisme à éviter pour les nouvelles machines virtuelles.
- SSE : excellente base, impact minimal, tout est géré par la plateforme.
- Encryption at Host : même niveau de performance que SSE, avec la garantie que toutes les couches (OS, data, cache, disque temporaire) sont chiffrées directement par l’hyperviseur.
- ADE : Performances disque similaires, mais CPU plus élevé, dû au chiffrement dans la VM. Cela confirme pourquoi ce mode est progressivement remplacé par les autres mécanismes gérés par la plateforme.
Pour la majorité des workloads, Encryption at Host apparaît désormais comme l’option la plus propre, la plus simple et la plus pérenne.
