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íčů 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í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.