Sdílet prostřednictvím


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íčů neexistuje. Tyto kroky se dají použít také v případě, že chcete zachovat samostatnou kopii klíče (šifrovací klíč klíče) a tajný klíč (šifrovací klíč nástroje BitLocker) pro obnovený virtuální počítač.

Poznámka:

Při práci s Azure doporučujeme používat modul Azure Az PowerShellu. 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ískání klíče a tajného klíče ze služby Azure Backup

Poznámka:

Po obnovení disku pro šifrovaný virtuální počítač se ujistěte, že:

  • $details se vyplní 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 klíče a tajného klíče 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

Obnovení klíče

Jakmile se soubor JSON vygeneruje v cílové cestě uvedené výše, vygenerujte ze souboru JSON soubor objektu blob klíče a vložte ho do trezoru klíčů.

$keyDestination = 'C:\keyDetails.blob'
[io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyBackupData))
Restore-AzKeyVaultKey -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 vložte ho do trezoru klíčů 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 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 vložte ho do trezoru klíčů 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 lze získat odkazem na výstup $encryptionObject.OsDiskKeyAndSecretDetails.SecretUrl a použití textu za tajnými kódy/ 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 kódu je B3284AAA-DAAA-4AAA-B393-60CAA848AAAA
  • 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 obnovení si přečtěte článek Správa zálohování a obnovení virtuálních počítačů Azure pomocí PowerShellu k vytvoření šifrovaných virtuálních počítačů z obnoveného disku, klíče a tajného kódu.

Starší přístup

Výše uvedený přístup by fungoval pro všechny body obnovení. Starší přístup k získání klíčů 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 $rp je naplněna platnou hodnotou.

Obnovení klíče (starší verze přístupu)

Pomocí následujících rutin získáte informace o klíči (KEK) z bodu obnovení a odešlete je k obnovení rutiny klíče, aby se vrátila 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ých klíčích (BEK) z bodu obnovení a odešlete je k nastavení tajné rutiny pro jejich vrácení 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/ Výstupní adresa URL tajného kódu je a název tajného kódu je https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163 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 a vytvořte šifrované virtuální počítače z obnoveného disku, klíče a tajného klíče.