Obnovení klíče a tajného kódu Key Vault pro šifrované virtuální počítače pomocí Azure Backup
Tento článek popisuje použití služby Azure VM Backup k obnovení šifrovaných virtuálních počítačů Azure, pokud váš klíč a tajný klíč v trezoru klíčů neexistují. Tyto kroky můžete použít také v případě, že chcete zachovat samostatnou kopii klíče (šifrovací klíč klíče) a tajného klíče (šifrovací klíč nástroje BitLocker) pro obnovený virtuální počítač.
Poznámka
K interakci s Azure doporučujeme použít modul Azure Az PowerShell. Začněte tím, že si projdete téma Instalace Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.
Požadavky
- Zálohování šifrovaných virtuálních počítačů – Šifrované virtuální počítače Azure se zálohují pomocí Azure Backup. Podrobnosti o zálohování šifrovaných virtuálních počítačů Azure najdete v článku Správa zálohování a obnovení virtuálních počítačů Azure pomocí PowerShellu .
- Konfigurace Azure Key Vault – Ujistěte se, že trezor klíčů, do kterého je potřeba obnovit klíče a tajné klíče, už existuje. Podrobnosti o správě trezoru klíčů najdete v článku Začínáme s Azure Key Vault.
- Obnovení disku – Pomocí kroků PowerShellu se ujistěte, že jste aktivovali úlohu obnovení pro obnovení disků pro šifrovaný virtuální počítač. Důvodem je to, že tato úloha vygeneruje soubor JSON ve vašem účtu úložiště obsahující klíče a tajné kódy pro obnovení šifrovaného virtuálního počítače.
Získání klíče a tajného klíče z Azure Backup
Poznámka
Po obnovení disku pro šifrovaný virtuální počítač se ujistěte, že:
- $details se naplní podrobnostmi o úloze obnovení disku, jak je uvedeno v krocích PowerShellu v části Obnovení disků.
- Virtuální počítač by se měl vytvořit z obnovených disků až po obnovení klíče a tajného klíče do trezoru klíčů.
Zadejte dotaz na vlastnosti obnoveného disku pro podrobnosti úlohy.
$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$encryptedBlobName = $properties["Encryption Info Blob Name"]
Nastavte kontext úložiště Azure a obnovte konfigurační soubor JSON obsahující podrobnosti o klíči a tajném klíči pro šifrovaný virtuální počítač.
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
Obnovit klíč
Jakmile se soubor JSON vygeneruje v cílové cestě uvedené výše, vygenerujte z json soubor objektu blob klíče a podáte ho k obnovení rutiny klíče, aby se klíč (KEK) vložil zpátky do trezoru klíčů.
$keyDestination = 'C:\keyDetails.blob'
[io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyBackupData))
Restore-AzureKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile $keyDestination
Obnovení tajného kódu
Pomocí výše vygenerovaného souboru JSON získejte název a hodnotu tajného kódu a nastavte rutinu tajného kódu tak, aby se tajný kód (BEK) vrátil do trezoru klíčů. Tyto rutiny použijte, pokud je váš virtuální počítač šifrovaný pomocí BEK a KEK.
Tyto rutiny použijte, pokud je váš virtuální počítač s Windows šifrovaný pomocí BEK a 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
Tyto rutiny použijte, pokud je váš virtuální počítač s Linuxem šifrovaný pomocí BEK a 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
Pomocí výše vygenerovaného souboru JSON získejte název a hodnotu tajného kódu a nastavte rutinu tajného kódu tak, aby se tajný kód (BEK) vrátil do trezoru klíčů. Tyto rutiny použijte, pokud je váš virtuální počítač šifrovaný jenom pomocí 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
Poznámka
- Hodnotu pro $secretname můžete získat odkazem na výstup $encryptionObject.OsDiskKeyAndSecretDetails.SecretUrl a použitím textu za tajnými klíči/ Například výstupní adresa URL tajného kódu je
https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163
a název tajného klíče je B3284AAA-DAAA-4AAA-B393-60CAA848AAAAA. - Hodnota značky DiskEncryptionKeyFileName je stejná jako název tajného kódu.
Vytvoření virtuálního počítače z obnoveného disku
Pokud jste zálohovali šifrovaný virtuální počítač pomocí služby Azure VM Backup, výše uvedené rutiny PowerShellu vám pomůžou obnovit klíč a tajný kód zpět do trezoru klíčů. Po jejich obnovení si přečtěte článek Správa zálohování a obnovení virtuálních počítačů Azure pomocí PowerShellu k vytváření šifrovaných virtuálních počítačů z obnoveného disku, klíče a tajného klíče.
Starší verze přístupu
Výše uvedený přístup by fungoval pro všechny body obnovení. Starší přístup k získání klíčových a tajných informací z bodu obnovení by však byl platný pro body obnovení starší než 11. července 2017 pro virtuální počítače šifrované pomocí BEK a KEK. Po dokončení úlohy obnovení disku pro šifrovaný virtuální počítač pomocí kroků PowerShellu se ujistěte, že je $rp vyplněná platnou hodnotou.
Obnovení klíče (starší přístup)
Pomocí následujících rutin získáte informace o klíči (KEK) z bodu obnovení a odešlete je do rutiny obnovení klíče, která ho vrátí zpět do trezoru klíčů.
$rp1 = Get-AzRecoveryServicesBackupRecoveryPoint -RecoveryPointId $rp[0].RecoveryPointId -Item $backupItem -KeyFileDownloadLocation 'C:\Users\downloads'
Restore-AzureKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile 'C:\Users\downloads'
Obnovení tajného kódu (starší verze přístupu)
Pomocí následujících rutin získáte informace o tajném klíči (BEK) z bodu obnovení a odešlete je do informačního kanálu k nastavení rutiny tajného klíče, která je vrátí zpět do trezoru klíčů.
$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'
Poznámka
- Hodnotu $secretname lze získat odkazem na výstup $rp 1. KeyAndSecretDetails.SecretUrl a použití textu za tajnými kódy/ Například adresa URL výstupního tajného kódu je
https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163
a název tajného klíče je B3284AAA-DAAA-4AAA-B393-60CAA848AAAA. - Hodnota značky DiskEncryptionKeyFileName je stejná jako název tajného kódu.
- Hodnotu pro DiskEncryptionKeyEncryptionKeyURL je možné získat z trezoru klíčů po obnovení klíčů zpět a pomocí rutiny Get-AzureKeyVaultKey.
Další kroky
Po obnovení klíče a tajného klíče zpět do trezoru klíčů si přečtěte článek Správa zálohování a obnovení virtuálních počítačů Azure pomocí PowerShellu k vytváření šifrovaných virtuálních počítačů z obnoveného disku, klíče a tajného klíče.