إنشاء مخزن مفاتيح وتكوينه لـ Azure Disk Encryption باستخدام Azure AD (الإصدار السابق)

ينطبق على: ✔️ أجهزة Windows الظاهرية

يلغي الإصدار الجديد من Azure Disk Encryption متطلبات توفير معلمة تطبيق Azure AD لتمكين تشفير قرص الجهاز الظاهري. مع الإصدار الجديد، لم تعد مطالباً بتوفير بيانات اعتماد Azure AD أثناء خطوة تمكين التشفير. يجب تشفير جميع الأجهزة الظاهرية الجديدة بدون معلمات تطبيق Azure AD باستخدام الإصدار الجديد. لعرض الإرشادات لتمكين تشفير قرص الجهاز الظاهري باستخدام الإصدار الجديد، راجع Azure Disk Encryption. لا تزال الأجهزة الظاهرية التي تم تشفيرها بالفعل باستخدام معلمات تطبيق Azure AD مدعومة، ويجب الاستمرار في الاحتفاظ بها باستخدام بناء جملة AAD.

يستخدم Azure Disk Encryption مخزن Azure Key Vault للتحكم في مفاتيح تشفير القرص والمفاتيح السرية وإدارتها. لمزيد من المعلومات حول خزائن المفاتيح، راجع البدء باستخدام Azure Key Vault وتأمين خزنة المفاتيح.

يتضمن إنشاء مخزن مفاتيح وتكوينه للاستخدام مع Azure Disk Encryption مع Azure AD (الإصدار السابق) ثلاث خطوات:

  1. إنشاء مخزن رئيسي.
  2. قم بإعداد تطبيق Azure AD ومدير الخدمة.
  3. قم بتعيين سياسة الوصول إلى مخزن مفاتيح تطبيق Azure AD.
  4. حدد سياسات الوصول المتقدم لمخزن المفاتيح.

يمكنك أيضًا إنشاء أو استيراد مفتاح تشفير مفتاح (KEK) إذا كنت ترغب في ذلك.

راجع المقالة الرئيسية إنشاء مخزن مفاتيح وتكوينه لـ Azure Disk Encryption للحصول على خطوات حول كيفية تثبيت الأدوات والاتصال بـ Azure.

ملاحظة

تتم أتمتة الخطوات الواردة في هذه المقالة في البرنامج النصي CLI للمتطلبات الأساسية لـ Azure Disk Encryption والبرنامج النصي PowerShell للمتطلبات الأساسية لـ Azure Disk Encryption.

إنشاء مخزن رئيسي

تم دمج Azure Disk Encryption مع Azure Key Vault لمساعدتك في التحكم في مفاتيح تشفير الأقراص وبياناتها السرية وإدارتها في اشتراك مخزن المفاتيح. يمكنك إنشاء مخزن مفاتيح أو استخدام مخزن موجود لـ Azure Disk Encryption. لمزيد من المعلومات حول خزائن المفاتيح، راجع البدء باستخدام Azure Key Vault وتأمين خزنة المفاتيح. يمكنك استخدام قالب Resource Manager، أو Azure PowerShell، أو Azure CLI لإنشاء مخزن مفاتيح.

تحذير

لضمان أن البيانات السرية للتشفير لا تتخطى الحدود الإقليمية، يحتاج Azure Disk Encryption أن يكون مخزن المفاتيح والأجهزة الظاهرية في المنطقة نفسها. إنشاء مخزن مفاتيح في المنطقة نفسها التي يوجد فيها الجهاز الظاهري المراد تشفيره واستخدامه.

إنشاء مخزن مفاتيح مع PowerShell

يمكنك إنشاء مخزن مفاتيح باستخدام Azure PowerShell باستخدام New-AzKeyVault cmdlet. للحصول على cmdlets إضافية لمخزن المفاتيح، راجع Az.KeyVault.

  1. قم بإنشاء مجموعة موارد جديدة، إذا لزم الأمر، باستخدام New-AzResourceGroup. لإدراج مواقع مراكز البيانات، استخدم Get-AzLocation.

    # Get-AzLocation
    New-AzResourceGroup –Name 'MyKeyVaultResourceGroup' –Location 'East US'
    
  2. إنشاء مخزن مفاتيح جديد باستخدام New-AzKeyVault

    New-AzKeyVault -VaultName 'MySecureVault' -ResourceGroupName 'MyKeyVaultResourceGroup' -Location 'East US'
    
  3. لاحظ اسم المخزن، واسم مجموعة الموارد، ومعرف الموارد، وعنوان URI الخاص بالمخزن، ومعرف الكائن الذي تتم إعادته لاستخدامه لاحقاً عند تشفيرك للأقراص.

إنشاء مخزن مفاتيح باستخدام Azure CLI

