Key Vault-sleutel en -geheim voor versleutelde virtuele machines terugzetten met Azure Backup
In dit artikel wordt beschreven hoe u Met Azure VM Backup versleutelde Azure-VM's kunt herstellen als uw sleutel en geheim niet bestaan in de sleutelkluis. Deze stappen kunnen ook worden gebruikt als u een afzonderlijke kopie van de sleutel (Sleutelversleutelingssleutel) en geheim (BitLocker-versleutelingssleutel) wilt onderhouden voor de herstelde VM.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Vereisten
- Back-up maken van versleutelde VM's : er is een back-up gemaakt van versleutelde Azure-VM's met behulp van Azure Backup. Raadpleeg het artikel Back-up en herstel van Virtuele Azure-machines beheren met behulp van PowerShell voor meer informatie over het maken van back-ups van versleutelde Azure-VM's.
- Azure Key Vault configureren: zorg ervoor dat de sleutelkluis waarop sleutels en geheimen moeten worden hersteld, al aanwezig is. Raadpleeg het artikel Aan de slag met Azure Key Vault voor meer informatie over key vault-beheer.
- Schijf herstellen: zorg ervoor dat u de hersteltaak hebt geactiveerd voor het herstellen van schijven voor versleutelde VM met behulp van PowerShell-stappen. Dit komt doordat met deze taak een JSON-bestand wordt gegenereerd in uw opslagaccount met sleutels en geheimen, zodat de versleutelde VIRTUELE machine kan worden hersteld.
Sleutel en geheim ophalen uit Azure Backup
Notitie
Zodra de schijf voor de versleutelde VM is hersteld, controleert u of:
- $details wordt gevuld met details van de herstelschijftaak, zoals vermeld in powerShell-stappen in de sectie Schijven herstellen
- DE VIRTUELE machine moet alleen worden gemaakt vanaf herstelde schijven nadat de sleutel en het geheim zijn hersteld naar de sleutelkluis.
Voer een query uit op de herstelde schijfeigenschappen voor de taakdetails.
$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$encryptedBlobName = $properties["Encryption Info Blob Name"]
Stel de Azure-opslagcontext in en herstel het JSON-configuratiebestand met sleutel- en geheime gegevens voor versleutelde VM's.
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
Sleutel herstellen
Zodra het JSON-bestand is gegenereerd in het hierboven genoemde doelpad, genereert u een sleutel-blobbestand van de JSON en voert u het in om de sleutel-cmdlet te herstellen om de sleutel (KEK) weer in de sleutelkluis te plaatsen.
$keyDestination = 'C:\keyDetails.blob'
[io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyBackupData))
Restore-AzKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile $keyDestination
Geheim herstellen
Gebruik het hierboven gegenereerde JSON-bestand om de geheime naam en waarde op te halen en deze in te voeren om de geheime cmdlet in te stellen om het geheim (BEK) weer in de sleutelkluis te plaatsen. Gebruik deze cmdlets als uw VIRTUELE machine is versleuteld met BEK en KEK.
Gebruik deze cmdlets als uw Windows-VM is versleuteld met BEK en 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
Gebruik deze cmdlets als uw Linux-VM is versleuteld met BEK en 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
Gebruik het hierboven gegenereerde JSON-bestand om de geheime naam en waarde op te halen en deze in te voeren om de geheime cmdlet in te stellen om het geheim (BEK) weer in de sleutelkluis te plaatsen. Gebruik deze cmdlets als uw VIRTUELE machine alleen is versleuteld met BEK .
$secretDestination = 'C:\secret.blob'
[io.file]::WriteAllBytes($secretDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyVaultSecretBackupData))
Restore-AzKeyVaultSecret -VaultName '<target_key_vault_name>' -InputFile $secretDestination -Verbose
Notitie
- De waarde voor $secretname kan worden verkregen door te verwijzen naar de uitvoer van $encryptionObject.OsDiskKeyAndSecretDetails.SecretUrl en het gebruik van tekst na geheimen/ De uitvoergeheim-URL is
https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163
bijvoorbeeld en de geheime naam is B3284AAA-DAAA-4AAA-B393-60CAA848AAAA - De waarde van de tag DiskEncryptionKeyFileName is hetzelfde als de geheime naam.
Virtuele machine maken van herstelde schijf
Als u een back-up hebt gemaakt van een versleutelde VIRTUELE machine met behulp van Azure VM Backup, helpen de PowerShell-cmdlets die hierboven worden genoemd, u de sleutel en het geheim terug te zetten naar de sleutelkluis. Nadat u ze hebt hersteld, raadpleegt u het artikel Back-up en herstel van Azure-VM's beheren met behulp van PowerShell om versleutelde VM's te maken op basis van herstelde schijf, sleutel en geheim.
Verouderde benadering
De hierboven genoemde benadering werkt voor alle herstelpunten. De oudere methode voor het ophalen van sleutel- en geheime informatie vanaf het herstelpunt is echter geldig voor herstelpunten ouder dan 11 juli 2017 voor virtuele machines die zijn versleuteld met BEK en KEK. Zodra de schijftaak is hersteld voor versleutelde VM met behulp van PowerShell-stappen, moet u ervoor zorgen dat $rp wordt gevuld met een geldige waarde.
Herstelsleutel (verouderde benadering)
Gebruik de volgende cmdlets om sleutelgegevens (KEK) op te halen uit het herstelpunt en voer deze in om de sleutel-cmdlet terug te zetten in de sleutelkluis.
$rp1 = Get-AzRecoveryServicesBackupRecoveryPoint -RecoveryPointId $rp[0].RecoveryPointId -Item $backupItem -KeyFileDownloadLocation 'C:\Users\downloads'
Restore-AzureKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile 'C:\Users\downloads'
Geheim herstellen (verouderde benadering)
Gebruik de volgende cmdlets om geheime informatie (BEK) op te halen van het herstelpunt en voer deze in om de geheime cmdlet in te stellen om deze terug te zetten in de sleutelkluis.
$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'
Notitie
- De waarde voor $secretname kan worden verkregen door te verwijzen naar de uitvoer van $rp 1. KeyAndSecretDetails.SecretUrl en tekst gebruiken na geheimen/ De url van het uitvoergeheim is
https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163
bijvoorbeeld en de geheime naam is B3284AAA-DAAA-4AAA-B393-60CAA848AAAA - De waarde van de tag DiskEncryptionKeyFileName is hetzelfde als de geheime naam.
- Waarde voor DiskEncryptionKeyEncryptionKeyURL kan worden verkregen uit de sleutelkluis nadat u de sleutels terug hebt hersteld en de cmdlet Get-AzureKeyVaultKey hebt gebruikt
Volgende stappen
Nadat u de sleutel en het geheim terug hebt hersteld naar de sleutelkluis, raadpleegt u het artikel Back-up en herstel van Azure-VM's beheren met behulp van PowerShell om versleutelde VM's te maken vanaf herstelde schijf, sleutel en geheim.