Azure PowerShell - تمكين المفاتيح المدارة من قبل العملاء باستخدام تشفير جانب الخادم - الأقراص المدارة

ينطبق على: ✔️ مجموعات ✔️ مقياس مرنة Windows الآلات ✔️ الافتراضية مجموعات مقياس موحدة

يتيح لك Azure Disk Storage إدارة مفاتيحك الخاصة عند استخدام تشفير الخادم (SSE) للأقراص المدارة، إذا رغبت. للحصول على معلومات مفاهيمية حول SSE مع المفاتيح المُدارة بواسطة العميل، بالإضافة إلى أنواع تشفير القرص المُدارة الأخرى، راجع قسم المفاتيح المُدارة بواسطة العميل في مقالة تشفير القرص.

القيود

في الوقت الحالي، تخضع المفاتيح المُدارة بواسطة العميل للقيود التالية:

  • إذا تم تمكين هذه الميزة لقرص مع لقطات تزايدية، فلا يمكن تعطيلها على هذا القرص أو لقطاته. للتغلب على ذلك، انسخ جميع البيانات إلى قرص مدار مختلف تماما لا يستخدم مفاتيح يديرها العميل. يمكنك فعل ذلك إما مع Azure CLI أو وحدة Azure PowerShell.
  • يجب أن يكون للقرص وجميع اللقطات التزايدية المقترنة به نفس مجموعة تشفير القرص.
  • يتم دعم برامج ومفاتيح HSM RSA بالأحجام 2048 بت و3072 بت و4096 بت فقط، دون أي مفاتيح أو أحجام أخرى.
    • مفاتيح HSM تتطلب مستوى premium من خزائن المفاتيح Azure.
  • بالنسبة لأقراص Ultra وأقراص Premium SSD v2 فقط:
    • (معاينة) تتوفر الهويات المدارة المعينة من قبل المستخدم لأقراص Ultra وأقراص Premium SSD v2 المشفرة باستخدام مفاتيح يديرها العميل.
  • يجب أن تكون معظم الموارد المتعلقة بالمفاتيح المُدارة بواسطة العميل (مجموعات تشفير الأقراص والأجهزة الظاهرية والأقراص والنسخ المطابقة) في نفس الاشتراك والمنطقة.
  • يمكن للأقراص المشفرة بالمفاتيح التي يديرها العميل الانتقال إلى مجموعة موارد أخرى فقط إذا تم إلغاء تخصيص الجهاز الظاهري المرفق به.
  • لا يمكن نقل الأقراص واللقطات والصور المشفرة باستخدام مفاتيح يديرها العميل بين الاشتراكات.
  • الأقراص المدارة التي تم تشفيرها حاليا أو سابقا باستخدام تشفير قرص Azure لا يمكن تشفيرها باستخدام مفاتيح يديرها العميل.
  • يمكن فقط إنشاء ما يصل إلى 5000 مجموعة تشفير قرص لكل منطقة لكل اشتراك.
  • للحصول على معلومات حول استخدام المفاتيح المُدارة بواسطة العميل مع معارض الصور المشتركة، راجع معاينة: استخدام المفاتيح المُدارة بواسطة العميل لتشفير الصور.

إعداد Azure Key Vault و DiskEncryptionSet مع تدوير المفاتيح التلقائي

