Bagikan melalui


Memulihkan kunci dan rahasia Key Vault untuk VM terenkripsi menggunakan Azure Backup

Artikel ini membahas penggunaan Azure VM Backup untuk melakukan pemulihan komputer virtual Azure terenkripsi, jika kunci dan rahasia Anda tidak ada di brankas kunci. Langkah-langkah ini juga dapat digunakan jika Anda ingin menyimpan salinan terpisah dari kunci (Kunci Enkripsi Kunci) dan rahasia (Kunci Enkripsi BitLocker) untuk komputer virtual yang dipulihkan.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Untuk memulai, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Prasyarat

  • Cadangkan komputer virtual terenkripsi – Komputer virtual Azure yang terenkripsi telah dicadangkan menggunakan Azure Backup. Lihat artikel Mengelola pencadangan dan pemulihan komputer virtual Azure menggunakan PowerShell untuk mengetahui detail tentang cara mencadangkan komputer virtual Azure terenkripsi.
  • Konfigurasikan Azure Key Vault – Pastikan bahwa brankas kunci tempat tujuan pemulihan kunci dan rahasia sudah ada. Lihat artikel Mulai menggunakan Azure Key Vault untuk mengetahui detail tentang pengelolaan brankas kunci.
  • Pulihkan disk – Pastikan Anda sudah memicu pekerjaan pemulihan untuk memulihkan disk untuk komputer virtual terenkripsi menggunakan langkah-langkah PowerShell. Hal ini karena pekerjaan ini menghasilkan file JSON di akun penyimpanan Anda yang berisi kunci dan rahasia untuk komputer virtual terenkripsi yang akan dipulihkan.

Dapatkan kunci dan rahasia dari Azure Backup

Catatan

Setelah disk dipulihkan untuk komputer virtual terenkripsi, pastikan bahwa:

  • $details diisi dengan detail pekerjaan pemulihan disk, seperti yang disebutkan dalam langkah-langkah PowerShell di bagian Pulihkan Disk
  • Komputer virtual harus dibuat dari disk yang dipulihkan hanya setelah kunci dan rahasia dipulihkan ke brankas kunci.

Lakukan kueri properti disk yang dipulihkan untuk detail pekerjaan.

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

Atur konteks penyimpanan Azure dan pulihkan file konfigurasi JSON yang berisi detail kunci dan rahasia untuk komputer virtual terenkripsi.

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

Pulihkan kunci

Setelah file JSON dibuat di jalur tujuan yang disebutkan di atas, buat file blob kunci dari JSON dan umpankan ke cmdlet pemulihan kunci untuk mengembalikan kunci (KEK) ke brankas kunci.

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

Pulihkan rahasia

Gunakan file JSON yang dihasilkan di atas untuk mendapatkan nama dan nilai rahasia, lalu umpankan ke cmdlet rahasia yang ditetapkan untuk mengembalikan rahasia (BEK) ke brankas kunci. Gunakan cmdlet ini jika komputer virtual Anda dienkripsi menggunakan BEK dan KEK.

Gunakan cmdlet ini jika komputer virtual Windows Anda dienkripsi menggunakan BEK dan 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

Gunakan cmdlet ini jika komputer virtual Linux Anda dienkripsi menggunakan BEK dan 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

Gunakan file JSON yang dihasilkan di atas untuk mendapatkan nama dan nilai rahasia, lalu umpankan ke cmdlet rahasia yang ditetapkan untuk mengembalikan rahasia (BEK) ke brankas kunci. Gunakan cmdlet ini jika komputer virtual Anda dienkripsi menggunakan BEK saja.

$secretDestination = 'C:\secret.blob'
[io.file]::WriteAllBytes($secretDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyVaultSecretBackupData))
Restore-AzKeyVaultSecret -VaultName '<target_key_vault_name>' -InputFile $secretDestination -Verbose

Catatan

  • Nilai untuk $secretname dapat diperoleh dengan merujuk kepada output $encryptionObject.OsDiskKeyAndSecretDetails.SecretUrl dan menggunakan teks setelah rahasia/ Misalnya, URL rahasia output adalah dan https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163 nama rahasia adalah B3284AAA-DAAA-4AAA-B393-60CAA848AAAA
  • Nilai tag DiskEncryptionKeyFileName sama dengan nama rahasia.

Buat komputer virtual dari disk yang dipulihkan

Jika Anda telah mencadangkan komputer virtual terenkripsi menggunakan Azure VM Backup, cmdlet PowerShell yang disebutkan di atas akan membantu Anda memulihkan kunci dan rahasia kembali ke brankas kunci. Setelah memulihkannya, lihat artikel Mengelola pencadangan dan pemulihan komputer virtual Azure menggunakan PowerShell untuk membuat komputer virtual terenkripsi dari disk, kunci, dan rahasia yang dipulihkan.

Pendekatan warisan

Pendekatan yang disebutkan di atas akan bekerja untuk semua titik pemulihan. Namun, pendekatan lama untuk mendapatkan informasi kunci dan rahasia dari titik pemulihan akan berlaku untuk titik pemulihan yang lebih lama daripada 11 Juli 2017 untuk komputer virtual yang dienkripsi menggunakan BEK dan KEK. Setelah pekerjaan pemulihan disk selesai untuk komputer virtual terenkripsi menggunakan langkah-langkah PowerShell, pastikan $rp diisi dengan nilai yang valid.

Pulihkan kunci (pendekatan warisan)

Gunakan cmdlet berikut untuk mendapatkan informasi kunci (KEK) dari titik pemulihan dan umpankan ke cmdlet pemulihan kunci untuk mengembalikannya ke dalam brankas kunci.

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

Pulihkan rahasia (pendekatan warisan)

Gunakan cmdlet berikut untuk mendapatkan informasi rahasia (BEK) dari titik pemulihan dan umpankan ke cmdlet rahasia yang ditetapkan untuk mengembalikannya ke dalam brankas kunci.

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

Catatan

  • Nilai untuk $secretname dapat diperoleh dengan mengacu kepada output $rp1.KeyAndSecretDetails.SecretUrl dan menggunakan teks setelah rahasia/ Misalnya, URL rahasia output adalah https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163 dan nama rahasianya adalah B3284AAA-DAAA-4AAA-B393-60CAA848AAAA
  • Nilai tag DiskEncryptionKeyFileName sama dengan nama rahasia.
  • Nilai untuk DiskEncryptionKeyEncryptionKeyURL dapat diperoleh dari brankas kunci setelah memulihkan kunci kembali dan menggunakan cmdlet Get-AzKeyVaultKey

Langkah berikutnya

Setelah memulihkan kunci dan rahasia kembali ke brankas kunci, lihat artikel Mengelola pencadangan dan pemulihan komputer virtual Azure menggunakan PowerShell untuk membuat komputer virtual terenkripsi dari disk, kunci, dan rahasia yang dipulihkan.