إنشاء مخزن مفاتيح وتكوينه لتشفير قرص Azure باستخدام Azure AD (الإصدار السابق) لأجهزة Linux الظاهرية
ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة
يلغي الإصدار الجديد من تشفير قرص Azure متطلبات توفير معلمة تطبيق Azure AD لتمكين تشفير قرص الجهاز الظاهري. مع الإصدار الجديد، لم تعد مطالبًا بتوفير بيانات اعتماد Azure AD في أثناء خطوة تمكين التشفير. يجب تشفير جميع الأجهزة الظاهرية الجديدة بلا معلمات تطبيق Azure AD باستخدام الإصدار الجديد. لعرض الإرشادات لتمكين تشفير قرص الجهاز الظاهري باستخدام الإصدار الجديد، راجع تشفير قرص Azure. لا تزال الأجهزة الظاهرية التي تم تشفيرها بالفعل باستخدام معلمات تطبيق Azure AD مدعومة، ويجب الاستمرار في الاحتفاظ بها باستخدام بناء جملة AAD.
يستخدم Azure Disk Encryption مخزن Azure Key Vault للتحكم في مفاتيح تشفير القرص والمفاتيح السرية وإدارتها. لمزيد من المعلومات حول خزائن المفاتيح، راجع البدء باستخدام Azure Key Vault وتأمين خزنة المفاتيح.
يتضمن إنشاء وتكوين مخزن مفاتيح للاستخدام مع تشفير قرص Azure باستخدام Azure AD (الإصدار السابق) ثلاث خطوات:
- إنشاء مخزن رئيسي.
- قم بإعداد تطبيق Azure AD وكيان الخدمة.
- قم بتعيين نهج الوصول إلى مخزن المفاتيح لتطبيق Azure AD.
- حدد نهج الوصول المتقدم لمخزن المفاتيح.
يمكنك أيضًا إنشاء أو استيراد مفتاح تشفير مفتاح (KEK) إذا كنت ترغب في ذلك.
راجع المقالة الرئيسية إنشاء مخزن مفاتيح وتكوينه لتشفير قرص Azure للتعرف على خطوات حول كيفية تثبيت الأدوات والاتصال بـ Azure.
ملاحظة
تتم أتمتة الخطوات الواردة في هذه المقالة في البرنامج النصي لـ CLI للمتطلبات الأساسية لتشفير قرص Azure والبرنامج النصي لـ PowerShell للمتطلبات الأساسية لتشفير قرص Azure.
إنشاء مخزن رئيسي
تم دمج تشفير قرص Azure مع Azure Key Vault لمساعدتك في التحكم في مفاتيح تشفير الأقراص وبياناتها السرية وإدارتها في اشتراك مخزن المفاتيح. يمكنك إنشاء مخزن مفاتيح أو استخدام مخزن موجود لتشفير قرص Azure. لمزيد من المعلومات حول خزائن المفاتيح، راجع البدء باستخدام Azure Key Vault وتأمين خزنة المفاتيح. يمكنك استخدام قالب Resource Manager أو Azure PowerShell أو Azure CLI لإنشاء مخزن مفاتيح.
تحذير
لضمان أن البيانات السرية للتشفير لا تتخطى الحدود الإقليمية، يحتاج تشفير قرص Azure إلى مخزن المفاتيح والأجهزة الظاهرية في نفس المنطقة. قم بإنشاء واستخدام Key Vault الذي يقع في نفس منطقة الجهاز الظاهري المراد تشفيره.
إنشاء مخزن مفاتيح باستخدام PowerShell
يمكنك إنشاء مخزن مفاتيح باستخدام Azure PowerShell باستخدام cmdlet المسمى New-AzKeyVault. للحصول على cmdlets إضافية لـ Key Vault، راجع Az.KeyVault.
أنشئ مجموعة موارد جديدة، إذا لزم الأمر، باستخدام New-AzResourceGroup. لإدراج مواقع مراكز البيانات، استخدم Get-AzLocation.
# Get-AzLocation New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'إنشاء مخزن مفاتيح جديد باستخدام New-AzKeyVault
New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'لاحظ اسم Vault واسم مجموعة الموارد ومعرف المورد وعنوان URI للمخزن ومعرف العنصر والتي يتم إرجاعها لاستخدامها لاحقًا عند تشفير الأقراص.
إنشاء مخزن مفاتيح باستخدام Azure CLI
يمكنك إدارة مخزن المفاتيح باستخدام Azure CLI عن طريق أوامر az keyvault. لإنشاء مخزن مفاتيح، استخدم az keyvault create.
أنشئ مجموعة موارد جديدة، إذا لزم الأمر، باستخدام az group create. لإدراج المواقع، استخدم az account list-locations
# To list locations: az account list-locations --output table az group create -n "MyKeyVaultResourceGroup" -l "East US"قم بإنشاء مخزن مفاتيح جديد باستخدام az keyvault create.
az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"لاحظ اسم المخزن (الاسم) واسم مجموعة الموارد ومعرف المورد (المعرف) وعنوان URI للمخزن وومعرف العنصر، والتي يتم إرجاعها للاستخدام لاحقًا.
إنشاء مخزن مفاتيح باستخدام قالب Resource Manager
يمكنك إنشاء مخزن مفاتيح باستخدام قالب Resource Manager.
- في قالب التشغيل السريع Azure، انقر فوق Deploy to Azure.
- حدد الاشتراك ومجموعة الموارد وموقع مجموعة الموارد واسم Vault Key ومعرف الكائن والمصطلحات القانونية والاتفاق، ثم انقر فوق Purchase.
إعداد تطبيق Azure AD وكيان الخدمة
عندما تحتاج إلى تمكين التشفير على جهاز ظاهري قيد التشغيل في Azure، يقوم تشفير قرص Azure بإنشاء مفاتيح التشفير وكتابتها إلى مخزن المفاتيح. تتطلب إدارة مفاتيح التشفير في مخزن المفاتيح مصادقة Azure AD. أنشئ تطبيق Azure AD لهذا الغرض. لأغراض المصادقة، يمكنك استخدام إما المصادقة المستندة إلى سر العميل أو مصادقة Azure AD المستندة إلى شهادة العميل.
إعداد تطبيق Azure AD وكيان الخدمة باستخدام Azure PowerShell
لتنفيذ الأوامر التالية، راجع وحدة Azure AD PowerShell.
استخدم cmdlet PowerShell المسمى New-AzADApplication لإنشاء تطبيق Azure AD. MyApplicationHomePage وMyApplicationUri يمكن أن يكونا أي قيم تريدها.
$aadClientSecret = "My AAD client secret" $aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force $azureAdApplication = New-AzADApplication -DisplayName "My Application Display Name" -HomePage "https://MyApplicationHomePage" -IdentifierUris "https://MyApplicationUri" -Password $aadClientSecretSec $servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor$azureAdApplication.ApplicationId يمثل معرف العميل في Azure AD، بينما يمثل $aadClientSecret سر العميل الذي سوف تستخدمه لاحقًا لتمكين تشفير قرص Azure. حماية سر عميل Azure AD بشكل مناسب. سيظهر لك تشغيل
$azureAdApplication.ApplicationIdمعرف التطبيق.
إعداد تطبيق Azure AD وكيان الخدمة باستخدام Azure CLI
يمكنك إدارة كيانات الخدمة باستخدام Azure CLI باستخدام أوامر az ad sp. لمزيد من المعلومات، راجع إنشاء كيان خدمة Azure.
أنشئ كيان خدمة جديدًا.
az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>appId الذي تم إرجاعه هو Azure AD ClientID المستخدم في الأوامر الأخرى. إنه أيضًا يمثل اسم الخدمة الأساسي (SPN) الذي ستستخدمه للأمر «az keyvault set-policy». كلمة المرور تعبر عن سر العميل الذي يجب عليك استخدامه لاحقًا لتمكين تشفير قرص Azure. حماية سر عميل Azure AD بشكل مناسب.
إعداد تطبيق Azure AD وكيان الخدمة من خلال مدخل Azure
استخدم الخطوات الواردة في مقالة استخدام المدخل لإنشاء تطبيق Azure Active Directory وكيان خدمة يمكنه الوصول إلى الموارد لإنشاء تطبيق Azure AD. ستأخذك كل خطوة مدرجة أدناها مباشرة إلى قسم المقالة لإكمالها.
- التحقق من الأذونات المطلوبة
- إنشاء تطبيق Microsoft Azure Active Directory
- يمكنك استخدام أي اسم وعنوان URL لتسجيل الدخول تريده عند إنشاء التطبيق.
- الحصول على معرف التطبيق ومفتاح المصادقة.
- مفتاح المصادقة يشير إلى سر العميل، ويُستخدم كـ AadClientSecret لـ Set-AzVMDiskEncryptionExtension.
- يستخدم التطبيق مفتاح المصادقة كبيانات اعتماد لتسجيل الدخول إلى Azure AD. في مدخل Azure، يعرف هذا السر باسم «المفاتيح»، ولكن ليس له علاقة بمخازن المفاتيح. عليك تأمين هذا السر بشكل مناسب.
- سيتم استخدام معرف التطبيق لاحقًا كمعرف «AadClientId Set-AzVMDiskEncryptionExtension» وكـ «ServicePrincipalName» لـ «Set-AzKeyVaultAccessPolicy».
- مفتاح المصادقة يشير إلى سر العميل، ويُستخدم كـ AadClientSecret لـ Set-AzVMDiskEncryptionExtension.
تعيين نهج الوصول إلى مخزن المفاتيح لتطبيق Azure AD
لكتابة البيانات السرية للتشفير إلى Key Vault محدد، يحتاج تشفير قرص Azure إلى معرف العميل وسر العميل لتطبيق Azure Active Directory الذي لديه أذونات لكتابة البيانات السرية إلى Key Vault.
ملاحظة
يتطلب تشفير قرص Azure تكوين نهج الوصول التالية إلى تطبيق عميل Azure AD: WrapKey وتعيين الأذونات.
تعيين نهج الوصول إلى المخزن الرئيسي لتطبيق Azure AD باستخدام Azure PowerShell
يحتاج تطبيق Azure AD إلى حقوق للوصول إلى المفاتيح أو البيانات السرية الموجودة في المخزن. استخدم cmdlet Set-AzKeyVaultAccessPolicy لمنح أذونات إلى التطبيق، باستخدام معرف العميل (الذي تم إنشاؤه عند تسجيل التطبيق) كقيمة المعلمة –ServicePrincipalName. لمعرفة المزيد، راجع منشور المدونة Azure Key Vault - خطوة بخطوة.
قم بتعيين نهج الوصول إلى المخزن الرئيسي لتطبيق AD باستخدام PowerShell.
$keyVaultName = 'MySecureVault' $aadClientID = 'MyAadAppClientID' $KVRGname = 'MyKeyVaultResourceGroup' Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
تعيين نهج الوصول إلى المخزن الرئيسي لتطبيق Azure AD باستخدام Azure CLI
استخدم az keyvault set-policy لتعيين نهج الوصول. لمزيد من المعلومات، راجع إدارة Key Vault باستخدام CLI 2.0.
امنح كيان الخدمة الذي أنشأته عبر وصول Azure CLI للحصول على البيانات السرية وتضمين المفاتيح باستخدام الأمر التالي:
az keyvault set-policy --name "MySecureVault" --spn "<spn created with CLI/the Azure AD ClientID>" --key-permissions wrapKey --secret-permissions set
تعيين نهج الوصول إلى المخزن الرئيسي لتطبيق Azure AD باستخدام المدخل
- افتح مجموعة الموارد باستخدام مخزن المفاتيح.
- حدد مخزن المفاتيح، وانتقل إلى نهج الوصول، ثم انقر فوق إضافة جديد.
- ضمن تحديد الأساسي، ابحث عن تطبيق Azure AD الذي قمت بإنشائه وحدده.
- للحصول على أذونات المفاتيح، حدد تضمين المفاتيح ضمن عمليات التشفير.
- للحصول على أذونات البيانات السرية، حدد تعيين ضمن عمليات إدارة البيانات السرية.
- انقر فوق موافق لحفظ نهج الوصول.


حدد سياسات الوصول المتقدم للـ key vault.
تحتاج منصة Azure للوصول إلى مفاتيح التشفير أو الأسرار في key vault الخاص بك لجعلها متوفرة للـVM من أجل الـ booting وفك تشفير الأحجام تمكين تشفير القرص على مخزن المفاتيح وإلا ستفشل عمليات التوزيع.
تعيين نهج الوصول المتقدم إلى المخزن الرئيسي باستخدام Azure PowerShell
استخدم key vault PowerShell cmdlet Set-AzKeyVaultAccessPolicy لتمكين تشفير القرص لـ key vault.
تمكين Key Vault لتشفير القرص: مطلوب EnabledForDiskEncryption لتشفير قرص Azure.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDiskEncryptionتمكين Key Vault للنشر، إذا لزم الأمر: يقوم بتمكين موفر الموارد Microsoft.Compute لاسترداد أسرار من الـ Key Vault هذا عند الرجوع إلى الـ Key Vault هذا قبو أثناء إنشاء المورد، على سبيل المثال عند إنشاء جهاز ظاهري.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForDeploymentتمكين Key Vault لنشر القالب، إذا لزم الأمر: تمكين مدير موارد Azure من الحصول على أسرار من الـ Key Vault هذا عند الإشارة إلى الـ Key Vault هذا أثناء نشر قالب.
Set-AzKeyVaultAccessPolicy -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -EnabledForTemplateDeployment
تعيين نهج الوصول المتقدم إلى المخزن الرئيسي باستخدام Azure CLI
استخدم az keyvault update لتمكين تشفير القرص لـ Key Vault
تمكين Key Vault لتشفير القرص : يجب تمكينها لتشفير القرص.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-disk-encryption "true"تمكين Key Vault للتوزيع، إذا لزم الأمر: يسمح للأجهزة الظاهرية باسترداد الشهادات المخزنة كبيانات سرية من المخزن.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-deployment "true"تمكين Key Vault لنشر القالب، إذا لزم الأمر: السماح لمدير الموارد باسترداد أسرار من الـ Vault.
az keyvault update --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --enabled-for-template-deployment "true"
تعيين نهج الوصول المتقدم إلى مخزن المفاتيح من خلال مدخل Azure
- حدد مخزن المفاتيح لديم، ثم انتقل إلى نهج الوصولو انقر لعرض نهج الوصول المتقدمة.
- حدد المربع المُسمَّى Enable access to Azure Disk Encryption for volume encryption.
- حدد Enable access to Azure Virtual Machines for deployment و/أو Enable Access to Azure Resource Manager for template deployment إذا لزم الأمر.
- انقر فوق Save.

