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.
Cet article explique comment utiliser sauvegarde de machine virtuelle Azure pour restaurer des machines virtuelles Azure chiffrées lorsque la clé d’origine et le secret ne sont pas disponibles dans le coffre de clés. Il s’applique également aux scénarios dans lesquels vous souhaitez conserver une copie distincte de la clé (clé de chiffrement de clé) et du secret (clé de chiffrement BitLocker) pour la machine virtuelle restaurée.
Remarque
Nous vous recommandons d’utiliser le module Azure Az PowerShell pour interagir avec Azure. Pour bien démarrer, consultez Installer Azure PowerShell. Pour savoir comment migrer vers le module Az PowerShell, consultez Migrer Azure PowerShell à partir d’AzureRM vers Az.
Prérequis
Avant de commencer à restaurer une machine virtuelle chiffrée, vérifiez que les conditions préalables suivantes sont remplies :
- Sauvegarde de machines virtuelles chiffrées : les machines virtuelles Azure chiffrées sont sauvegardées à l’aide de sauvegarde Azure. Pour plus d'informations sur la sauvegarde de machines virtuelles Azure chiffrées, consultez Gérer la sauvegarde et la restauration de machines virtuelles Azure à l'aide de PowerShell.
- Configurer Azure Key Vault: assurez-vous que le Key Vault dans lequel les clés et secrets doivent être restaurés est déjà présent. Pour plus d'informations sur la gestion du coffre de clés, consultez Prise en main d'Azure Key Vault.
- Restaurer le disque : veillez à déclencher le travail de restauration pour restaurer des disques pour une machine virtuelle chiffrée à l’aide des étapes PowerShell afin que ce travail génère un fichier JSON dans votre compte de stockage contenant des clés et des secrets pour la machine virtuelle chiffrée à restaurer.
Obtenir la clé et le secret à partir d’Azure Backup
Remarque
Une fois le disque restauré pour la machine virtuelle chiffrée, vérifiez que :
- $details sont renseignés avec les détails du travail de restauration de disque, comme indiqué dans les étapes powerShell de la section Restaurer les disques
- La machine virtuelle doit être créée à partir de disques restaurées uniquement après la restauration de la clé et du secret selon le coffre de clés.
Interrogez les propriétés des disques restaurés pour obtenir les détails du travail.
$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$encryptedBlobName = $properties["Encryption Info Blob Name"]
Définissez le contexte de stockage Azure et restaurez le fichier de configuration JSON contenant les détails de la clé et du secret pour la machine virtuelle chiffrée.
Set-AzCurrentStorageAccount -Name $storageaccountname -ResourceGroupName '<rg-name>'
$destination_path = 'C:\vmencryption_config.json'
Get-AzStorageBlobContent -Blob $encryptedBlobName -Container $containerName -Destination $destination_path
$encryptionObject = Get-Content -Path $destination_path | ConvertFrom-Json
Restaurer la clé
Une fois le fichier JSON généré dans le chemin de destination mentionné, générez le fichier blob de clé à partir du fichier JSON et utilisez-le avec le cmdlet de restauration de clé pour remettre la clé (KEK) dans le coffre de clés.
$keyDestination = 'C:\keyDetails.blob'
[io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyBackupData))
Restore-AzKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile $keyDestination
Restaurer le secret
Utilisez le fichier JSON généré pour obtenir le nom et la valeur du secret, puis transmettez-les à la cmdlet set secret afin de replacer le secret (clé de chiffrement BitLocker, ou BEK) dans le coffre-fort de clés. Utilisez ces cmdlets si votre machine virtuelle est chiffrée à l’aide de BEK et KEK.
Utilisez ces cmdlets si votre machine virtuelle Windows est chiffrée à l’aide de BEK et KEK.
$secretdata = $encryptionObject.OsDiskKeyAndSecretDetails.SecretData
$Secret = ConvertTo-SecureString -String $secretdata -AsPlainText -Force
$secretname = 'B3284AAA-DAAA-4AAA-B393-60CAA848AAAA'
$Tags = @{'DiskEncryptionKeyEncryptionAlgorithm' = 'RSA-OAEP';'DiskEncryptionKeyFileName' = 'B3284AAA-DAAA-4AAA-B393-60CAA848AAAA.BEK';'DiskEncryptionKeyEncryptionKeyURL' = $encryptionObject.OsDiskKeyAndSecretDetails.KeyUrl;'MachineName' = 'vm-name'}
Set-AzKeyVaultSecret -VaultName '<target_key_vault_name>' -Name $secretname -SecretValue $Secret -ContentType 'Wrapped BEK' -Tags $Tags
Utilisez ces cmdlets si votre machine virtuelle Linux est chiffrée à l’aide de BEK et KEK.
$secretdata = $encryptionObject.OsDiskKeyAndSecretDetails.SecretData
$Secret = ConvertTo-SecureString -String $secretdata -AsPlainText -Force
$secretname = 'B3284AAA-DAAA-4AAA-B393-60CAA848AAAA'
$Tags = @{'DiskEncryptionKeyEncryptionAlgorithm' = 'RSA-OAEP';'DiskEncryptionKeyFileName' = 'LinuxPassPhraseFileName';'DiskEncryptionKeyEncryptionKeyURL' = <Key_url_of_newly_restored_key>;'MachineName' = 'vm-name'}
Set-AzKeyVaultSecret -VaultName '<target_key_vault_name>' -Name $secretname -SecretValue $Secret -ContentType 'Wrapped BEK' -Tags $Tags
Utilisez le fichier JSON généré pour obtenir le nom et la valeur du secret, puis transmettez ces informations à l'applet de commande pour restaurer le secret (BEK) dans le Key Vault. Utilisez ces cmdlets si votre machine virtuelle est chiffrée à l’aide de BEK uniquement.
$secretDestination = 'C:\secret.blob'
[io.file]::WriteAllBytes($secretDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyVaultSecretBackupData))
Restore-AzKeyVaultSecret -VaultName '<target_key_vault_name>' -InputFile $secretDestination -Verbose
Remarque
- La valeur de $secretname peut être obtenue par référence à la sortie de $encryptionObject.OsDiskKeyAndSecretDetails.SecretUrl et en utilisant le texte après secrets/ Par exemple, l'URL du secret de sortie est
https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163et le nom du secret est B3284AAA-DAAA-4AAA-B393-60CAA848AAAA. - La valeur de la balise DiskEncryptionKeyFileName est identique au nom du secret.
Créer une machine virtuelle à partir du disque restauré
Si vous sauvegardez une machine virtuelle chiffrée à l’aide de sauvegarde de machine virtuelle Azure, les applets de commande PowerShell précédentes vous aident à restaurer la clé et le secret dans le coffre de clés. Après leur restauration, consultez l'article Gérer la sauvegarde et la restauration de machines virtuelles Azure à l'aide de PowerShell pour créer des machines virtuelles chiffrées à partir du disque, de la clé et du secret restaurés.
Approche héritée
L’approche précédente fonctionne pour tous les points de récupération. Toutefois, l’ancienne méthode d’obtention des informations relatives à la clé et au secret à partir du point de récupération est toujours valide pour les points de récupération antérieurs au 11 juillet 2017, sur les machines virtuelles chiffrées à l’aide de BEK et KEK. Une fois le travail de restauration du disque terminé pour la machine virtuelle chiffrée à l’aide des étapes PowerShell, assurez-vous que $rp est alimenté avec une valeur valide.
Restaurer la clé (approche héritée)
Utilisez les applets de commande suivantes pour obtenir des informations de clés (KEK) à partir du point de récupération et alimentez-les pour restaurer l’applet de commande clé pour la replacer dans le coffre de clés.
$rp1 = Get-AzRecoveryServicesBackupRecoveryPoint -RecoveryPointId $rp[0].RecoveryPointId -Item $backupItem -KeyFileDownloadLocation 'C:\Users\downloads'
Restore-AzureKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile 'C:\Users\downloads'
Restaurer le secret (approche héritée)
Utilisez les applets de commande suivantes pour obtenir des informations de secrets (KEK) à partir du point de récupération et alimentez-les pour restaurer l’applet de commande secrète pour la replacer dans le coffre de clés.
$secretname = 'B3284AAA-DAAA-4AAA-B393-60CAA848AAAA'
$secretdata = $rp1.KeyAndSecretDetails.SecretData
$Secret = ConvertTo-SecureString -String $secretdata -AsPlainText -Force
$Tags = @{'DiskEncryptionKeyEncryptionAlgorithm' = 'RSA-OAEP';'DiskEncryptionKeyFileName' = 'B3284AAA-DAAA-4AAA-B393-60CAA848AAAA.BEK';'DiskEncryptionKeyEncryptionKeyURL' = 'https://mykeyvault.vault.azure.net:443/keys/KeyName/84daaac999949999030bf99aaa5a9f9';'MachineName' = 'vm-name'}
Set-AzKeyVaultSecret -VaultName '<target_key_vault_name>' -Name $secretname -SecretValue $secret -Tags $Tags -SecretValue $Secret -ContentType 'Wrapped BEK'
Remarque
- La valeur de $secretname peut être obtenue par référence à la sortie de $rp1.KeyAndSecretDetails.SecretUrl et en utilisant le texte après secrets/ Par exemple, l'URL du secret de sortie est
https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163et le nom du secret est B3284AAA-DAAA-4AAA-B393-60CAA848AAAA - La valeur de la balise DiskEncryptionKeyFileName est identique au nom du secret.
- Vous pouvez obtenir la valeur de DiskEncryptionKeyEncryptionKeyURL à partir du coffre de clés après la restauration des clés et en utilisant la cmdlet Get-AzKeyVaultKey
Étapes suivantes
Après la restauration de la clé et du secret dans le coffre de clés, consultez l'article Gérer la sauvegarde et la restauration de machines virtuelles Azure à l'aide de PowerShell pour créer des machines virtuelles chiffrées à partir du disque, de la clé et du secret restaurés.