استخدم Azure CLI لتمكين التشفير من طرف إلى طرف باستخدام التشفير في المضيف

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

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

القيود

  • لا يدعم الأقراص الفائقة.
  • لا يمكن تمكينه إذا تم تمكين تشفير قرص Azure (تشفير الضيف VM باستخدام bitlocker/DM-Crypt) في مجموعات قياسات الجهاز الظاهري/الأجهزة الظاهرية.
  • لا يمكن تمكين تشفير قرص Azure على الأقراص التي تم تمكين التشفير عند المضيف.
  • يمكن تمكين التشفير على مجموعة مقياس آلة ظاهرية موجودة. ومع ذلك، يتم تشفير الأجهزة الظاهرية الجديدة التي تم إنشاؤها بعد تمكين التشفير تلقائياً.
  • يجب إلغاء تخصيص الأجهزة الظاهرية الحالية وإعادة تخصيصها من أجل تشفيرها.
  • يدعم أقراص نظام التشغيل المؤقتة ولكن فقط باستخدام المفاتيح المُدارة بواسطة النظام الأساسي.

أحجام الأجهزة الظاهرية المدعمة

يمكن سحب القائمة الكاملة لأحجام الأجهزة الظاهرية المدعومة برمجياً. لمعرفة كيفية استردادها برمجياً، راجع قسم البحث عن أحجام الأجهزة الظاهرية المدعومة. ستؤدي ترقية حجم الجهاز الظاهري إلى التحقق مما إذا كان حجم الجهاز الظاهري الجديد يدعم ميزة EncryptionAtHost.

المتطلبات الأساسية

يجب عليك تمكين الميزة لاشتراكك قبل استخدام خاصية EncryptionAtHost لجهاز VM/VMSS الخاص بك. استخدم الخطوات التالية لتمكين الميزة لاشتراكك:

  • قم بتنفيذ الأمر التالي لتسجيل الميزة لاشتراكك
az feature register --namespace Microsoft.Compute --name EncryptionAtHost
  • تأكد من أن حالة التسجيل مسجلة (يستغرق بضع دقائق) باستخدام الأمر أدناه قبل تجربة الميزة.
az feature show --namespace Microsoft.Compute --name EncryptionAtHost

إنشاء موارد

بمجرد تمكين الميزة، ستحتاج إلى إعداد DiskEncryptionSet وإما Azure Key Vault أو Azure Key Vault Managed HSM.

Azure Key Vault

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

هام

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

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName

az account set --subscription $subscriptionId

az keyvault create -n $keyVaultName \
-g $rgName \
-l $location \
--enable-purge-protection true 
                    
az keyvault key create --vault-name $keyVaultName \
-n $keyName \
--protection software
  • قم بإنشاء DiskEncryptionSet. يمكنك تعيين استدارة المفتاح التلقائي بحيث تساوي "صواب" لتمكين التدوير التلقائي للمفتاح. عند تمكين التدوير التلقائي، سيقوم النظام تلقائياً بتحديث جميع الأقراص واللقطات والصور المُدارة التي تشير إلى مجموعة تشفير القرص لاستخدام الإصدار الجديد من المفتاح في غضون ساعة واحدة.
keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)

az disk-encryption-set create -n $diskEncryptionSetName 
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false
  • امنح مورد DiskEncryptionSet حق الوصول إلى مخزن المفاتيح.

ملاحظة

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

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)

az keyvault set-policy -n $keyVaultName \
-g $rgName \
--object-id $desIdentity \
--key-permissions wrapkey unwrapkey get

Azure Key Vault Managed HSM

بدلاً من ذلك، يمكنك استخدام HSM مُدار للتعامل مع المفاتيح الخاصة بك.

للقيام بذلك، يجب عليك إكمال المتطلبات الأساسية التالية:

تكوين

بمجرد إنشاء HSM مُدار وإضافة الأذونات، قم بتمكين الحماية من التطهير وإنشاء مفتاح تشفير.

subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=westcentralus
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
    
az account set --subscription $subscriptionId
    
az keyvault update-hsm --subscription $subscriptionId -g $rgName --hsm-name $keyVaultName --enable-purge-protection true
    
az keyvault key create --hsm-name  $keyVaultName --name $keyName --ops wrapKey unwrapKey --kty RSA-HSM --size 2048

ثم قم بإنشاء DiskEncryptionSet.

keyVaultKeyUrl=$(az keyvault key show --vault-name $keyVaultName --name $keyName --query [key.kid] -o tsv)
    
az disk-encryption-set create -n $diskEncryptionSetName 
-l $location \
-g $rgName \
--key-url $keyVaultKeyUrl \
--enable-auto-key-rotation false

أخيراً، امنح DiskEncryptionSet الوصول إلى Managed HSM.

desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
    
az keyvault role assignment create --hsm-name $keyVaultName --role "Managed HSM Crypto Service Encryption User" --assignee $desIdentity --scope /keys

أمثلة

قم بإنشاء جهاز ظاهري مع التشفير في المضيف الذي تم تمكينه بمفاتيح يديرها العميل.