لاستخدام المفاتيح المدارة من قبل العملاء مع SSE، يجب عليك إعداد Azure Key Vault ومورد DiskEncryptionSet.

  1. تأكد من أنك قمت بتثبيت أحدث إصدار Azure PowerShell، وأنك مسجلة الدخول إلى حساب Azure عبر Connect-AzAccount

  2. إنشاء نسخة من Azure Key Vault ومفتاح التشفير.

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

    $ResourceGroupName="yourResourceGroupName"
    $LocationName="westcentralus"
    $keyVaultName="yourKeyVaultName"
    $keyName="yourKeyName"
    $keyDestination="Software"
    $diskEncryptionSetName="yourDiskEncryptionSetName"
    
    $keyVault = New-AzKeyVault -Name $keyVaultName `
    -ResourceGroupName $ResourceGroupName `
    -Location $LocationName `
    -EnablePurgeProtection
    
    $key = Add-AzKeyVaultKey -VaultName $keyVaultName `
          -Name $keyName `
          -Destination $keyDestination
    
    Set-AzKeyVaultKeyRotationPolicy -VaultName $keyVaultName -KeyName $keyName -ExpiresIn P2Y -KeyRotationLifetimeAction @{Action="Rotate";TimeBeforeExpiry = "P18M"}
    
  3. أنشئ مثيل DiskEncryptionSet. يعين هذا البرنامج النصي RotationToLatestKeyVersionEnabled يساوي $true لتمكين التدوير التلقائي للمفتاح. عند تمكين التدوير التلقائي، يقوم النظام تلقائيا بتحديث جميع الأقراص المدارة واللقطات والصور التي تشير إلى مجموعة تشفير القرص لاستخدام الإصدار الجديد من المفتاح في غضون ساعة واحدة.

    $desConfig=New-AzDiskEncryptionSetConfig -Location $LocationName `
        -SourceVaultId $keyVault.ResourceId `
        -KeyUrl $key.Key.Kid `
        -IdentityType SystemAssigned `
        -RotationToLatestKeyVersionEnabled $true
    
    $des=New-AzDiskEncryptionSet -Name $diskEncryptionSetName `
           -ResourceGroupName $ResourceGroupName `
           -InputObject $desConfig
    
  4. امنح المورد DiskEncryptionSet حق الوصول إلى مخزن المفاتيح.

    إشعار

    قد يستغرق الأمر بضع دقائق حتى ينشئ Azure هوية مجموعة DiskEncryptionSet الخاصة بك في معرف Microsoft Entra ID الخاص بك. إذا ظهرت لك رسالة خطأ مثل "لا يمكن العثور على كائن Active Directory" عند تشغيل الأمر التالي، انتظر بضع دقائق وحاول مرة أخرى.

    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
    

استخدام مخزن مفاتيح في اشتراك مختلف

بدلا من ذلك، يمكنك إدارة خزائن مفاتيح Azure مركزيا من خلال اشتراك واحد، واستخدام المفاتيح المخزنة في Key Vault لتشفير الأقراص المدارة واللقطات في الاشتراكات الأخرى داخل مؤسستك. يسمح هذا لفريق الأمان الخاص بك بفرض نهج أمان قوي وإدارته بسهولة لاشتراك واحد.

هام

لهذا التكوين، يجب أن يكون كل من Key Vault ومجموعة تشفير القرص في نفس المنطقة ويستخدمان نفس المستأجر.

السكربت التالي هو مثال على كيفية تكوين مجموعة تشفير قرص لاستخدام مفتاح من Key Vault في اشتراك مختلف، ولكن في نفس المنطقة:

$sourceSubscriptionId="<sourceSubID>"
$sourceKeyVaultName="<sourceKVName>"
$sourceKeyName="<sourceKeyName>"

$targetSubscriptionId="<targetSubID>"
$targetResourceGroupName="<targetRGName>"
$targetDiskEncryptionSetName="<targetDiskEncSetName>"
$location="<targetRegion>"

Set-AzContext -Subscription $sourceSubscriptionId

$key = Get-AzKeyVaultKey -VaultName $sourceKeyVaultName -Name $sourceKeyName

Set-AzContext -Subscription $targetSubscriptionId

$desConfig=New-AzDiskEncryptionSetConfig -Location $location `
-KeyUrl $key.Key.Kid `
-IdentityType SystemAssigned `
-RotationToLatestKeyVersionEnabled $true

$des=New-AzDiskEncryptionSet -Name $targetDiskEncryptionSetName `
-ResourceGroupName $targetResourceGroupName `
-InputObject $desConfig

الأمثلة

الآن بعد أن قمت بإنشاء هذه الموارد وتكوينها، يمكنك استخدامها لتأمين الأقراص المُدارة. فيما يلي أمثلة على البرامج النصية، لكل منها سيناريو خاص به، يمكنك استخدامه لتأمين الأقراص المُدارة.

قم بإنشاء جهاز ظاهري باستخدام صورة Marketplace، وقم بتشفير نظام التشغيل وأقراص البيانات باستخدام مفاتيح يديرها العميل

انسخ البرنامج النصي، واستبدل كافة قيم الأمثلة بالمعلمات الخاصة بك، ثم قم بتشغيله.

$VMLocalAdminUser = "yourVMLocalAdminUserName"
$VMLocalAdminSecurePassword = ConvertTo-SecureString <password> -AsPlainText -Force
$LocationName = "yourRegion"
$ResourceGroupName = "yourResourceGroupName"
$ComputerName = "yourComputerName"
$VMName = "yourVMName"
$VMSize = "yourVMSize"
$diskEncryptionSetName="yourdiskEncryptionSetName"
    
$NetworkName = "yourNetworkName"
$NICName = "yourNICName"
$SubnetName = "yourSubnetName"
$SubnetAddressPrefix = "10.0.0.0/24"
$VnetAddressPrefix = "10.0.0.0/16"
    
$SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix
$Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroupName -Location $LocationName -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet
$NIC = New-AzNetworkInterface -Name $NICName -ResourceGroupName $ResourceGroupName -Location $LocationName -SubnetId $Vnet.Subnets[0].Id
    
