Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 à : ✔️ Machine virtuelles Windows
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 besoin de fournir Microsoft Entra informations d’identification pendant l’étape d’activation du chiffrement. Chiffrez toutes les nouvelles machines virtuelles à l’aide de la nouvelle version sans paramètres d’application Microsoft Entra. Pour obtenir des instructions sur l’activation du chiffrement de disque de machine virtuelle à l’aide de la nouvelle version, consultez Azure Disk Encryption. Les machines virtuelles déjà chiffrées avec Microsoft Entra paramètres d’application sont toujours prises en charge. Continuez à gérer ces machines virtuelles 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) implique quatre étapes :
- Création d’un coffre de clés
- Configurer une application Microsoft Entra et un principal de service.
- Définir la stratégie d’accès au coffre de clés de l’application Microsoft Entra.
- 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).
Consultez l’article principal Créer et configurer un coffre de clés pour Azure Disk Encryption article pour savoir comment installer des outils et vous connecter à Azure.
Remarque
Les étapes de cet article sont automatisées dans le script d’interface CLI des prérequis Azure Disk Encryption et le script PowerShell des prérequis Azure Disk Encryption.
Création d’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 Azure CLI pour créer un coffre de clés.
Avertissement
Pour vous assurer que les secrets de chiffrement ne dépassent pas les limites régionales, Azure Disk Encryption exige que le coffre de clés et les machines virtuelles se trouvent dans la même région. Créez et utilisez un coffre de clés dans la même région que la machine virtuelle que vous souhaitez chiffrer.
Créer un coffre de clés à l’aide de PowerShell
Vous pouvez créer un coffre de clés à l’aide de Azure PowerShell et de l’applet de commande New-AzKeyVault. Pour d’autres applets de commande Key Vault, consultez Az.KeyVault.
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'Créer un coffre de clés à l’aide de New-AzKeyVault
New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'Notez le nom du coffre, le nom du groupe de ressources, l’ID de ressource, l’URI du coffre et l’ID d’objet retournés ultérieurement lorsque vous chiffrez les disques.
Créer un coffre de clés à l’aide de Azure CLI
Vous pouvez gérer votre coffre de clés à l’aide de Azure CLI et des commandes az keyvault. Pour créer un coffre de clés, utilisez la commande az keyvault create.
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"Créez un coffre de clés à l’aide d’az keyvault create.
az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"Notez le nom du coffre (nom ), le nom du groupe de ressources, l’ID de ressource (ID ), l’URI du coffre et l’ID d’objet retournés pour une utilisation ultérieure.
Créer un coffre de clés à l’aide d’un modèle Resource Manager
Vous pouvez créer un coffre de clés à l’aide du modèle Resource Manager.
- Dans le modèle de démarrage rapide Azure, sélectionnez Déployer sur Azure.
- 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 termes juridiques et le contrat, puis sélectionnez Acheter.
Configurer une application Microsoft Entra et un principal de service
Lorsque le chiffrement doit être activé 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 un principal d’application et de service Microsoft Entra à l’aide de Azure PowerShell
Pour exécuter les commandes suivantes, obtenez et utilisez le module Azure PowerShell.
Utilisez la cmdlet PowerShell New-AzADApplication pour créer une application Microsoft Entra. MyApplicationHomePage et MyApplicationUri peuvent être toutes les valeurs que vous choisissez.
$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 ContributorIl
$azureAdApplication.ApplicationIds'agit de l'ID client Microsoft Entra et de l'$aadClientSecret est la clé secrète client que vous utiliserez ultérieurement pour activer Azure Disk Encryption. Protégez correctement le secret client Microsoft Entra. L’exécution$azureAdApplication.ApplicationIdaffiche l’ID d’application.
Configurer un principal d’application et de service Microsoft Entra à l’aide de Azure CLI
Vous pouvez gérer vos principaux de service à l’aide de Azure CLI et des commandes az ad sp. Pour plus d’informations, consultez l’article Créer un principal du service Azure.
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>L’id d’application 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 utilisez ultérieurement 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. Chacune de ces étapes vous amène directement à la section de l’article à terminer.
- Vérifiez les autorisations requises.
-
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.
-
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 est utilisé ultérieurement comme AadClientId pour Set-AzVMDiskEncryptionExtension et comme 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 coffre de clés spécifié, Azure Disk Encryption a besoin de l’ID client et du Secret client de l’application Microsoft Entra qui dispose des autorisations pour écrire des secrets dans le coffre de clés.
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éfinissez la stratégie d’accès au coffre de clés pour l’application Microsoft Entra à l’aide de 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.
Définissez la stratégie d’accès au coffre de clés pour l’application AD à l’aide de PowerShell.
$keyVaultName = 'MySecureVault' $aadclient ID = 'MyAadAppclient ID' $KVRGname = 'MyKeyVaultResourceGroup' Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
Définissez la stratégie d’accès au coffre de clés pour l’application Microsoft Entra à l’aide d’Azure CLI
Utilisez la commande az keyvault set-policy pour définir la stratégie d’accès. Pour plus d’informations, consultez l’article Gestion de Key Vault à l’aide de l’interface de ligne de commande (CLI) 2.0.
Accordez au principal de service que vous avez créé à l’aide d’Azure CLI l’accès nécessaire pour récupérer des secrets et encapsuler des clés à l’aide de la commande suivante :
az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Microsoft Entra client ID>" --key-permissions wrapKey --secret-permissions set
Définir la stratégie d’accès au coffre de clés pour l’application Microsoft Entra à l’aide du portail
- Ouvrez le groupe de ressources avec votre coffre de clés.
- Sélectionnez votre coffre de clés, accédez aux stratégies d’accès, puis sélectionnez Ajouter.
- Sous Sélectionner le principal, recherchez l’application Microsoft Entra que vous avez créée, puis sélectionnez-la.
- Pour les autorisations de clé, cochez la case Wrap Key sous opérations de chiffrement.
- Pour les autorisations secrètes, vérifiez Définir sous Opérations de gestion des secrets.
- Sélectionnez OK pour enregistrer la stratégie d’accès.
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 des disques dans le coffre de clés, sinon les déploiements échoueront.
Définir des stratégies d’accès avancées key vault à l’aide de 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 Key Vault pour le chiffrement de disque : EnabledForDiskEncryption est requis pour Azure Disk Encryption.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryptionActiver Key Vault pour le déploiement, si nécessaire : autorise le fournisseur de ressources Microsoft.Compute à récupérer des secrets à partir de ce coffre de clés lorsque ce dernier est référencé dans le cadre de la création de ressources, par exemple lors de la création d’une machine virtuelle.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeploymentActiver Key Vault pour le déploiement d’un modèle, si nécessaire : autorise Azure Resource Manager à obtenir des secrets à partir de ce coffre de clés lorsque ce dernier 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.
Activer Key Vault pour le chiffrement de disque : Enabled-for-disk-encryption est requis.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"Activer Key Vault pour le déploiement, si nécessaire : autorise Machines Virtuelles à récupérer les certificats stockés en tant que secrets dans le coffre.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"Activer Key Vault pour le déploiement d’un modèle, si nécessaire : autorise Resource Manager à récupérer des secrets dans le 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
- Sélectionnez votre coffre de clés, accédez aux stratégies d’accès, puis cliquez pour afficher les stratégies d’accès avancées.
- Cochez la case Activer l’accès à Azure Disk Encryption pour chiffrer des volumes.
- Sélectionnez Activer l’accès à Machines virtuelles Azure pour le déploiement ou Activer l’accès à Azure Resource Manager pour le déploiement de modèles, si nécessaire.
- Sélectionnez Enregistrer.
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 touches de 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/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxExemple d’URL de clé KEK valide :
https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxAzure 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/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxURL de coffre de clés acceptable :
https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Configurer une clé de chiffrement de clés à l’aide d’Azure PowerShell
Avant d’utiliser le script PowerShell, passez en revue les conditions préalables Azure Disk Encryption pour comprendre les étapes du 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 AD 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 that you choose.
$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;
$aadclient ID = $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 $aadclient ID -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 -Aadclient ID $aadclient ID -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, passez en revue les conditions préalables Azure Disk Encryption pour comprendre les étapes du 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
$AADclient ID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -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 by using Microsoft Entra client ID and the client certificate thumbprint
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -Aadclient ID $AADclient ID -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, passez en revue toutes les conditions préalables Azure Disk Encryption précédentes pour comprendre les étapes du script. L’exemple de script peut nécessiter certaines modifications pour votre environnement.
# 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
$AADclient ID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
## Give access for setting secrets and wrapping keys
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadclient ID -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 by using Microsoft Entra client ID and the client certificate thumbprint
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -Aadclient ID $AADclient ID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId