إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
هام
من المقرر إيقاف تشفير الأقراص Azure في 15 سبتمبر 2028. حتى ذلك التاريخ، يمكنك الاستمرار في استخدام تشفير الأقراص Azure دون انقطاع. في 15 سبتمبر 2028، ستستمر أحمال العمل المفعلة ب ADE، لكن الأقراص المشفرة ستفشل في فتح التشغيل بعد إعادة تشغيل الجهاز الافتراضي، مما يؤدي إلى تعطيل الخدمة.
استخدم التشفير في المضيف للأجهزة الافتراضية الجديدة، أو فكر في أحجام المحركات الافتراضية السرية مع تشفير قرص نظام التشغيل لأحمال عمل الحوسبة السرية. يجب على جميع الأجهزة الافتراضية المفعلة بدعم ADE (بما في ذلك النسخ الاحتياطية) الانتقال إلى التشفير عند المضيف قبل تاريخ التقاعد لتجنب تعطيل الخدمة. راجع Migrationate from تشفير قرص Azure إلى Encryption في المضيف لمزيد من التفاصيل.
ينطبق على: ✔️ أجهزة Windows الظاهرية
توفر هذه المقالة نموذج من البرامج النصية لإعداد VHDs المشفرة مسبقا والمهام الأخرى.
إشعار
تشير جميع البرامج النصية إلى أحدث إصدار غير AAD (دليل Azure النشط) من ADE (تشفير قرص Azure)، باستثناء ما تم ذكره.
عينة برامج PowerShell النصية لتشفير قرص Azure
- إدراج جميع الأجهزة الظاهرية المشفرة في اشتراكك
يمكنك العثور على جميع الأجهزة الظاهرية المشفرة بواسطة ADE وإصدار الملحق، في جميع مجموعات الموارد الموجودة في اشتراك، باستخدام البرنامج النصيFind_1passAdeVersion_VM.ps1 PowerShell.
بدلا من ذلك، تعرض أوامر cmdlets هذه جميع الأجهزة الظاهرية المشفرة بواسطة ADE (ولكن ليس إصدار الملحق):
$osVolEncrypted = {(Get-AzVMDiskEncryptionStatus -ResourceGroupName $_.ResourceGroupName -VMName $_.Name).OsVolumeEncrypted}
$dataVolEncrypted= {(Get-AzVMDiskEncryptionStatus -ResourceGroupName $_.ResourceGroupName -VMName $_.Name).DataVolumesEncrypted}
Get-AzVm | Format-Table @{Label="MachineName"; Expression={$_.Name}}, @{Label="OsVolumeEncrypted"; Expression=$osVolEncrypted}, @{Label="DataVolumesEncrypted"; Expression=$dataVolEncrypted}
إدراج جميع مثيلات VMSS المشفرة في اشتراكك
يمكنك العثور على جميع مثيلات مجموعات مقياس الجهاز الظاهري المشفرة بواسطة ADE وإصدار الملحق، في جميع مجموعات الموارد الموجودة في اشتراك، باستخدام البرنامج النصيFind_1passAdeVersion_VMSS.ps1 PowerShell.
سرد جميع بيانات سرية تشفير القرص المستخدمة لتشفير الأجهزة الظاهرية في مخزن مفاتيح
Get-AzKeyVaultSecret -VaultName $KeyVaultName | where {$_.Tags.ContainsKey('DiskEncryptionKeyFileName')} | format-table @{Label="MachineName"; Expression={$_.Tags['MachineName']}}, @{Label="VolumeLetter"; Expression={$_.Tags['VolumeLetter']}}, @{Label="EncryptionKeyURL"; Expression={$_.Id}}
استخدام البرنامج النصي PowerShell للمتطلبات الأساسية لتشفير قرص Azure
إذا كنت معتادًا بالفعل على المتطلبات الأساسية لتشفير قرص Azure، فيمكنك استخدام البرنامج النصي PowerShell المتطلبات الأساسية لتشفير قرص Azure. للحصول على مثال على استخدام هذا البرنامج النصي PowerShell، راجع تشفير التشغيل السريع للجهاز الظاهري. يمكنك إزالة التعليقات من قسم من البرنامج النصي، بدءًا من السطر 211، لتشفير جميع الأقراص للأجهزة الظاهرية الموجودة في مجموعة موارد موجودة.
يوضح الجدول التالي المعلمات التي يمكنك استخدامها في البرنامج النصي PowerShell:
| المعلمة | الوصف | إلزامي؟ |
|---|---|---|
| $resourceGroupName | اسم مجموعة الموارد التي ينتمي إليها مخزن المفاتيح. ينشئ البرنامج النصي مجموعة موارد جديدة بهذا الاسم إذا لم تكن موجودة. | صواب |
| $keyVaultName | اسم مخزن المفاتيح الذي يتم وضع مفاتيح التشفير فيه. ينشئ البرنامج النصي مخزنا جديدا بهذا الاسم إذا لم يكن موجودا. | صواب |
| $location | موقع مخزن المفاتيح. تأكد من أن مخزن المفاتيح والأجهزة الظاهرية المراد تشفيرها في نفس الموقع. احصل على قائمة الموقع باستخدام Get-AzLocation. |
صواب |
| subscriptionId | معرف اشتراك Azure المراد استخدامه. احصل على معرف الاشتراك الخاص بك باستخدام Get-AzSubscription. |
صواب |
| $aadAppName | اسم تطبيق Microsoft Entra الذي يكتب البيانات السرية إلى Key Vault. ينشئ البرنامج النصي تطبيقا جديدا بهذا الاسم إذا لم يكن موجودا. إذا كان هذا التطبيق موجودا بالفعل، فمرر المعلمة aadClientSecret إلى البرنامج النصي. | خطأ |
| $aadClientSecret | سر العميل لتطبيق Microsoft Entra الذي تم إنشاؤه مسبقا. | خطأ |
| $keyEncryptionKeyName | اسم مفتاح تشفير المفتاح الاختياري في Key Vault. ينشئ البرنامج النصي مفتاحا جديدا بهذا الاسم إذا لم يكن موجودا. | خطأ |
قوالب Azure Resource Manager
تشفير الأجهزة الظاهرية أو فك تشفيرها بدون تطبيق Microsoft Entra
- تمكين تشفير القرص على جهاز Windows ظاهري موجود أو قيد التشغيل
- تعطيل التشفير على جهاز Windows ظاهري قيد التشغيل
تشفير الأجهزة الظاهرية أو فك تشفيرها باستخدام تطبيق Microsoft Entra
- تمكين تشفير القرص على جهاز Windows ظاهري موجود أو قيد التشغيل
- تعطيل التشفير على جهاز Windows ظاهري قيد التشغيل
- إنشاء قرص مدار مشفر جديد من كائن ثنائي كبير الحجم VHD/تخزين مشفر مسبقا - ينشئ قرصا مدارا مشفرا جديدا من VHD مشفر مسبقا وإعدادات التشفير المقابلة له.
إعداد VHD Windows مشفر مسبقًا
توضح الأقسام التالية كيفية إعداد Windows VHD مشفر مسبقا للنشر ك VHD مشفر في Azure IaaS. استخدم هذه المعلومات لإعداد وتشغيل جهاز ظاهري جديد Windows (VHD) على استرداد موقع Azure أو Azure. لمزيد من المعلومات حول كيفية إعداد وتحميل VHD، راجع تحميل VHD معمم واستخدامه لإنشاء أجهزة ظاهرية جديدة في Azure.
تحديث نهج المجموعة للسماح بخلاف TPM لحماية نظام التشغيل
قم بتكوين إعداد نهج مجموعة BitLocker لتشفير محرك BitLocker، والذي ستجده ضمن القوالب الإدارية> لتكوين الكمبيوتر> لنهج الكمبيوتر المحلي>مكونات Windows. تغيير هذا الإعداد إلى Operating System Drives>يتطلب مصادقة إضافية عند بدء التشغيل>اسمح لـ BitLocker بدون TPM متوافق، كما هو موضح في الشكل التالي:
تثبيت مكونات ميزة BitLocker
لنظام التشغيل Windows Server 2012 والإصدارات الأحدث، استخدم الأمر التالي:
dism /online /Enable-Feature /all /FeatureName:BitLocker /quiet /norestart
بالنسبة Windows Server 2008 R2، استخدم الأمر التالي:
ServerManagerCmd -install BitLockers
إعداد وحدة تخزين نظام التشغيل لـ BitLocker باستخدام bdehdcfg
لضغط قسم نظام التشغيل وإعداد الجهاز لـ BitLocker، قم بتنفيذ bdehdcfg إذا لزم الأمر:
bdehdcfg -target c: shrink -quiet
حماية وحدة تخزين نظام التشغيل باستخدام BitLocker
manage-bde استخدم الأمر لتمكين التشفير على وحدة تخزين التمهيد باستخدام أداة حماية مفتاح خارجية. ضع أيضًا المفتاح الخارجي (ملف .bek) على محرك الأقراص الخارجي أو وحدة التخزين. يتم تمكين التشفير على وحدة تخزين النظام / التمهيد بعد إعادة التشغيل التالية.
manage-bde -on %systemdrive% -sk [ExternalDriveOrVolume]
reboot
إشعار
قم بإعداد الجهاز الظاهري باستخدام بيانات/مورد منفصل VHD للحصول على المفتاح الخارجي باستخدام BitLocker.
تحميل VHD مشفر إلى حساب تخزين Azure
بعد تمكين تشفير BitLocker، يجب تحميل VHD المشفر المحلي إلى حساب التخزين الخاص بك.
Add-AzVhd [-Destination] <Uri> [-LocalFilePath] <FileInfo> [[-NumberOfUploaderThreads] <Int32> ] [[-BaseImageUriToPatch] <Uri> ] [[-OverWrite]] [ <CommonParameters>]
تحميل بيانات سرية الجهاز الظاهري المشفر مسبقا إلى قبو المفاتيح الخاص بك
قم بتحميل سر تشفير القرص الذي حصلت عليه سابقا كبيانات سرية في خزنة المفاتيح الخاصة بك. للقيام بذلك، امنح الإذن السري المعين وإذن wrapkey للحساب الذي يقوم بتحميل الأسرار.
# Typically, account Id is the user principal name (in user@domain.com format)
$upn = (Get-AzureRmContext).Account.Id
Set-AzKeyVaultAccessPolicy -VaultName $kvname -UserPrincipalName $acctid -PermissionsToKeys wrapKey -PermissionsToSecrets set
# In cloud shell, the account ID is a managed service identity, so specify the username directly
# $upn = "user@domain.com"
# Set-AzKeyVaultAccessPolicy -VaultName $kvname -UserPrincipalName $acctid -PermissionsToKeys wrapKey -PermissionsToSecrets set
# When running as a service principal, retrieve the service principal ID from the account ID, and set access policy to that
# $acctid = (Get-AzureRmContext).Account.Id
# $spoid = (Get-AzureRmADServicePrincipal -ServicePrincipalName $acctid).Id
# Set-AzKeyVaultAccessPolicy -VaultName $kvname -ObjectId $spoid -BypassObjectIdValidation -PermissionsToKeys wrapKey -PermissionsToSecrets set
بيانات سرية تشفير القرص غير مشفرة باستخدام KEK
لإعداد البيانات السرية في مخزن المفاتيح، استخدم Set-AzKeyVaultSecret. يتم ترميز عبارة المرور كسلسلة base64 ثم يتم تحميلها إلى مخزن المفاتيح. بالإضافة إلى ذلك، تأكد من تعيين العلامات التالية عند إنشاء البيانات السرية في مخزن المفاتيح.
# This is the passphrase that was provided for encryption during the distribution installation
$passphrase = "contoso-password"
$tags = @{"DiskEncryptionKeyEncryptionAlgorithm" = "RSA-OAEP"; "DiskEncryptionKeyFileName" = "LinuxPassPhraseFileName"}
$secretName = [guid]::NewGuid().ToString()
$secretValue = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($passphrase))
$secureSecretValue = ConvertTo-SecureString $secretValue -AsPlainText -Force
$secret = Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $secretName -SecretValue $secureSecretValue -tags $tags
$secretUrl = $secret.Id
$secretUrl استخدم في الخطوة التالية لإرفاق قرص نظام التشغيل دون استخدام KEK.
البيانات السرية لتشفير القرص المشفر باستخدام KEK
قبل تحميل البيانات السرية إلى مخزن المفاتيح، يمكنك تشفيره اختياريًا باستخدام مفتاح تشفير مفتاح. استخدم واجهة برمجة تطبيقات الالتفاف لتشفير السر أولا باستخدام مفتاح تشفير المفتاح. إخراج عملية التضمين هذه عبارة عن سلسلة مشفرة لعنوان URL base64، والتي يمكنك بعد ذلك تحميلها كبيانات سرية باستخدام Set-AzKeyVaultSecret الأمر cmdlet.
# This is the passphrase that was provided for encryption during the distribution installation
$passphrase = "contoso-password"
Add-AzKeyVaultKey -VaultName $KeyVaultName -Name "keyencryptionkey" -Destination Software
$KeyEncryptionKey = Get-AzKeyVaultKey -VaultName $KeyVault.OriginalVault.Name -Name "keyencryptionkey"
$apiversion = "2015-06-01"
##############################
# Get Auth URI
##############################
$uri = $KeyVault.VaultUri + "/keys"
$headers = @{}
$response = try { Invoke-RestMethod -Method GET -Uri $uri -Headers $headers } catch { $_.Exception.Response }
$authHeader = $response.Headers["www-authenticate"]
$authUri = [regex]::match($authHeader, 'authorization="(.*?)"').Groups[1].Value
Write-Host "Got Auth URI successfully"
##############################
# Get Auth Token
##############################
$uri = $authUri + "/oauth2/token"
$body = "grant_type=client_credentials"
$body += "&client_id=" + $AadClientId
$body += "&client_secret=" + [Uri]::EscapeDataString($AadClientSecret)
$body += "&resource=" + [Uri]::EscapeDataString("https://vault.azure.net")
$headers = @{}
$response = Invoke-RestMethod -Method POST -Uri $uri -Headers $headers -Body $body
$access_token = $response.access_token
Write-Host "Got Auth Token successfully"
##############################
# Get KEK info
##############################
$uri = $KeyEncryptionKey.Id + "?api-version=" + $apiversion
$headers = @{"Authorization" = "Bearer " + $access_token}
$response = Invoke-RestMethod -Method GET -Uri $uri -Headers $headers
$keyid = $response.key.kid
Write-Host "Got KEK info successfully"
##############################
# Encrypt passphrase by using a KEK
##############################
$passphraseB64 = [Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($Passphrase))
$uri = $keyid + "/encrypt?api-version=" + $apiversion
$headers = @{"Authorization" = "Bearer " + $access_token; "Content-Type" = "application/json"}
$bodyObj = @{"alg" = "RSA-OAEP"; "value" = $passphraseB64}
$body = $bodyObj | ConvertTo-Json
$response = Invoke-RestMethod -Method POST -Uri $uri -Headers $headers -Body $body
$wrappedSecret = $response.value
Write-Host "Encrypted passphrase successfully"
##############################
# Store secret
##############################
$secretName = [guid]::NewGuid().ToString()
$uri = $KeyVault.VaultUri + "/secrets/" + $secretName + "?api-version=" + $apiversion
$secretAttributes = @{"enabled" = $true}
$secretTags = @{"DiskEncryptionKeyEncryptionAlgorithm" = "RSA-OAEP"; "DiskEncryptionKeyFileName" = "LinuxPassPhraseFileName"}
$headers = @{"Authorization" = "Bearer " + $access_token; "Content-Type" = "application/json"}
$bodyObj = @{"value" = $wrappedSecret; "attributes" = $secretAttributes; "tags" = $secretTags}
$body = $bodyObj | ConvertTo-Json
$response = Invoke-RestMethod -Method PUT -Uri $uri -Headers $headers -Body $body
Write-Host "Stored secret successfully"
$secretUrl = $response.id
استخدم $KeyEncryptionKey و $secretUrl في الخطوة التالية لإرفاق قرص نظام التشغيل باستخدام KEK.
حدد عنوان URL سريًا عند إرفاق قرص نظام التشغيل
بدون استخدام KEK
أثناء إرفاق قرص نظام التشغيل، مرر $secretUrl. يتم إنشاء عنوان URL في قسم "Disk-encryption secret not encrypted with a KEK".
Set-AzVMOSDisk `
-VM $VirtualMachine `
-Name $OSDiskName `
-SourceImageUri $VhdUri `
-VhdUri $OSDiskUri `
-Windows `
-CreateOption FromImage `
-DiskEncryptionKeyVaultId $KeyVault.ResourceId `
-DiskEncryptionKeyUrl $SecretUrl
استخدام KEK
عند إرفاق قرص نظام التشغيل، قم بتمرير $KeyEncryptionKey و $secretUrl. يتم إنشاء عنوان URL في قسم "تشفير القرص السري المشفر باستخدام KEK".
Set-AzVMOSDisk `
-VM $VirtualMachine `
-Name $OSDiskName `
-SourceImageUri $CopiedTemplateBlobUri `
-VhdUri $OSDiskUri `
-Windows `
-CreateOption FromImage `
-DiskEncryptionKeyVaultId $KeyVault.ResourceId `
-DiskEncryptionKeyUrl $SecretUrl `
-KeyEncryptionKeyVaultId $KeyVault.ResourceId `
-KeyEncryptionKeyURL $KeyEncryptionKey.Id