$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);
    
$VirtualMachine = New-AzVMConfig -VMName $VMName -VMSize $VMSize
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName $ComputerName -Credential $Credential -ProvisionVMAgent -EnableAutoUpdate
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC.Id
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2012-R2-Datacenter' -Version latest

$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName

$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name $($VMName +"_OSDisk") -DiskEncryptionSetId $diskEncryptionSet.Id -CreateOption FromImage

$VirtualMachine = Add-AzVMDataDisk -VM $VirtualMachine -Name $($VMName +"DataDisk1") -DiskSizeInGB 128 -StorageAccountType Premium_LRS -CreateOption Empty -Lun 0 -DiskEncryptionSetId $diskEncryptionSet.Id 
    
New-AzVM -ResourceGroupName $ResourceGroupName -Location $LocationName -VM $VirtualMachine -Verbose

إنشاء قرص فارغ مشفر باستخدام تشفير من جانب الخادم باستخدام مفاتيح مُدارة بواسطة العميل وإرفاقه بجهاز ظاهري

انسخ البرنامج النصي، واستبدل كافة قيم الأمثلة بالمعلمات الخاصة بك، ثم قم بتشغيله.

$vmName = "yourVMName"
$LocationName = "westcentralus"
$ResourceGroupName = "yourResourceGroupName"
$diskName = "yourDiskName"
$diskSKU = "Premium_LRS"
$diskSizeinGiB = 30
$diskLUN = 1
$diskEncryptionSetName="yourDiskEncryptionSetName"


$vm = Get-AzVM -Name $vmName -ResourceGroupName $ResourceGroupName 

$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName

$vm = Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Empty -DiskSizeInGB $diskSizeinGiB -StorageAccountType $diskSKU -Lun $diskLUN -DiskEncryptionSetId $diskEncryptionSet.Id 

Update-AzVM -ResourceGroupName $ResourceGroupName -VM $vm

تشفير الأقراص المدارة الموجودة

يجب عدم إرفاق الأقراص الموجودة لديك بجهاز ظاهري قيد التشغيل حتى تتمكن من تشفيرها باستخدام البرنامج النصي التالي:

$rgName = "yourResourceGroupName"
$diskName = "yourDiskName"
$diskEncryptionSetName = "yourDiskEncryptionSetName"
 
$diskEncryptionSet = Get-AzDiskEncryptionSet -ResourceGroupName $rgName -Name $diskEncryptionSetName
 
New-AzDiskUpdateConfig -EncryptionType "EncryptionAtRestWithCustomerKey" -DiskEncryptionSetId $diskEncryptionSet.Id | Update-AzDisk -ResourceGroupName $rgName -DiskName $diskName

تشفير مجموعة مقياس سعة جهاز ظاهري موجودة (وضع التنسيق الموحد) باستخدام SSE والمفاتيح المُدارة بواسطة العميل

هذا البرنامج النصي سيعمل لمجموعات المقياس في وضع التنسيق الموحد فقط. بالنسبة لمجموعات المقياس في وضع التزامن المرن، اتبع تشفير الأقراص المُدارة الموجودة لكل جهاز ظاهري.

انسخ البرنامج النصي، واستبدل كافة قيم الأمثلة بالمعلمات الخاصة بك، ثم قم بتشغيله:

#set variables 
$vmssname = "name of the vmss that is already created"
$diskencryptionsetname = "name of the diskencryptionset already created"
$vmssrgname = "vmss resourcegroup name"
$diskencryptionsetrgname = "diskencryptionset resourcegroup name"

#get vmss object and create diskencryptionset object attach to vmss os disk
$ssevmss = get-azvmss -ResourceGroupName $vmssrgname -VMScaleSetName $vmssname
$ssevmss.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.DiskEncryptionSet = New-Object -TypeName Microsoft.Azure.Management.Compute.Models.DiskEncryptionSetParameters

#get diskencryption object and retrieve the resource id
$des = Get-AzDiskEncryptionSet -ResourceGroupName $diskencryptionsetrgname -Name $diskencryptionsetname
write-host "the diskencryptionset resource id is:" $des.Id

#associate DES resource id to os disk and update vmss 
$ssevmss.VirtualMachineProfile.StorageProfile.OsDisk.ManagedDisk.DiskEncryptionSet.id = $des.Id
$ssevmss | update-azvmss

إنشاء مجموعة تغيير سعة جهاز ظاهري باستخدام صورة Marketplace، وتشفير نظام التشغيل وأقراص البيانات باستخدام مفاتيح مُدارة بواسطة العميل

انسخ البرنامج النصي، واستبدل كافة قيم الأمثلة بالمعلمات الخاصة بك، ثم قم بتشغيله.

