Création et configuration d’un coffre de clés pour Azure Disk Encryption avec Microsoft Entra ID (version précédente) pour les machines virtuelles Linux

Important

Azure Disk Encryption est prévu pour la mise hors service le 15 septembre 2028. Jusqu’à cette date, vous pouvez continuer à utiliser Azure Disk Encryption sans interruption. Le 15 septembre 2028, les charges de travail compatibles avec ADE continueront d’être exécutées, mais les disques chiffrés ne pourront pas être déverrouillés après le redémarrage de la machine virtuelle, ce qui entraîne une interruption du service.

Utilisez le chiffrement sur l’hôte pour les nouvelles machines virtuelles ou tenez compte des tailles de machine virtuelle confidentielle avec le chiffrement de disque du système d’exploitation pour les charges de travail d’informatique confidentielle. Toutes les machines virtuelles compatibles ADE (y compris les sauvegardes) doivent migrer vers le chiffrement à l’hôte avant la date de mise hors service pour éviter toute interruption de service. Pour plus d’informations, consultez Migrer d’Azure Disk Encryption vers le chiffrement sur l’hôte .

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

La nouvelle version d’Azure Disk Encryption vous évite de fournir un paramètre d’application Microsoft Entra pour activer le chiffrement de disque de machine virtuelle. Avec la nouvelle version, vous n’avez plus à fournir les informations d’identification Microsoft Entra lors de l’étape d’activation du chiffrement. Toutes les nouvelles machines virtuelles doivent être chiffrées sans les paramètres d’application Microsoft Entra à l’aide de la nouvelle version. Pour afficher des instructions pour activer le chiffrement de disque de machine virtuelle à l’aide de la nouvelle version, consultez Azure Disk Encryption. Les machines virtuelles déjà chiffrées avec les paramètres d’application Microsoft Entra, toujours prises en charge, doivent être gérées avec la syntaxe Microsoft Entra.

Azure Disk Encryption utilise Azure Key Vault pour contrôler et gérer les clés et les secrets de chiffrement de disque. Pour plus d’informations sur les coffres de clés, consultez les articles Prise en main du coffre de clés Azure et Sécuriser votre coffre de clés.

La création et la configuration d’un coffre de clés à utiliser avec Azure Disk Encryption avec Microsoft Entra ID (version précédente) impliquent trois étapes :

  1. Créez un Key Vault.
  2. Configurez une application Microsoft Entra et un principal de service.
  3. Définir la stratégie d’accès au coffre de clés de l’application Microsoft Entra.
  4. Définissez les stratégies d’accès avancé au coffre de clés.

Vous pouvez également générer ou importer une clé de chiffrement de clés (KEK).

Pour connaître les étapes à suivre pour Installer les outils et se connecter à Azure, consultez l’article principal Création et configuration d’un coffre de clés pour Azure Disk Encryption.

Créer un coffre de clés

Azure Disk Encryption est intégré à Azure Key Vault pour vous permettre de contrôler et gérer les clés et les secrets de chiffrement de disque dans votre abonnement de coffre de clés. Vous pouvez créer un coffre de clés ou utiliser un coffre existant pour Azure Disk Encryption. Pour plus d’informations sur les coffres de clés, consultez les articles Prise en main du coffre de clés Azure et Sécuriser votre coffre de clés. Vous pouvez utiliser un modèle Resource Manager, Azure PowerShell ou le Azure CLI pour créer un Key Vault.

Avertissement

Pour vous assurer que les secrets de chiffrement ne dépassent pas les limites régionales, Azure Disk Encryption a besoin du coffre de clés et des machines virtuelles à colocaliser dans la même région. Créez et utilisez un coffre de clés situé dans la même région que la machine virtuelle à chiffrer.

Créer un coffre de clés avec PowerShell

Vous pouvez créer un coffre de clés avec Azure PowerShell à l’aide de l’applet de commande New-AzKeyVault. Pour plus d’applets de commande pour Key Vault, consultez Az.KeyVault.

  1. Le cas échéant, créez un groupe de ressources avec la commande New-AzResourceGroup. Pour obtenir la liste des emplacements des centres de données, utilisez Get-AzLocation.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. Créer un coffre de clés à l’aide de New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. Notez les données Nom du coffre, Nom du groupe de ressources, ID de ressource, URI du coffre et ID d’objet qui sont renvoyées à des fins d’utilisation ultérieure dans le cadre du chiffrement des données.

Créer un coffre de clés avec Azure CLI

