استعادة مفتاح قبو المفاتيح والسرية للأجهزة الظاهرية المشفرة باستخدام النسخ الاحتياطي من Azure
تتحدث هذه المقالة عن استخدام النسخ الاحتياطي للأجهزة الظاهرية من Azure لإجراء استعادة لأجهزة Azure الظاهرية المشفرة، إذا لم يكونا مفتاحك والسرية موجودين في قبو المفاتيح. يمكن أيضا استخدام هذه الخطوات إذا كنت ترغب في الاحتفاظ بنسخة منفصلة من المفتاح (مفتاح تشفير المفتاح) والسرية (مفتاح التشفير BitLocker) للجهاز الظاهري المستعاد.
إشعار
نوصي باستخدام الوحدة النمطية Azure Az PowerShell للتفاعل مع Azure. للبدء، راجع تثبيت Azure PowerShell. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.
المتطلبات الأساسية
- النسخ الاحتياطي للأجهزة الظاهرية المشفرة - تم نسخ أجهزة Azure الظاهرية المشفرة احتياطيا باستخدام النسخ الاحتياطي من Azure. راجع المقالة إدارة النسخ الاحتياطي واستعادة الأجهزة الظاهرية من Azure باستخدام PowerShell للحصول على تفاصيل حول كيفية إجراء نسخ احتياطي للأجهزة الظاهرية من Azure المشفرة.
- تكوين قبو مفاتيح Azure - تأكد من وجود قبو المفاتيح الذي تحتاج المفاتيح والأسرار إلى الإستعادة إليه بالفعل. راجع المقالة بدء الاستخدام مع قبو مفاتيح Azure للحصول على تفاصيل حول إدارة قبو المفاتيح.
- استعادة القرص - تأكد من تشغيلك مهمة الإستعادة لإستعادة الأقراص للجهاز الظاهري المشفر باستخدام خطوات PowerShell. وذلك لأن هذه المهمة تُنشئ ملف JSON في حساب تخزينك الذي يحتوي على مفاتيح وأسرار الجهاز الظاهري المشفر لكي تتم استعادته.
الحصول على المفتاح والسرية للنسخ الاحتياطي من Azure
إشعار
بمجرد استعادة القرص للجهاز الظاهري المشفر، تأكد من:
- أنه يتم تعبئة $details مع استعادة تفاصيل مهمة القرص، كما هو مذكور في خطوات PowerShell في قسم استعادة الأقراص
- ينبغي إنشاء الجهاز الظاهري من الأقراص المستعادة فقط بعد استعادة المفتاح والسرية إلى قبو المفتاح.
الاستعلام عن خصائص القرص المستعادة للحصول على تفاصيل المهمة.
$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$encryptedBlobName = $properties["Encryption Info Blob Name"]
تعيين سياق تخزين Azure واستعادة ملف تكوين JSON الذي يحتوي على مفتاح وتفاصيل سرية للجهاز الظاهري المشفر.
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
مفتاح الاستعادة
بمجرد إنشاء ملف JSON في مسار الوجهة المذكورة أعلاه، أنشئ ملف الفقاعة للمفتاح من JSON وغذيه لاستعادة مفتاح cmdlet لوضع المفتاح (KEK) مرة أخرى في قبو المفتاح.
$keyDestination = 'C:\keyDetails.blob'
[io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskKeyAndSecretDetails.KeyBackupData))
Restore-AzKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile $keyDestination
استعادة السرية
استخدام ملف JSON الذي تم توليده أعلاه للحصول على اسم سري والقيمة وتغذيته لتعيين سرية cmdlet لوضع السرية (BEK) مرة أخرى في قبو المفتاح. استخدم تلك cmdlets إذا تم تشفير جهازك الظاهري باستخدام BEK وKEK.
استخدم تلك cmdlets إذا تم تشفير جهازك الظاهري من Windows باستخدام BEK و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
استخدم تلك cmdlets إذا تم تشفير جهازك الظاهري من Linux باستخدام BEK و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
استخدام ملف JSON الذي تم توليده أعلاه للحصول على اسم سري والقيمة وتغذيته لتعيين سرية cmdlet لوضع السرية (BEK) مرة أخرى في قبو المفتاح. استخدم تلك cmdlets إذا تم تشفير جهازك الظاهري باستخدام 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
إشعار
- يمكن الحصول على قيمة $secretname عن طريق الإشارة إلى إخراج $encryptionObject.OsDiskKeyAndSecretDetails.SecretUrl واستخدام النص بعد الأسرار/ على سبيل المثال، عنوان URL السري للإخراج
https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163
هو والاسم السري هو B3284AAA-DAAA-4AAA-B393-60CAA848AAAAAA - قيمة العلامة DiskEncryptionKeyFileName هي نفس الاسم السري.
إنشاء جهاز ظاهري من القرص المستعاد
إذا كنت قد قمت بعمل نسخة احتياطية من الجهاز الظاهري المشفر باستخدام النسخ الاحتياطي للأجهزة الظاهرية من Azure، فإن PowerShell cmdlets المذكورة أعلاه تساعدك على استعادة المفتاح والسرية مرة أخرى إلى قبو المفتاح. بعد استعادتها، راجع المقالة إدارة النسخ الاحتياطي واستعادة أجهزة Azure الظاهرية باستخدام PowerShell لإنشاء الأجهزة الظاهرية المشفرة من القرص المستعاد والمفتاح والسرية.
النهج القديم
ومن شأن النهج المذكور أعلاه أن يعمل لصالح جميع نقاط الاسترداد. ومع ذلك، فإن النهج القديم للحصول على معلومات أساسية وسرية من نقطة الاسترداد، سيكون صالحا لنقاط الاسترداد الأقدم من 11 يوليو 2017 للأجهزة الظاهرية المشفرة باستخدام BEK وKEK. بمجرد اكتمال مهمة استعادة القرص للجهاز الظاهري المشفر باستخدام خطوات PowerShell، تأكد من أن يتم تعبئة $rp بقيمة صالحة.
استعادة المفتاح (نهج قديم)
استخدم cmdlets التالية للحصول على معلومات المفتاح (KEK) من نقطة الاسترداد وتغذيتها لاستعادة مفتاح cmdlet لوضعه مرة أخرى في قبو المفتاح.
$rp1 = Get-AzRecoveryServicesBackupRecoveryPoint -RecoveryPointId $rp[0].RecoveryPointId -Item $backupItem -KeyFileDownloadLocation 'C:\Users\downloads'
Restore-AzureKeyVaultKey -VaultName '<target_key_vault_name>' -InputFile 'C:\Users\downloads'
استعادة السرية (نهج قديم)
استخدم cmdlets التالية للحصول على معلومات سرية (BEK) من نقطة الاسترداد وتغذيتها لتعيين سرية cmdlet لوضعها مرة أخرى في قبو المفتاح.
$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'
إشعار
- يمكن الحصول على قيمة $secretname عن طريق الإشارة إلى إخراج $rp1.KeyAndSecretDetails.SecretUrl واستخدام النص بعد الأسرار/ على سبيل المثال، إخراج عنوان URL السري
https://keyvaultname.vault.azure.net/secrets/B3284AAA-DAAA-4AAA-B393-60CAA848AAAA/xx000000xx0849999f3xx30000003163
هو والاسم السري هو B3284AAA-DAAA-4AAA-B393-60CAA848AAAA - قيمة العلامة DiskEncryptionKeyFileName هي نفس الاسم السري.
- يمكن الحصول على قيمة DiskEncryptionKeyEncryptionKeyURL من مخزن المفاتيح بعد استعادة المفاتيح مرة أخرى واستخدام Get-AzKeyVaultKey cmdlet
الخطوات التالية
بعد استعادة المفتاح والسرية مرة أخرى إلى قبو المفاتيح، راجع المقالة إدارة النسخ الاحتياطي واستعادة أجهزة Azure الظاهرية باستخدام PowerShell لإنشاء الأجهزة الظاهرية المشفرة من القرص المستعاد والمفتاح والسرية.