هام

ابتداء من نوفمبر 2023، ستظل مجموعات مقياس الآلات الافتراضية التي يتم إنشاؤها باستخدام PowerShell و Azure CLI افتراضية إلى وضع التنسيق المرن إذا لم يتم تحديد وضع التنسيق. لمزيد من المعلومات حول هذا التغيير وما هي الإجراءات التي يجب اتخاذها، توجه إلى Breaking Change لعملاء VMSS PowerShell/CLI - Microsoft Community Hub

$VMLocalAdminUser = "yourLocalAdminUser"
$VMLocalAdminSecurePassword = ConvertTo-SecureString Password@123 -AsPlainText -Force
$LocationName = "westcentralus"
$ResourceGroupName = "yourResourceGroupName"
$ComputerNamePrefix = "yourComputerNamePrefix"
$VMScaleSetName = "yourVMSSName"
$VMSize = "Standard_DS3_v2"
$diskEncryptionSetName="yourDiskEncryptionSetName"
    
$NetworkName = "yourVNETName"
$SubnetName = "yourSubnetName"
$SubnetAddressPrefix = "10.0.0.0/24"
$VnetAddressPrefix = "10.0.0.0/16"
    
$SingleSubnet = New-AzVirtualNetworkSubnetConfig -Name $SubnetName -AddressPrefix $SubnetAddressPrefix

$Vnet = New-AzVirtualNetwork -Name $NetworkName -ResourceGroupName $ResourceGroupName -Location $LocationName -AddressPrefix $VnetAddressPrefix -Subnet $SingleSubnet

$ipConfig = New-AzVmssIpConfig -Name "myIPConfig" -SubnetId $Vnet.Subnets[0].Id 

$VMSS = New-AzVmssConfig -Location $LocationName -SkuCapacity 2 -SkuName $VMSize -UpgradePolicyMode 'Automatic' -OrchestrationMode 'Uniform'

$VMSS = Add-AzVmssNetworkInterfaceConfiguration -Name "myVMSSNetworkConfig" -VirtualMachineScaleSet $VMSS -Primary $true -IpConfiguration $ipConfig

$diskEncryptionSet=Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName

# Enable encryption at rest with customer managed keys for OS disk by setting DiskEncryptionSetId property 

$VMSS = Set-AzVmssStorageProfile $VMSS -OsDiskCreateOption "FromImage" -DiskEncryptionSetId $diskEncryptionSet.Id -ImageReferenceOffer 'WindowsServer' -ImageReferenceSku '2012-R2-Datacenter' -ImageReferenceVersion latest -ImageReferencePublisher 'MicrosoftWindowsServer'

$VMSS = Set-AzVmssOsProfile $VMSS -ComputerNamePrefix $ComputerNamePrefix -AdminUsername $VMLocalAdminUser -AdminPassword $VMLocalAdminSecurePassword

# Add a data disk encrypted at rest with customer managed keys by setting DiskEncryptionSetId property 

$VMSS = Add-AzVmssDataDisk -VirtualMachineScaleSet $VMSS -CreateOption Empty -Lun 1 -DiskSizeGB 128 -StorageAccountType Premium_LRS -DiskEncryptionSetId $diskEncryptionSet.Id

$Credential = New-Object System.Management.Automation.PSCredential ($VMLocalAdminUser, $VMLocalAdminSecurePassword);

New-AzVmss -VirtualMachineScaleSet $VMSS -ResourceGroupName $ResourceGroupName -VMScaleSetName $VMScaleSetName

قم بتغيير مفتاح DiskEncryptionSet لتدوير المفتاح لجميع الموارد التي تشير إلى DiskEncryptionSet

انسخ البرنامج النصي، واستبدل كافة قيم الأمثلة بالمعلمات الخاصة بك، ثم قم بتشغيله.

$ResourceGroupName="yourResourceGroupName"
$keyVaultName="yourKeyVaultName"
$keyName="yourKeyName"
$diskEncryptionSetName="yourDiskEncryptionSetName"

$keyVault = Get-AzKeyVault -VaultName $keyVaultName -ResourceGroupName $ResourceGroupName

$keyVaultKey = Get-AzKeyVaultKey -VaultName $keyVaultName -Name $keyName

Update-AzDiskEncryptionSet -Name $diskEncryptionSetName -ResourceGroupName $ResourceGroupName -SourceVaultId $keyVault.ResourceId -KeyUrl $keyVaultKey.Id

البحث عن حالة التشفير من جانب الخادم للقرص

$ResourceGroupName="yourResourceGroupName"
$DiskName="yourDiskName"

$disk=Get-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName
$disk.Encryption.Type

هام

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

الخطوات التالية