Azure Backup kullanarak şifreli VM’ler için Key Vault anahtarını ve parolasını geri yükleme

Bu makalede, anahtarınız ve gizli anahtarınız anahtar kasasında yoksa şifrelenmiş Azure VM'lerini geri yüklemek için Azure VM Backup'ı kullanma hakkında bilgi verilmektedir. Bu adımlar, geri yüklenen VM için anahtarın (Anahtar Şifreleme Anahtarı) ve gizli anahtarın (BitLocker Şifreleme Anahtarı) ayrı bir kopyasını korumak istiyorsanız da kullanılabilir.

Not

Azure ile etkileşime geçmek için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Önkoşullar

Azure Backup anahtarı ve gizli diziyi alma

Not

Şifrelenmiş VM için disk geri yüklendikten sonra şunların olduğundan emin olun:

İş ayrıntıları için geri yüklenen disk özelliklerini sorgula.

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

Şifrelenmiş VM için anahtar ve gizli dizi ayrıntılarını içeren Azure depolama bağlamını ayarlayın ve JSON yapılandırma dosyasını geri yükleyin.

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

Geri yükleme anahtarı

JSON dosyası yukarıda belirtilen hedef yolda oluşturulduktan sonra, JSON'dan anahtar blob dosyası oluşturun ve anahtarı (KEK) anahtar kasasına geri yerleştirmek üzere anahtar cmdlet'ini geri yüklemek için bu dosyayı besleyin.

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

Gizli diziyi geri yükleme

Gizli dizi adını ve değerini almak ve gizli diziyi (BEK) anahtar kasasına geri koymak üzere gizli dizi cmdlet'ini ayarlamak için bu dosyayı beslemek için yukarıda oluşturulan JSON dosyasını kullanın. VM'niz BEK ve KEK kullanılarak şifreleniyorsa bu cmdlet'leri kullanın.

Windows VM'niz BEK ve KEK kullanılarak şifreleniyorsa bu cmdlet'leri kullanın.

$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

Linux VM'niz BEK ve KEK kullanılarak şifreleniyorsa bu cmdlet'leri kullanın.

$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

Gizli dizi adını ve değerini almak ve gizli diziyi (BEK) anahtar kasasına geri koymak üzere gizli dizi cmdlet'ini ayarlamak için bu dosyayı beslemek için yukarıda oluşturulan JSON dosyasını kullanın. VM'niz yalnızca BEK kullanılarak şifreleniyorsa bu cmdlet'leri kullanın.

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

Not

  • $secretname değeri, $encryptionObject.OsDiskKeyAndSecretDetails.SecretUrl çıktısına başvurularak ve gizli dizilerden sonra metin kullanılarak elde edilebilir/ Örneğin, çıkış gizli dizisi URL'si https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163 B3284AAA-DAAA-4AAA-B393-60CAA848AAAA
  • DiskEncryptionKeyFileName etiketinin değeri gizli dizi adıyla aynıdır.

Geri yüklenen diskten sanal makine oluşturma

Azure VM Yedekleme'yi kullanarak şifrelenmiş VM'yi yedeklediyseniz, yukarıda belirtilen PowerShell cmdlet'leri anahtarı ve gizli diziyi anahtar kasasına geri yüklemenize yardımcı olur. Bunları geri yükledikten sonra, geri yüklenen diskten, anahtardan ve gizli diziden şifrelenmiş VM'ler oluşturmak için PowerShell kullanarak Azure VM'lerinin yedeklenmesini ve geri yüklenmesini yönetme makalesine bakın.

Eski yaklaşım

Yukarıda belirtilen yaklaşım tüm kurtarma noktaları için işe yarayabilecek. Ancak kurtarma noktasından anahtar ve gizli bilgi almayla ilgili eski yaklaşım, BEK ve KEK kullanılarak şifrelenen VM'ler için 11 Temmuz 2017'den eski kurtarma noktaları için geçerli olacaktır. PowerShell adımlarını kullanarak şifrelenmiş VM için geri yükleme disk işi tamamlandıktan sonra, $rp geçerli bir değerle dolduruldığından emin olun.

Anahtarı geri yükleme (eski yaklaşım)

Kurtarma noktasından anahtar (KEK) bilgilerini almak ve anahtar cmdlet'ini geri yükleyip anahtar kasasına geri yüklemek için beslemek için aşağıdaki cmdlet'leri kullanın.

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

Gizli diziyi geri yükleme (eski yaklaşım)

Kurtarma noktasından gizli dizi (BEK) bilgilerini almak için aşağıdaki cmdlet'leri kullanın ve anahtar kasasına geri koymak üzere gizli dizi cmdlet'ini ayarlamak için besleyin.

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

Not

  • $secretname değeri, $rp 1 çıkışına başvurularak elde edilebilir. KeyAndSecretDetails.SecretUrl ve gizli dizilerden sonra metin kullanma/ Örneğin, çıkış gizli dizisi URL'si B3284AAA-DAAA-4AAA-B393-60CAA848AAAA https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163
  • DiskEncryptionKeyFileName etiketinin değeri gizli dizi adıyla aynıdır.
  • DiskEncryptionKeyEncryptionKeyURL değeri, anahtarları geri yükledikten ve Get-AzureKeyVaultKey cmdlet'i kullanılarak anahtar kasasından alınabilir

Sonraki adımlar

Anahtar ve gizli diziyi anahtar kasasına geri yükledikten sonra geri yüklenen diskten, anahtardan ve gizli diziden şifrelenmiş VM'ler oluşturmak için PowerShell kullanarak Azure VM'lerinin yedeklenmesini ve geri yüklenmesini yönetme makalesine bakın.