قم بإنشاء جهاز ظاهري باستخدام الأقراص المُدارة باستخدام URI للمورد الخاص بـ DiskEncryptionSet الذي تم إنشاؤه مسبقاً لتشفير ذاكرة التخزين المؤقت لنظام التشغيل وأقراص البيانات باستخدام مفاتيح يديرها العميل. يتم تشفير الأقراص المؤقتة باستخدام مفاتيح مُدارة بواسطة النظام الأساسي.

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=UbuntuLTS 
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 128 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

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

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

rgName=yourRGName
vmName=yourVMName
location=eastus
vmSize=Standard_DS2_v2
image=UbuntuLTS 

az vm create -g $rgName \
-n $vmName \
-l $location \
--encryption-at-host \
--image $image \
--size $vmSize \
--generate-ssh-keys \
--data-disk-sizes-gb 128 128 \

قم بتحديث جهاز ظاهري لتمكين التشفير عند المضيف.

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=true

تحقق من حالة التشفير في المضيف من أجل جهاز ظاهري

rgName=yourRGName
vmName=yourVMName

az vm show -n $vmName \
-g $rgName \
--query [securityProfile.encryptionAtHost] -o tsv

قم بتحديث جهاز ظاهري لتعطيل التشفير عند المضيف.

يجب عليك إلغاء تخصيص الجهاز الظاهري الخاص بك قبل أن تتمكن من تعطيل التشفير في المضيف.

rgName=yourRGName
vmName=yourVMName

az vm update -n $vmName \
-g $rgName \
--set securityProfile.encryptionAtHost=false

قم بإنشاء مقياس آلة ظاهري تم تعيينه مع التشفير في المضيف الذي تم تمكينه باستخدام مفاتيح يديرها العميل.

قم بإنشاء مقياس جهاز ظاهري تم تعيينه باستخدام الأقراص المُدارة باستخدام URI للمورد الخاص بـ DiskEncryptionSet الذي تم إنشاؤه مسبقاً لتشفير ذاكرة التخزين المؤقت لنظام التشغيل وأقراص البيانات باستخدام مفاتيح يديرها العميل. يتم تشفير الأقراص المؤقتة باستخدام مفاتيح مُدارة بواسطة النظام الأساسي.

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=UbuntuLTS 
diskEncryptionSetName=yourDiskEncryptionSetName

diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image UbuntuLTS \
--upgrade-policy automatic \
--admin-username azureuser \
--generate-ssh-keys \
--os-disk-encryption-set $diskEncryptionSetId \
--data-disk-sizes-gb 64 128 \
--data-disk-encryption-sets $diskEncryptionSetId $diskEncryptionSetId

قم بإنشاء مقياس آلة ظاهري تم تعيينه مع التشفير في المضيف الذي تم تمكينه باستخدام مفاتيح تُدار بواسطة النظام الأساسي.

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

rgName=yourRGName
vmssName=yourVMSSName
location=westus2
vmSize=Standard_DS3_V2
image=UbuntuLTS 

az vmss create -g $rgName \
-n $vmssName \
--encryption-at-host \
--image UbuntuLTS \
--upgrade-policy automatic \
--admin-username azureuser \
--generate-ssh-keys \
--data-disk-sizes-gb 64 128 \

قم بتحديث مقياس جهاز ظاهري تم تعيينه لتمكين التشفير عند المضيف.

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=true

تحقق من حالة التشفير في المضيف لمجموعة مقياس آلة ظاهرية

rgName=yourRGName
vmssName=yourVMName

az vmss show -n $vmssName \
-g $rgName \
--query [virtualMachineProfile.securityProfile.encryptionAtHost] -o tsv

قم بتحديث مقياس جهاز ظاهري تم تعيينه لتعطيل التشفير عند المضيف.

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

rgName=yourRGName
vmssName=yourVMName

az vmss update -n $vmssName \
-g $rgName \
--set virtualMachineProfile.securityProfile.encryptionAtHost=false

البحث عن أحجام الجهاز الظاهري المدعومة

لا يتم دعم أحجام الأجهزة الظاهرية القديمة. يمكنك العثور على قائمة أحجام الأجهزة الظاهرية المدعومة إما عن طريق:

استدعاء Resource Skus API والتحقق من تعيين إمكانية EncryptionAtHostSupported على True.

    {
        "resourceType": "virtualMachines",
        "name": "Standard_DS1_v2",
        "tier": "Standard",
        "size": "DS1_v2",
        "family": "standardDSv2Family",
        "locations": [
        "CentralUSEUAP"
        ],
        "capabilities": [
        {
            "name": "EncryptionAtHostSupported",
            "value": "True"
        }
        ]
    }

أو استدعاء الأمر Get-AzComputeResourceSku PowerShell.

$vmSizes=Get-AzComputeResourceSku | where{$_.ResourceType -eq 'virtualMachines' -and $_.Locations.Contains('CentralUSEUAP')} 

foreach($vmSize in $vmSizes)
{
    foreach($capability in $vmSize.capabilities)
    {
        if($capability.Name -eq 'EncryptionAtHostSupported' -and $capability.Value -eq 'true')
        {
            $vmSize

        }

    }
}

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

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

نماذج قالب Azure Resource Manager