إعداد مفتاح تشفير مفتاح (اختياري)
إذا كنت ترغب في استخدام مفتاح تشفير مفتاح (KEK) للحصول على طبقة إضافية من الأمان لمفاتيح التشفير، فقم بإضافة KEK إلى خزنة المفاتيح key vault. استخدم cmdlet المسمى Add-AzKeyVaultKey لإنشاء مفتاح تشفير مفتاح في مخزن المفاتيح. يمكنك بدلاً من ذلك استيراد KEK من HSM لإدارة المفاتيح الداخلية. لمزيد من المعلومات، راجع Key Vault Documentation. عند تحديد مفتاح تشفير مفتاح، يستخدم Azure Disk Encryption هذا المفتاح لتحصين أسرار التشفير قبل الكتابة إلى Key Vault.
عند إنشاء مفاتيح، استخدم نوع مفتاح RSA. لا يعتمد تشفير قرص Azure حتى الآن استخدام مفاتيح المنحنى القطعي.
يجب إصدار عناوين URL للبيانات السرية لمخزن المفاتيح وKEK. يفرض Azure هذا التقييد الذي يتعلق بالإصدار. للحصول على عناوين URL سرية وKEK صالحة، راجع الأمثلة التالية:
- مثال على عنوان URL السري الصالح: https://contosovault.vault.azure.net/secrets/EncryptionSecretWithKek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- مثال على عنوان URL KEK صالح: https://contosovault.vault.azure.net/keys/diskencryptionkek/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
لا يدعم تشفير القرص Azure تحديد أرقام المنافذ كجزء من أسرار الخزنة الرئيسية وعناوين URL لـ KEK. للحصول على أمثلة من عناوين URL لخزنة المفاتيح key vault غير المدعومة والمدعومة، راجع الأمثلة التالية:
- عنوان URL غير مقبول لمخزن المفاتيح https://contosovault.vault.azure.net:443/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- عنوان URL المقبول لخزنة المفتاح: https://contosovault.vault.azure.net/secrets/contososecret/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
إعداد مفتاح تشفير مفتاح باستخدام Azure PowerShell
قبل استخدام البرنامج النصي PowerShell، يجب أن تكون على دراية بالمتطلبات الأساسية لتشفير قرص Azure لفهم الخطوات الواردة في البرنامج النصي. قد يحتاج نموذج البرنامج النصي إلى تغييرات لبيئتك. يقوم هذا البرنامج النصي بإنشاء جميع المتطلبات الأساسية لتشفير قرص Azure وتشفير جهاز IaaS ظاهري موجود، وتضمين مفتاح تشفير القرص باستخدام مفتاح تشفير مفتاح.
# Step 1: Create a new resource group and key vault in the same location.
# Fill in 'MyLocation', 'MyKeyVaultResourceGroup', and 'MySecureVault' with your values.
# Use Get-AzLocation to get available locations and use the DisplayName.
# To use an existing resource group, comment out the line for New-AzResourceGroup
$Loc = 'MyLocation';
$KVRGname = 'MyKeyVaultResourceGroup';
$KeyVaultName = 'MySecureVault';
New-AzResourceGroup –Name $KVRGname –Location $Loc;
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc;
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
$KeyVaultResourceId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname).ResourceId;
$diskEncryptionKeyVaultUrl = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname).VaultUri;
# Step 2: Create the AD application and service principal.
# Fill in 'MyAADClientSecret', "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish.
$aadClientSecret = 'MyAADClientSecret';
$aadClientSecretSec = ConvertTo-SecureString -String $aadClientSecret -AsPlainText -Force;
$azureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -Password $aadClientSecretSec
$servicePrincipal = New-AzADServicePrincipal –ApplicationId $azureAdApplication.ApplicationId -Role Contributor;
$aadClientID = $azureAdApplication.ApplicationId;
#Step 3: Enable the vault for disk encryption and set the access policy for the Azure AD application.
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption;
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname;
#Step 4: Create a new key in the key vault with the Add-AzKeyVaultKey cmdlet.
# Fill in 'MyKeyEncryptionKey' with your value.
$keyEncryptionKeyName = 'MyKeyEncryptionKey';
Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName -Destination 'Software';
$keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;
#Step 5: Encrypt the disks of an existing IaaS VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM';
$VMRGName = 'MyVirtualMachineResourceGroup';
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId;
المصادقة المستندة إلى الشهادة (اختيارية)
إذا كنت ترغب في استخدام مصادقة الشهادة، يمكنك تحميل واحدة إلى مخزن المفاتيح وتوزيعها على العميل. قبل استخدام البرنامج النصي PowerShell، يجب أن تكون على دراية بالمتطلبات الأساسية لتشفير قرص Azure لفهم الخطوات الواردة في البرنامج النصي. قد يحتاج نموذج البرنامج النصي إلى تغييرات لبيئتك.
# Fill in "MyKeyVaultResourceGroup", "MySecureVault", and 'MyLocation' ('My location' only if needed)
$KVRGname = 'MyKeyVaultResourceGroup'
$KeyVaultName= 'MySecureVault'
# Create a key vault and set enabledForDiskEncryption property on it.
# Comment out the next three lines if you already have an existing key vault enabled for encryption. No need to set 'My location' in this case.
$Loc = 'MyLocation'
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption
#Setting some variables with the key vault information
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
# Create the Azure AD application and associate the certificate with it.
# Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish
$CertPath = "C:\certificates\mycert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
# Upload the pfx file to the key vault.
# Fill in "MyAADCert".
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Set the secret and set the key vault policy for -EnabledForDeployment
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment
# Deploy the certificate to the VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM'
$VMRGName = 'MyVirtualMachineResourceGroup'
$CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
$VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
$VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzVM -VM $VM -ResourceGroupName $VMRGName
#Enable encryption on the VM using Azure AD client ID and the client certificate thumbprint
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId
المصادقة المستندة إلى الشهادة وKEK (اختياري)
إذا كنت ترغب في استخدام مصادقة الشهادة وتضمين مفتاح التشفير باستخدام KEK، يمكنك استخدام البرنامج النصي أدناه كمثال. قبل استخدام البرنامج النصي PowerShell، يجب أن تكون على دراية بجميع المتطلبات الأساسية لتشفير قرص Azure السابقة لفهم الخطوات الواردة في البرنامج النصي. قد يحتاج نموذج البرنامج النصي إلى تغييرات لبيئتك.
هام
المصادقة المستندة إلى شهادة Azure AD غير مدعومة حاليًا على الأجهزة الظاهرية لنظام التشغيل Linux.
# Fill in 'MyKeyVaultResourceGroup', 'MySecureVault', and 'MyLocation' (if needed)
$KVRGname = 'MyKeyVaultResourceGroup'
$KeyVaultName= 'MySecureVault'
# Create a key vault and set enabledForDiskEncryption property on it.
# Comment out the next three lines if you already have an existing key vault enabled for encryption.
$Loc = 'MyLocation'
New-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname -Location $Loc
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDiskEncryption
# Create the Azure AD application and associate the certificate with it.
# Fill in "C:\certificates\mycert.pfx", "Password", "<My Application Display Name>", "<https://MyApplicationHomePage>", and "<https://MyApplicationUri>" with your values.
# MyApplicationHomePage and the MyApplicationUri can be any values you wish
$CertPath = "C:\certificates\mycert.pfx"
$CertPassword = "Password"
$Cert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2($CertPath, $CertPassword)
$CertValue = [System.Convert]::ToBase64String($cert.GetRawCertData())
$AzureAdApplication = New-AzADApplication -DisplayName "<My Application Display Name>" -HomePage "<https://MyApplicationHomePage>" -IdentifierUris "<https://MyApplicationUri>" -CertValue $CertValue
$ServicePrincipal = New-AzADServicePrincipal -ApplicationId $AzureAdApplication.ApplicationId -Role Contributor
$AADClientID = $AzureAdApplication.ApplicationId
$aadClientCertThumbprint= $cert.Thumbprint
## Give access for setting secrets and wraping keys
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ServicePrincipalName $aadClientID -PermissionsToKeys 'WrapKey' -PermissionsToSecrets 'Set' -ResourceGroupName $KVRGname
# Upload the pfx file to the key vault.
# Fill in "MyAADCert".
$KeyVaultSecretName = "MyAADCert"
$FileContentBytes = get-content $CertPath -Encoding Byte
$FileContentEncoded = [System.Convert]::ToBase64String($fileContentBytes)
$JSONObject = @"
{
"data" : "$filecontentencoded",
"dataType" : "pfx",
"password" : "$CertPassword"
}
"@
$JSONObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$JSONEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Set the secret and set the key vault policy for deployment
$Secret = ConvertTo-SecureString -String $JSONEncoded -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName -SecretValue $Secret
Set-AzKeyVaultAccessPolicy -VaultName $KeyVaultName -ResourceGroupName $KVRGname -EnabledForDeployment
#Setting some variables with the key vault information and generating a KEK
# FIll in 'KEKName'
$KEKName ='KEKName'
$KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname
$DiskEncryptionKeyVaultUrl = $KeyVault.VaultUri
$KeyVaultResourceId = $KeyVault.ResourceId
$KEK = Add-AzKeyVaultKey -VaultName $KeyVaultName -Name $KEKName -Destination "Software"
$KeyEncryptionKeyUrl = $KEK.Key.kid
# Deploy the certificate to the VM
# Fill in 'MySecureVM' and 'MyVirtualMachineResourceGroup' with your values.
$VMName = 'MySecureVM';
$VMRGName = 'MyVirtualMachineResourceGroup';
$CertUrl = (Get-AzKeyVaultSecret -VaultName $KeyVaultName -Name $KeyVaultSecretName).Id
$SourceVaultId = (Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGName).ResourceId
$VM = Get-AzVM -ResourceGroupName $VMRGName -Name $VMName
$VM = Add-AzVMSecret -VM $VM -SourceVaultId $SourceVaultId -CertificateStore "My" -CertificateUrl $CertUrl
Update-AzVM -VM $VM -ResourceGroupName $VMRGName
#Enable encryption on the VM using Azure AD client ID and the client certificate thumbprint
Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $VMName -AadClientID $AADClientID -AadClientCertThumbprint $AADClientCertThumbprint -DiskEncryptionKeyVaultUrl $DiskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId
الخطوات التالية
تمكين تشفير قرص Azure باستخدام Azure AD على أجهزة Linux الظاهرية (الإصدار السابق)