يمكنك إدارة مخزن المفاتيح باستخدام Azure CLI عن طريق أوامر az keyvault. لإنشاء مخزن مفاتيح، استخدم az keyvault create.

  1. أنشئ مجموعة موارد جديدة، إذا لزم الأمر، باستخدام az group create. لإدراج المواقع، استخدم az account list-locations

    # To list locations: az account list-locations --output table
    az group create -n "MyKeyVaultResourceGroup" -l "East US"
    
  2. قم بإنشاء مخزن مفاتيح جديد باستخدام az keyvault create.

    az keyvault create --name "MySecureVault" --resource-group "MyKeyVaultResourceGroup" --location "East US"
    
  3. لاحظ اسم المخزن (الاسم)، واسم مجموعة الموارد، ومعرف المورد (المعرف)، وعنوان URI للمخزن، وومعرف العنصر الذي يتم إرجاعه للاستخدام لاحقاً.

إنشاء مخزن مفاتيح باستخدام قالب Resource Manager

يمكنك إنشاء مخزن مفاتيح باستخدام قالب Resource Manager.

  1. في قالب التشغيل السريع Azure، انقر فوق Deploy to Azure.
  2. حدد الاشتراك ومجموعة الموارد وموقع مجموعة الموارد واسم Vault Key ومعرف الكائن والمصطلحات القانونية والاتفاق، ثم انقر فوق Purchase.

إعداد تطبيق Azure AD ومدير الخدمة

عندما تحتاج إلى تمكين التشفير على جهاز ظاهري قيد التشغيل في Azure، يقوم Azure Disk Encryption بإنشاء مفاتيح التشفير وكتابتها إلى مخزن المفاتيح. تتطلب إدارة مفاتيح التشفير في مخزن المفاتيح مصادقة Azure AD. أنشئ تطبيق Azure AD لهذا الغرض. لأغراض المصادقة، يمكنك استخدام إما المصادقة المستندة إلى سر العميل أو مصادقة Azure AD المستندة إلى شهادة العميل.

إعداد تطبيق Azure AD ومدير الخدمة باستخدام Azure PowerShell

لتنفيذ الأوامر التالية، احصل على Azure AD PowerShell module واستخدمها.

  1. استخدم New-AzADApplication PowerShell cmdlet لإنشاء تطبيق 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
    
  2. $azureAdApplication.ApplicationId يمثل معرف العميل في Azure AD، بينما يمثل $aadClientSecret سر العميل الذي سوف تستخدمه لاحقاً لتمكين Azure Disk Encryption. قم بحماية سر عميل Azure AD بشكل مناسب. سيظهر لك تشغيل $azureAdApplication.ApplicationId معرف التطبيق.

إعداد تطبيق Azure AD ومدير الخدمة باستخدام Azure CLI

يمكنك إدارة مديري الخدمة باستخدام Azure CLI باستخدام أوامر az ad sp. لمزيد من المعلومات، راجع Create an Azure service principal.

  1. قم بإنشاء مدير خدمة جديد⁦.

    az ad sp create-for-rbac --name "ServicePrincipalName" --password "My-AAD-client-secret" --role Contributor --scopes /subscriptions/<subscription_id>
    
  2. appId الذي تم إرجاعه هو Azure AD ClientID المستخدم في الأوامر الأخرى. إنه أيضاً SPN الذي ستستخدمه لسياسة تعيين keyvault az. كلمة المرور تعبر عن سر العميل الذي يجب عليك استخدامه لاحقاً لتمكين Azure Disk Encryption. قم بحماية سر عميل Azure AD بشكل مناسب.

إعداد تطبيق Azure AD ومدير الخدمة من خلال مدخل Azure

استخدم الخطوات الواردة في مقالة استخدام المدخل لإنشاء تطبيق Azure Active Directory ومدير خدمة يمكنه الوصول إلى الموارد لإنشاء تطبيق Azure AD. ستأخذك كل خطوة مدرجة أدناها مباشرة إلى قسم المقالة لإكمالها.

  1. التحقق من الأذونات المطلوبة
  2. إنشاء تطبيق Microsoft Azure Active Directory
    • يمكنك استخدام أي اسم وعنوان URL لتسجيل الدخول الذي تريده عند إنشاء التطبيق.
  3. احصل على معرف التطبيق ومفتاح المصادقة.
    • مفتاح المصادقة يشير إلى سر العميل، ويُستخدم كـ AadClientSecret لـ Set-AzVMDiskEncryptionExtension.
      • يستخدم التطبيق مفتاح المصادقة كبيانات اعتماد لتسجيل الدخول إلى Azure AD. في مدخل Azure، يعرف هذا السر باسم المفاتيح، ولكن ليست له علاقة بمخازن المفاتيح. عليك تأمين هذا السر بشكل مناسب.
    • سيتم استخدام معرف التطبيق لاحقاً كمعرف AadClientId Set-AzVMDiskEncryptionExtension وكـ ServicePrincipalName لـ Set-AzKeyVaultAccessPolicy.