Vous pouvez gérer votre coffre de clés avec Azure CLI à l’aide des commandes az keyvault. Pour créer un coffre de clés, utilisez la commande az keyvault create.

  1. Le cas échéant, créez un groupe de ressources avec la commande az group create. Pour obtenir la liste des emplacements, utilisez la commande az account list-locations

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. Créez un coffre de clés à l’aide d’az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. Notez les données Nom du coffre, Nom du groupe de ressources, ID de ressource, URI du coffre et ID d’objet qui sont renvoyées à des fins d’utilisation ultérieure.

Créer un coffre de clés avec un modèle Resource Manager

Vous pouvez créer un coffre de clés à l’aide du modèle Resource Manager.

  1. Dans le modèle de démarrage rapide Azure, sélectionnez Déployer sur Azure.
  2. Sélectionnez l’abonnement, le groupe de ressources, l’emplacement du groupe de ressources, le nom du coffre de clés, l’ID d’objet, les conditions légales et le contrat, puis sélectionnez Acheter.

Configurer une application Microsoft Entra et un principal de service

Lorsque vous devez activer le chiffrement sur une machine virtuelle en cours d’exécution dans Azure, Azure Disk Encryption génère et écrit les clés de chiffrement dans votre coffre de clés. La gestion des clés de chiffrement dans votre coffre de clés nécessite l’authentification Microsoft Entra. Créez une application Microsoft Entra à cette fin. Pour l’authentification, vous pouvez utiliser soit l’authentification par secret client, soit l’authentification Microsoft Entra par certificat client.

Configurer une application Microsoft Entra et un principal de service avec Azure PowerShell

Pour exécuter les commandes suivantes, obtenez et utilisez le module Azure PowerShell.

  1. Utilisez la cmdlet PowerShell New-AzADApplication pour créer une application Microsoft Entra. Vous pouvez définir MyApplicationHomePage et MyApplicationUri sur les valeurs de votre choix.

    $aadClientSecret = "My AAD client secret"
    $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force
    $azureAdApplication = New-AzADApplication -DisplayName "My Application Display Name" -HomePage "https://MyApplicationHomePage" -IdentifierUris "https://MyApplicationUri" -Password $aadClientSecretSec
    $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor
    
  2. $azureAdApplication.ApplicationId est l’ID client Microsoft Entra, et $aadClientSecret le secret client que vous utiliserez par la suite pour activer Azure Disk Encryption. Protégez correctement le secret client Microsoft Entra. L’exécution de l’élément $azureAdApplication.ApplicationId vous présentera l’ID d’application.

Configurer une application Microsoft Entra et un principal de service avec Azure CLI

Vous pouvez gérer vos principaux de service avec Azure CLI à l’aide des commandes az ad sp. Pour plus d’informations, consultez l’article Créer un principal du service Azure.

  1. Créez un principal de service.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. L’appId retourné est l’ID client Microsoft Entra utilisé dans d’autres commandes. Il s’agit également du nom de principal de service (SPN) que vous utiliserez pour la commande az keyvault set-policy. Le mot de passe est la clé secrète client que vous utiliserez par la suite pour activer Azure Disk Encryption. Protégez correctement le secret client Microsoft Entra.

Configurer une application Microsoft Entra et un principal de service via le portail Azure

Utilisez les étapes décrites dans l’article Utiliser le portail pour créer une application et un principal de service Microsoft Entra pouvant accéder aux ressources pour créer une application Microsoft Entra. Chaque étape répertoriée ci-après vous permet d’accéder directement à la section de l’article appropriée.

  1. Vérifiez les autorisations requises.
  2. Créer une application Microsoft Entra
    • Lorsque vous créez l’application, vous pouvez utiliser le nom et l’URL de connexion de votre choix.
  3. Obtenez l’ID d’application et la clé d’authentification.
    • La clé d’authentification correspond à la clé secrète client et est utilisée comme élément AadClientSecret pour Set-AzVMDiskEncryptionExtension.
      • La clé d’authentification est utilisée par l’application en tant qu’informations d’identification pour la connexion à Microsoft Entra ID. Dans le Portail Azure, ce secret est appelé clés, mais n’a aucun rapport avec les coffres de clés. Sécurisez ce secret de manière appropriée.
    • L’ID d’application sera utilisé par la suite en tant qu’élément AadClientId pour Set-AzVMDiskEncryptionExtension et en tant qu’élément ServicePrincipalName pour Set-AzKeyVaultAccessPolicy.

Définir la stratégie d’accès au coffre de clés de l’application Microsoft Entra

Pour écrire des secrets de chiffrement dans un key vault spécifié, Azure Disk Encryption a besoin de l’ID client et de la clé secrète client de l’application Microsoft Entra qui dispose des autorisations nécessaires pour écrire des secrets dans le Key Vault.

