Återställa nyckel och hemlighet för Key Vault för krypterade virtuella datorer med Azure Backup

I den här artikeln beskrivs hur du använder Säkerhetskopiering av virtuella Azure-datorer för att återställa krypterade virtuella Azure-datorer, om din nyckel och hemlighet inte finns i nyckelvalvet. De här stegen kan också användas om du vill behålla en separat kopia av nyckeln (nyckelkrypteringsnyckeln) och hemligheten (BitLocker-krypteringsnyckel) för den återställde virtuella datorn.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Förutsättningar

  • Säkerhetskopiering av krypterade virtuella datorer – Krypterade virtuella Azure-datorer har säkerhetskopierats med Hjälp av Azure Backup. Mer information om hur du säkerhetskopierar krypterade virtuella Azure-datorer finns i artikeln Hantera säkerhetskopiering och återställning av virtuella Azure-datorer med PowerShell .
  • Konfigurera Azure Key Vault – Se till att nyckelvalvet som nycklar och hemligheter måste återställas till redan finns. Mer information om hantering av nyckelvalv finns i artikeln Kom igång med Azure Key Vault .
  • Återställ disk – Se till att du har utlöst återställningsjobbet för att återställa diskar för krypterad virtuell dator med hjälp av PowerShell-steg. Det beror på att det här jobbet genererar en JSON-fil i ditt lagringskonto som innehåller nycklar och hemligheter för den krypterade virtuella datorn som ska återställas.

Hämta nyckel och hemlighet från Azure Backup

Kommentar

När disken har återställts för den krypterade virtuella datorn kontrollerar du att:

  • $details fylls i med information om återställning av diskjobb, som beskrivs i PowerShell-stegen i avsnittet Återställ diskar
  • Den virtuella datorn bör skapas från återställda diskar först när nyckeln och hemligheten har återställts till nyckelvalvet.

Fråga de återställde diskegenskaperna för jobbinformationen.

$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$encryptedBlobName = $properties["Encryption Info Blob Name"]

Ange Azure Storage-kontexten och återställ JSON-konfigurationsfilen som innehåller nyckel- och hemlighetsinformation för krypterad virtuell dator.

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

Återställningsnyckel

När JSON-filen har genererats i målsökvägen som nämns ovan genererar du nyckelblobfilen från JSON och matar in den för att återställa nyckel-cmdleten för att sätta tillbaka nyckeln (KEK) i nyckelvalvet.

$keyDestination = 'C:\keyDetails.blob'
[io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyBackupData))
Restore-AzKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile $keyDestination

Återställ hemlighet

Använd JSON-filen som genererades ovan för att hämta hemligt namn och värde och mata in den för att ange en hemlig cmdlet för att placera hemligheten (BEK) i nyckelvalvet igen. Använd dessa cmdletar om den virtuella datorn krypteras med BEK och KEK.

Använd dessa cmdletar om den virtuella Windows-datorn krypteras med BEK och 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

Använd dessa cmdletar om din virtuella Linux-dator krypteras med BEK och 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

Använd JSON-filen som genererades ovan för att hämta hemligt namn och värde och mata in den för att ange en hemlig cmdlet för att placera hemligheten (BEK) i nyckelvalvet igen. Använd dessa cmdletar om den virtuella datorn endast krypteras med 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

Kommentar

  • Värdet för $secretname kan hämtas genom att referera till utdata från $encryptionObject.OsDiskKeyAndSecretDetails.SecretUrl och använda text efter hemligheter/ Till exempel är https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163 utdatahemlighetens URL och det hemliga namnet B3284AAA-DAAA-4AAA-B393-60CAA848AAAAA
  • Värdet för taggen DiskEncryptionKeyFileName är samma som det hemliga namnet.

Skapa en virtuell dator från en återställd disk

Om du har säkerhetskopierat krypterad virtuell dator med Azure VM Backup hjälper PowerShell-cmdletarna som nämns ovan dig att återställa nyckeln och hemligheten tillbaka till nyckelvalvet. När du har återställt dem läser du artikeln Hantera säkerhetskopiering och återställning av virtuella Azure-datorer med hjälp av PowerShell för att skapa krypterade virtuella datorer från återställd disk, nyckel och hemlighet.

Äldre metod

Den metod som nämns ovan skulle fungera för alla återställningspunkter. Den äldre metoden för att hämta nyckel- och hemlig information från återställningspunkten skulle dock vara giltig för återställningspunkter som är äldre än den 11 juli 2017 för virtuella datorer som krypterats med BEK och KEK. När återställningsdiskjobbet har slutförts för krypterad virtuell dator med hjälp av PowerShell-steg kontrollerar du att $rp fylls i med ett giltigt värde.

Återställningsnyckel (äldre metod)

Använd följande cmdletar för att hämta nyckelinformation (KEK) från återställningspunkten och mata in den för att återställa nyckel-cmdleten för att placera tillbaka den i nyckelvalvet.

$rp1 = Get-AzRecoveryServicesBackupRecoveryPoint -RecoveryPointId $rp[0].RecoveryPointId -Item $backupItem -KeyFileDownloadLocation 'C:\Users\downloads'
Restore-AzureKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile 'C:\Users\downloads'

Återställa hemlighet (äldre metod)

Använd följande cmdletar för att hämta hemlig information (BEK) från återställningspunkten och mata in den för att ange en hemlig cmdlet för att placera tillbaka den i nyckelvalvet.

$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'

Kommentar

  • Värdet för $secretname kan erhållas genom att referera till utdata från $rp 1. KeyAndSecretDetails.SecretUrl och använder text efter hemligheter/ Till exempel är https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163 utdatahemlighetens URL och det hemliga namnet B3284AAA-DAAA-4AAA-B393-60CAA848AAAAA
  • Värdet för taggen DiskEncryptionKeyFileName är samma som hemligt namn.
  • Värdet för DiskEncryptionKeyEncryptionKeyURL kan hämtas från nyckelvalvet när du har återställt nycklarna och använt cmdleten Get-AzureKeyVaultKey

Nästa steg

När du har återställt nyckeln och hemligheten tillbaka till nyckelvalvet läser du artikeln Hantera säkerhetskopiering och återställning av virtuella Azure-datorer med PowerShell för att skapa krypterade virtuella datorer från återställd disk, nyckel och hemlighet.