إنشاء مخزن مفاتيح وتكوينه تشفير قرص Azure باستخدام معرف Microsoft Entra (الإصدار السابق) لأجهزة Linux الظاهرية

ينطبق على: ✔️ أجهزة Linux الظاهرية ✔️ مجموعات مقياس مرنة

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

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

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

  1. إنشاء مخزن رئيسي.
  2. إعداد تطبيق Microsoft Entra ومدير الخدمة.
  3. تعيين نهج الوصول إلى مخزن المفاتيح لتطبيق Microsoft Entra.
  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 Quickstart، حدد Deploy to Azure.
  2. حدد الاشتراك ومجموعة الموارد وموقع مجموعة الموارد واسم Key Vault ومعرف العنصر والأحكام القانونية والاتفاقية، ثم حدد شراء.

إعداد تطبيق Microsoft Entra ومدير الخدمة

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

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

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

  1. استخدم New-AzADApplication PowerShell cmdlet لإنشاء تطبيق Microsoft Entra. 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 هو Microsoft Entra ClientID $aadClientSecret هو سر العميل الذي ستستخدمه لاحقا لتمكين تشفير قرص Azure. خزينة حماية سر عميل Microsoft Entra بشكل مناسب. سيظهر لك تشغيل $azureAdApplication.ApplicationId معرف التطبيق.

إعداد تطبيق Microsoft Entra ومدير الخدمة باستخدام 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. معرف التطبيق الذي تم إرجاعه هو Microsoft Entra ClientID المستخدم في أوامر أخرى. إنه أيضاً SPN الذي ستستخدمه لسياسة تعيين keyvault az. كلمة المرور تعبر عن سر العميل الذي يجب عليك استخدامه لاحقاً لتمكين Azure Disk Encryption. خزينة حماية سر عميل Microsoft Entra بشكل مناسب.

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

استخدم الخطوات من مدخل الاستخدام لإنشاء تطبيق Microsoft Entra ومدير الخدمة الذي يمكنه الوصول إلى مقالة الموارد لإنشاء تطبيق Microsoft Entra. ستأخذك كل خطوة مدرجة أدناها مباشرة إلى قسم المقالة لإكمالها.

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

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

لكتابة أسرار التشفير إلى Key Vault محدد، يحتاج تشفير قرص Azure إلى معرف العميل وسر العميل لتطبيق Microsoft Entra الذي لديه أذونات لكتابة الأسرار إلى Key Vault.

إشعار

يتطلب تشفير قرص Azure تكوين نهج الوصول التالية إلى تطبيق عميل Microsoft Entra: أذونات WrapKey و Set.

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

يحتاج تطبيق Microsoft Entra الخاص بك إلى حقوق للوصول إلى المفاتيح أو الأسرار في المخزن. استخدم 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
    

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

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

  1. افتح مجموعة الموارد باستخدام مخزن المفاتيح.
  2. حدد key vault، وانتقل إلى Access Policies، ثم حدد Add new.
  3. ضمن Select principal، ابحث عن تطبيق Microsoft Entra الذي أنشأته وحدده.
  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. حساب موفر الموارد لاسترداد البيانات السرية من مخزن المفاتيح هذا عند الإشارة إلى مخزن المفاتيح هذا في إنشاء الموارد، على سبيل المثال عند إنشاء جهاز ظاهري.

     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. حدد حفظ.

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

هام

المصادقة المستندة إلى شهادة Microsoft Entra غير مدعومة حاليا على أجهزة 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 مع معرف Microsoft Entra على أجهزة Linux الظاهرية (الإصدار السابق)