Remarque

Azure Disk Encryption vous demande de configurer les stratégies d’accès suivantes dans votre application cliente Microsoft Entra : autorisations WrapKey et Set.

Définir la stratégie d’accès au coffre de clés pour l’application Microsoft Entra avec Azure PowerShell

Votre application Microsoft Entra a besoin d’autorisations pour accéder aux clés ou aux secrets du coffre. Exécutez la cmdlet Set-AzKeyVaultAccessPolicy pour accorder des autorisations à l’application, en utilisant l’ID client (qui a été généré quand l’application a été enregistrée) comme valeur du paramètre –ServicePrincipalName. Pour en savoir plus, consultez le billet de blog Azure Key Vault – Étape par étape.

  1. Définissez la stratégie d’accès au coffre de clés pour l’application Microsoft Entra avec PowerShell.

    $keyVaultName = 'MySecureVault'
    $aadClientID = 'MyAadAppClientID'
    $KVRGname = 'MyKeyVaultResourceGroup'
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
    

Définir la stratégie d’accès au coffre de clés pour l’application Microsoft Entra avec Azure CLI

Utilisez la commande az keyvault set-policy pour définir la stratégie d’accès. Pour plus d’informations, consultez Gérer le coffre de clés à l’aide de l’interface CLI 2.0.

Accordez au principal de service que vous avez créé à l’aide d’Azure CLI les autorisations permettant de récupérer des secrets et d’encapsuler des clés avec la commande suivante :

az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Microsoft Entra ClientID>" --key-permissions wrapKey --secret-permissions set

Définir la stratégie d’accès au coffre de clés de l’application Microsoft Entra avec le portail

  1. Ouvrez le groupe de ressources avec votre Key Vault.
  2. Sélectionnez votre coffre de clés, accédez à Stratégies d’accès, puis sélectionnez Ajouter nouveau.
  3. Sous Sélectionner le principal, recherchez l’application Microsoft Entra que vous avez créée, puis sélectionnez-la.
  4. Pour Autorisations de clé, cochez la case en regard de Inclure la clé sous Opérations de chiffrement.
  5. Pour Autorisations du secret, cochez la case en regard de Définir sous Opérations de gestion des secrets.
  6. Sélectionnez OK pour enregistrer la stratégie d’accès.

Opérations de chiffrement Azure Key Vault - Inclure la clé

Autorisations du secret Azure Key Vault - Définir

Définir des stratégies d’accès avancé au coffre de clés

La plateforme Azure doit avoir accès aux clés et aux clés secrètes de chiffrement dans votre coffre de clés afin de les mettre à disposition de la machine virtuelle pour lancer et déchiffrer les volumes. Activez le chiffrement de disque sur le coffre de clés ; dans le cas contraire, les déploiements échoueront.

Définir des stratégies d’accès avancé au coffre de clés avec Azure PowerShell

Utilisez l’applet de commande PowerShell de coffre de clés Set-AzKeyVaultAccessPolicy pour activer le chiffrement de disque pour le coffre de clés.

  • Activez le coffre de clés pour le chiffrement de disque : EnabledForDiskEncryption est requis pour le chiffrement de disque Azure.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryption
    
  • Activez le coffre de clés pour le déploiement, si nécessaire : Active Microsoft. de ressources Microsoft.Compute à récupérer des secrets de ce coffre de clés quand ce dernier est référencé lors de la création d’une ressource, par exemple lors de la création d’une machine virtuelle.

     Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeployment
    
  • Activez le coffre de clés pour le déploiement de modèles, si nécessaire : Permet Azure Resource Manager d’obtenir des secrets à partir de ce coffre de clés lorsque ce coffre de clés est référencé dans un déploiement de modèle.

    Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
    

Définir des stratégies d’accès avancées key vault à l’aide du Azure CLI

Utilisez la commande az keyvault update afin d’activer le chiffrement de disque pour le coffre de clés.

  • Activez le coffre de clés pour le chiffrement de disque : Le chiffrement activé pour disque est requis.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"
    
  • Activez key vault pour le déploiement, si nécessaire : Autoriser les machines virtuelles à récupérer des certificats stockés en tant que secrets à partir du coffre.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"
    
  • Activez le coffre de clés pour le déploiement de modèles, si nécessaire : Autorisez Resource Manager à récupérer des secrets à partir du coffre.

    az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
    