تعيين نهج الوصول إلى مخزن المفاتيح لتطبيق Azure AD

لكتابة البيانات السرية للتشفير إلى مخزن مفاتيح محدد، يحتاج Azure Disk Encryption إلى معرف العميل وسره لتطبيق Azure Active Directory الذي لديه أذونات لكتابة البيانات السرية إلى مخزن المفاتيح.

ملاحظة

يتطلب Azure Disk Encryption تكوين نُهج الوصول التالية إلى تطبيق عميل Azure AD: WrapKey وتعيين الأذونات.

تعيين نهج الوصول إلى مخزن المفاتيح لتطبيق Azure AD باستخدام Azure PowerShell

يحتاج تطبيق Azure AD إلى حقوق للوصول إلى المفاتيح أو البيانات السرية الموجودة في المخزن. استخدم cmdlet Set-AzKeyVaultAccessPolicy لمنح أذونات إلى التطبيق، باستخدام معرف العميل (الذي تم إنشاؤه عند تسجيل التطبيق) كقيمة المعلمة –ServicePrincipalName. لمعرفة المزيد، راجع منشور المدونة Azure Key Vault - خطوة بخطوة.

  1. قم بتعيين نهج الوصول إلى مخزن المفاتيح لتطبيق 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 باستخدام المدخل

  1. افتح مجموعة الموارد باستخدام مخزن المفاتيح.
  2. حدد مخزن المفاتيح، وانتقل إلى "Access Policies"، ثم انقر فوق "Add new".
  3. ضمن "Select principal"، ابحث عن تطبيق Azure AD الذي قمت بإنشائه وحدده.
  4. للحصول على أذونات المفاتيح، حدد "Wrap Key" ضمن "Cryptographic Operations".
  5. للحصول على الأذونات السرية، ضع علامة على "Set" ضمن "Secret Management Operations".
  6. انقر فوق "OK" لحفظ نهج الوصول.

Azure Key Vault cryptographic operations - Wrap Key

Azure Key Vault Secret permissions - Set

حدد سياسات الوصول المتقدم للـ 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"
    
  • قم بتمكين مخزن المفاتيح للنشر، إذا لزم الأمر: يسمح للأجهزة الظاهرية باسترداد الشهادات المخزنة كأسرار من المخزن.

    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

  1. حدد مخزن المفاتيح الخاص بك، وانتقل إلى "Access Policies"، وانقر لعرض نُهج الوصول المتقدمة.
  2. حدد المربع المُسمَّى Enable access to Azure Disk Encryption for volume encryption.
  3. حدد Enable access to Azure Virtual Machines for deployment و/أو Enable Access to Azure Resource Manager for template deployment إذا لزم الأمر.
  4. انقر فوق Save.

Azure key vault advanced access policies

إعداد مفتاح تشفير مفتاح (اختياري)

إذا كنت ترغب في استخدام مفتاح تشفير مفتاح (KEK) للحصول على طبقة إضافية من الأمان لمفاتيح التشفير، فقم بإضافة KEK إلى خزنة المفاتيح key vault. استخدم cmdlet Add-AzKeyVaultKey لإنشاء مفتاح تشفير مفتاح في مخزن المفاتيح. يمكنك بدلاً من ذلك استيراد KEK من HSM لإدارة المفاتيح المحلية. لمزيد من المعلومات، راجع Key Vault Documentation. عند تحديد مفتاح تشفير مفتاح، يستخدم Azure Disk Encryption هذا المفتاح لتحصين أسرار التشفير قبل الكتابة إلى Key Vault.

إعداد مفتاح تشفير مفتاح باستخدام Azure PowerShell

قبل استخدام البرنامج النصي PowerShell، يجب أن تكون على دراية بالمتطلبات الأساسية لـ Azure Disk Encryption لفهم الخطوات الواردة في البرنامج النصي. قد يحتاج نموذج البرنامج النصي إلى تغييرات لبيئتك. يقوم هذا البرنامج النصي بإنشاء جميع المتطلبات الأساسية لـ Azure Disk Encryption وتشفير جهاز 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 Disk Encryption لفهم الخطوات الواردة في البرنامج النصي. قد يحتاج نموذج البرنامج النصي إلى تغييرات لبيئتك.


# 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 Disk Encryption السابقة لفهم الخطوات الواردة في البرنامج النصي. قد يحتاج نموذج البرنامج النصي إلى تغييرات لبيئتك.

# 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 Disk Encryption باستخدام Azure AD على أجهزة Windows الظاهرية (الإصدار السابق)