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

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

Anteckning

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. 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äkerhetskopiera 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

Anteckning

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älla diskar
  • Den virtuella datorn ska endast skapas från återställda diskar 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äll nyckel

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

$keyDestination = 'C:\keyDetails.blob'
[io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyBackupData))
Restore-AzureKeyVaultKey -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) tillbaka i nyckelvalvet. Använd dessa cmdletar om den virtuella datorn är krypterad med BEK och KEK.

Använd dessa cmdletar om din virtuella Windows-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' = '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) tillbaka i nyckelvalvet. Använd dessa cmdletar om din virtuella dator 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

Anteckning

  • 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 är B3284AAA-DAAA-4AAA-B393-60CAA848AAAA
  • 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 kan du läsa 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.

Äldre metod

Metoden som nämns ovan fungerar 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ällningsjobbet har slutförts för krypterad virtuell dator med hjälp av PowerShell-steg kontrollerar du att $rp är ifyllt 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'

Anteckning

  • Värdet för $secretname kan erhållas genom att referera till utdata från $rp 1. KeyAndSecretDetails.SecretUrl och text efter hemligheter/ Till exempel är https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163 utdatahemlighetens URL och det hemliga namnet är B3284AAA-DAAA-4AAA-B393-60CAA848AAAA
  • 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 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.