Définir des stratégies d’accès avancé au coffre de clés avec le portail Azure

  1. Sélectionnez votre coffre de clés, sélectionnez Stratégies d’accès, puis cliquez pour afficher les stratégies d’accès avancées.
  2. Cochez la case Activer l’accès à Azure Disk Encryption pour chiffrer des volumes.
  3. Sélectionnez Activer l’accès à Azure machines virtuelles pour le déploiement ou Activer l’accès à Azure Resource Manager pour le déploiement de modèles, si nécessaire.
  4. Cliquez sur Enregistrer.

Azure Key Vault stratégies d’accès avancées

Configurer une clé de chiffrement à clé (facultatif)

Si vous souhaitez utiliser une clé de chiffrement de clé (KEK) pour une couche de sécurité supplémentaire pour les clés de chiffrement, ajoutez une clé KEK à votre coffre de clés. Utilisez la cmdlet Add-AzKeyVaultKey pour créer une clé de chiffrement à clé dans le coffre de clés. Vous pouvez également importer une clé de chiffrement à clé à partir de votre module de sécurité matériel de gestion des clés locales. Pour plus d’informations, consultez Key Vault documentation. Quand une clé de chiffrement principale est spécifiée, Azure Disk Encryption utilise cette clé pour wrapper les secrets de chiffrement avant d’écrire dans Key Vault.

  • Lors de la génération de clés, utilisez un type de clé RSA. Azure Disk Encryption ne prend pas encore en charge l’utilisation de clés à courbe elliptique.

  • Les URL de clé secrète de coffre de clés et de clé de chiffrement à clé (KEK) doivent être des versions gérées. Azure met en vigueur cette restriction de gestion de version. Voici des exemples d’URL de clé secrète et de clé de chiffrement à clé valides :

    • Exemple d’URL de secret valide : https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    • Exemple d’URL de clé KEK valide : https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • Azure Disk Encryption ne prend pas en charge l’intégration de numéros de port aux secrets de coffre de clés et aux URL KEK. Voici des exemples d’URL de coffre de clés valides et non valides :

    • URL de coffre de clés inacceptable : https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    • URL de coffre de clés acceptable : https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Configurer une clé de chiffrement principale avec Azure PowerShell

Avant d’utiliser le script PowerShell, vous devez connaître les prérequis pour Azure Disk Encryption afin de comprendre les étapes figurant dans le script. L’exemple de script peut nécessiter certaines modifications pour votre environnement. Ce script crée tous les prérequis pour Azure Disk Encryption et chiffre une machine virtuelle IaaS existante en incluant la clé de chiffrement de disque dans un wrapper à l’aide d’une clé de chiffrement à clé.

 # Step 1: Create a new resource group and key vault in the same location.
	 # Fill in 'MyLocation', 'MyKeyVaultResourceGroup', and 'MySecureVault' with your values.
	 # Use Get-AzLocation to get available locations and use the DisplayName.
	 # To use an existing resource group, comment out the line for New-AzResourceGroup

     $Loc = 'MyLocation';
     $KVRGname = 'MyKeyVaultResourceGroup';
     $KeyVaultName = 'MySecureVault';
     New-AzResourceGroup –Name  $KVRGname –Location $Loc;
     New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc;
     $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname;
     $KeyVaultResourceId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).ResourceId;
     $diskEncryptionKeyVaultUrl = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName  $KVRGname).VaultUri;

 # Step 2: Create the Microsoft Entra application and service principal.
	 # Fill in 'MyAADClientSecret', "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
	 # MyApplicationHomePage and the MyApplicationUri can be any values you wish.

	 $aadClientSecret =  'MyAADClientSecret';
     $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
     $azureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
     $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor;
     $aadClientID = $azureAdApplication.ApplicationId;

 #Step 3: Enable the vault for disk encryption and set the access policy for the Microsoft Entra application.

	 Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption;
     Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName  $KVRGname;

 #Step 4: Create a new key in the key vault with the Add-AzKeyVaultKey cmdlet.
	 # Fill in 'MyKeyEncryptionKey' with your value.

	 $keyEncryptionKeyName = 'MyKeyEncryptionKey';
     Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
     $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;

 #Step 5: Encrypt the disks of an existing IaaS VM
	 # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

	 $VMName = 'MySecureVM';
      $VMRGName = 'MyVirtualMachineResourceGroup';
     Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;

Authentification par certificat (facultatif)

