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
- Şifrelenmiş VM'leri yedekleme - Şifrelenmiş Azure VM'leri Azure Backup kullanılarak yedeklendi. Şifrelenmiş Azure VM'lerini yedekleme hakkında ayrıntılı bilgi için PowerShell kullanarak Azure VM'lerinin yedeklenmesini ve geri yüklenmesini yönetme makalesine bakın.
- Azure Key Vault yapılandırma – Anahtarların ve gizli dizilerin geri yüklenmesi gereken anahtar kasasının zaten mevcut olduğundan emin olun. Anahtar kasası yönetimi hakkında ayrıntılı bilgi için Azure Key Vault kullanmaya başlama makalesine bakın.
- Diski geri yükleme - PowerShell adımlarını kullanarak şifrelenmiş VM için diskleri geri yüklemek için geri yükleme işini tetiklediğinizden emin olun. Bunun nedeni, bu işin depolama hesabınızda geri yüklenecek şifrelenmiş VM'nin anahtarlarını ve gizli dizilerini içeren bir JSON dosyası oluşturmasıdır.
Azure Backup anahtarı ve gizli diziyi alma
Not
Şifrelenmiş VM için disk geri yüklendikten sonra şunların olduğundan emin olun:
- $details, Diskleri Geri Yükleme bölümündeki PowerShell adımlarında belirtildiği gibi geri yükleme disk işi ayrıntılarıyla doldurulur
- VM, yalnızca anahtar ve gizli dizi anahtar kasasına geri yüklendikten sonra geri yüklenen disklerden oluşturulmalıdır.
İş 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.