Azure PowerShell - تمكين المفاتيح المُدارة من قِبل العميل باستخدام التشفير من جانب الخادم - الأقراص المُدارة
ينطبق على: ✔️ أجهزة ظاهرية تعمل بنظام التشغيل Windows
يتيح لك Azure Disk Storage إدارة المفاتيح الخاصة بك عند استخدام التشفير من جانب الخادم (SSE) للأقراص المُدارة، إذا اخترت ذلك. للحصول على معلومات مفاهيمية حول SSE مع المفاتيح المُدارة بواسطة العميل، بالإضافة إلى أنواع تشفير القرص المُدارة الأخرى، راجع قسم المفاتيح المُدارة بواسطة العميل في مقالة تشفير القرص.
القيود
في الوقت الحالي، تخضع المفاتيح المُدارة بواسطة العميل للقيود التالية:
- إذا تم تمكين هذه الميزة للقرص الخاص بك، فلا يمكنك تعطيلها. إذا كنت بحاجة إلى حل هذه المشكلة، فيجب عليك نسخ جميع البيانات إلى قرص مُدار مختلف تمامًا لا يستخدم المفاتيح المُدارة بواسطة العميل.
- فقط يتم دعم برامج ومفاتيح HSM RSA بأحجام 2048 بت و3072 بت و4096 بت، ولا توجد مفاتيح أو أحجام أخرى.
- تتطلب مفاتيح HSMالمستوى المتميز من مخازن Azure Key.
- يجب تشفير الأقراص التي تم إنشاؤها من صور مخصصة تم تشفيرها باستخدام تشفير من جانب الخادم ومفاتيح مُدارة بواسطة العميل باستخدام نفس المفاتيح المُدارة بواسطة العميل ويجب أن تكون في نفس الاشتراك.
- يجب تشفير النسخ المطابقة التي تم إنشاؤها من الأقراص المشفرة باستخدام تشفير من جانب الخادم والمفاتيح المُدارة بواسطة العميل بنفس المفاتيح المُدارة من قِبل العميل.
- يجب أن تكون معظم الموارد المتعلقة بالمفاتيح المُدارة بواسطة العميل (مجموعات تشفير الأقراص والأجهزة الظاهرية والأقراص والنسخ المطابقة) في نفس الاشتراك والمنطقة.
- يمكن استخدام مخازن Azure Key من اشتراك مختلف ولكن يجب أن يكون في نفس المنطقة والمستأجر مثل مجموعة تشفير القرص.
- لا يمكن نقل الأقراص والنسخ المطابقة والصور المشفرة باستخدام مفاتيح مُدارة بواسطة العميل إلى مجموعة موارد أخرى واشتراك.
- لا يمكن تشفير الأقراص المُدارة حاليًا أو المُشفرة مسبقًا باستخدام تشفير قرص Azure ولا باستخدام مفاتيح مُدارة بواسطة العميل.
- يمكن فقط إنشاء ما يصل إلى 1000 مجموعة تشفير قرص لكل منطقة ولكل اشتراك.
- للحصول على معلومات حول استخدام المفاتيح المُدارة بواسطة العميل مع معارض الصور المشتركة، راجع معاينة: استخدام المفاتيح المُدارة بواسطة العميل لتشفير الصور.
إعداد Azure Key Vault وDiskEncryptionSet اختياريًا باستخدام التدوير التلقائي للمفاتيح
لاستخدام المفاتيح المُدارة بواسطة العميل مع SSE، يجب إعداد Azure Key Vault ومورد DiskEncryptionSet.
تأكد من تثبيت أحدث إصدار من Azure PowerShell، ومن تسجيل الدخول إلى حساب Azure باستخدام Connect-AzAccount
أنشئ مثيل من 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أنشئ مثيل DiskEncryptionSet. يمكنك تعيين RotationToLatestKeyVersionEnabled يساوي $true لتمكين التدوير التلقائي للمفتاح. عند تمكين التدوير التلقائي، سيقوم النظام تلقائيًا بتحديث جميع الأقراص والنسخ المطابقة والصور المُدارة التي تشير إلى مجموعة تشفير القرص لاستخدام الإصدار الجديد من المفتاح في غضون ساعة واحدة.
$desConfig=New-AzDiskEncryptionSetConfig -Location $LocationName ` -SourceVaultId $keyVault.ResourceId ` -KeyUrl $key.Key.Kid ` -IdentityType SystemAssigned ` -RotationToLatestKeyVersionEnabled $false $des=New-AzDiskEncryptionSet -Name $diskEncryptionSetName ` -ResourceGroupName $ResourceGroupName ` -InputObject $desConfigامنح المورد DiskEncryptionSet حق الوصول إلى مخزن المفاتيح.
ملاحظة
قد يستغرق Azure بضع دقائق لإنشاء هوية DiskEncryptionSet في Azure Active Directory. إذا تلقيت خطأ مثل "لا يمكن العثور على عنصر Active Directory" عند تشغيل الأمر التالي، فانتظر بضع دقائق وحاول مرة أخرى.
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
استخدام مخزن مفاتيح في اشتراك مختلف
بدلاً من ذلك، يمكنك إدارة مخازن Azure Key مركزيًا من اشتراك واحد، واستخدام المفاتيح المخزنة في 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 $false
$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، وتشفير نظام التشغيل وأقراص البيانات باستخدام مفاتيح مُدارة بواسطة العميل
انسخ البرنامج النصي، واستبدل كافة قيم الأمثلة بالمعلمات الخاصة بك، ثم قم بتشغيله.
$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'
$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، وهي إحدى ميزات Azure Active Directory (Azure AD). عندما تقوم بتكوين المفاتيح المُدارة بواسطة العميل، يتم تعيين هوية مُدارة تلقائيًا لمواردك ضمن الأغلفة. إذا قمت بعد ذلك بنقل الاشتراك أو مجموعة الموارد أو القرص المُدار من دليل Azure AD إلى دليل آخر، فلن يتم نقل الهوية المُدارة المرتبطة بالأقراص المُدارة إلى المستأجر الجديد، لذلك قد لا تعمل المفاتيح المُدارة بواسطة العميل. لمزيد من المعلومات، راجع نقل اشتراك بين دلائل Azure AD.
الخطوات التالية
- استكشاف قوالب Azure Resource Manager لإنشاء أقراص مشفرة باستخدام مفاتيح مُدارة بواسطة العميل
- النسخ المتماثل للأجهزة باستخدام الأقراص الممكّنة للمفاتيح المُدارة بواسطة العميل
- إعداد الإصلاح بعد كارثة من الأجهزة الظاهرية VMware إلى Azure باستخدام PowerShell
- إعداد الإصلاح بعد كارثة لـ Azure وللأجهزة الظاهرية Hyper-V باستخدام PowerShell وAzure Resource Manager