Si vous souhaitez utiliser l’authentification par certificat, vous pouvez en charger un dans votre coffre de clés et le déployer sur le client. Avant d’utiliser le script PowerShell, vous devez connaître les prérequis pour Azure Disk Encryption afin de comprendre les étapes figurant dans le script. L’exemple de script peut nécessiter certaines modifications pour votre environnement.


 # Fill in "MyKeyVaultResourceGroup", "MySecureVault", and 'MyLocation' ('My location' only if needed)

   $KVRGname = 'MyKeyVaultResourceGroup'
   $KeyVaultName= 'MySecureVault'

   # Create a key vault and set enabledForDiskEncryption property on it.
   # Comment out the next three lines if you already have an existing key vault enabled for encryption. No need to set 'My location' in this case.

   $Loc = 'MyLocation'
   New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

   #Setting some variables with the key vault information
   $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
   $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
   $KeyVaultResourceId = $KeyVault.ResourceId

   # Create the Microsoft Entra application and associate the certificate with it.
   # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
   # MyApplicationHomePage and the MyApplicationUri can be any values you wish

   $CertPath = "C:\certificates\mycert.pfx"
   $CertPassword = "Password"
   $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
   $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

   $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
   $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

   $AADClientID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

   # Upload the pfx file to the Key Vault.
   # Fill in "MyAADCert".

   $KeyVaultSecretName = "MyAADCert"
   $FileContentBytes = get-content $CertPath -Encoding Byte
   $FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
           $JSONObject = @"
           {
               "data" : "$filecontentencoded",
               "dataType" : "pfx",
               "password" : "$CertPassword"
           }
"@

   $JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
   $JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

   #Set the secret and set the key vault policy for -EnabledForDeployment

   $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
   Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

   # Deploy the certificate to the VM
   # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

   $VMName = 'MySecureVM'
   $VMRGName = 'MyVirtualMachineResourceGroup'
   $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
   $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
   $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
   $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
   Update-AzVM -VM $VM -ResourceGroupName $VMRGName

   #Enable encryption on the VM using Microsoft Entra client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId

Authentification par certificat et clé KEK (facultatif)

Si vous souhaitez utiliser l’authentification par certificat et encapsuler la clé de chiffrement avec une clé KEK, vous pouvez utiliser le script ci-dessous comme exemple. Avant d’utiliser le script PowerShell, vous devez connaître tous les prérequis précédents pour Azure Disk Encryption afin de comprendre les étapes figurant dans le script. L’exemple de script peut nécessiter certaines modifications pour votre environnement.

Important

L’authentification par certificat Microsoft Entra n’est actuellement pas prise en charge sur les machines virtuelles Linux.

# Fill in 'MyKeyVaultResourceGroup', 'MySecureVault', and 'MyLocation' (if needed)

   $KVRGname = 'MyKeyVaultResourceGroup'
   $KeyVaultName= 'MySecureVault'

   # Create a key vault and set enabledForDiskEncryption property on it.
   # Comment out the next three lines if you already have an existing key vault enabled for encryption.

   $Loc = 'MyLocation'
   New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption

   # Create the Microsoft Entra application and associate the certificate with it.
   # Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
   # MyApplicationHomePage and the MyApplicationUri can be any values you wish

   $CertPath = "C:\certificates\mycert.pfx"
   $CertPassword = "Password"
   $Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
   $CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())

   $AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
   $ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor

   $AADClientID = $AzureAdApplication.ApplicationId
   $aadClientCertThumbprint= $cert.Thumbprint

   ## Give access for setting secrets and wrapping keys
   Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname

   # Upload the pfx file to the Key Vault.
   # Fill in "MyAADCert".

   $KeyVaultSecretName = "MyAADCert"
   $FileContentBytes = get-content $CertPath -Encoding Byte
   $FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
           $JSONObject = @"
           {
               "data" : "$filecontentencoded",
               "dataType" : "pfx",
               "password" : "$CertPassword"
           }
"@

   $JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
   $JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)

   #Set the secret and set the key vault policy for deployment

   $Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
   Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
   Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment

   #Setting some variables with the key vault information and generating a KEK
   # Fill in 'KEKName'

   $KEKName ='KEKName'
   $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
   $DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
   $KeyVaultResourceId = $KeyVault.ResourceId
   $KEK = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
   $KeyEncryptionKeyUrl = $KEK.Key.kid



   # Deploy the certificate to the VM
   # Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.

   $VMName = 'MySecureVM';
   $VMRGName = 'MyVirtualMachineResourceGroup';
   $CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
   $SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
   $VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
   $VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
   Update-AzVM -VM $VM -ResourceGroupName $VMRGName

   #Enable encryption on the VM using Microsoft Entra client ID and the client certificate thumbprint

   Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId

Étapes suivantes

Activer Azure Disk Encryption avec Microsoft Entra ID sur les machines virtuelles Linux (version précédente)