مشاركة عبر


التحقق من حالة التشفير لنظام التشغيل Linux

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

نطاق هذه المقالة هو التحقق من صحة حالة تشفير جهاز ظاهري باستخدام طرق مختلفة: مدخل Microsoft Azure أو PowerShell أو Azure CLI أو نظام تشغيل الجهاز الظاهري (VM).

يمكنك التحقق من صحة حالة التشفير أثناء التشفير أو بعده، عن طريق:

  • التحقق من الأقراص المرفقة بجهاز ظاهري معين.
  • الاستعلام عن إعدادات التشفير على كل قرص، سواء كان القرص متصلًا أو غير متصل.

ينطبق هذا السيناريو على Azure Disk Encryption لامتدادات تمرير مزدوج وتمرير واحد. توزيعات Linux هي البيئة الوحيدة لهذا السيناريو.

إشعار

نحن نستخدم المتغيرات خلال جميع أجزاء المقالة. استبدل القيم وفقًا لذلك.

المدخل

في مدخل Microsoft Azure، داخل قسم الملحقات، حدد ملحق Azure Disk Encryption في القائمة. تشير معلومات رسالة الحالة إلى حالة التشفير الحالية:

التحقق من المدخل مع تمييز الحالة والإصدار ورسالة الحالة

في قائمة الإضافات، سترى إصدار ملحق Azure Disk Encryption المقابل. يتوافق الإصدار 0.x مع Azure Disk Encryption مزدوج التمرير، ويتوافق الإصدار 1.x مع Azure Disk Encryption فردي التمرير.

يمكنك الحصول على مزيد من التفاصيل عن طريق تحديد الإضافة ثم تحديد عرض الحالة التفصيلية. تظهر الحالة التفصيلية لعملية التشفير بتنسيق JSON.

التحقق من المدخل مع تمييز الارتباط

الحالة التفصيلية بتنسيق JSON

هناك طريقة أخرى للتحقق من صحة حالة التشفير وهي من خلال النظر إلى قسم إعدادات القرص.

حالة التشفير لقرص نظام التشغيل وأقراص البيانات

إشعار

تعني هذه الحالة أن الأقراص تحتوي على إعدادات تشفير مختومة، وليس أنها مشفرة بالفعل على مستوى نظام التشغيل.

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

للتأكد مما إذا كانت الأقراص مشفرة حقًا، يمكنك التحقق مرة أخرى من تشفير كل قرص على مستوى نظام التشغيل.

PowerShell

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

   $VMNAME="VMNAME"
   $RGNAME="RGNAME"
   Get-AzVmDiskEncryptionStatus -ResourceGroupName  ${RGNAME} -VMName ${VMNAME}

حالة التشفير العام في PowerShell

يمكنك التقاط إعدادات التشفير من كل قرص باستخدام أوامر PowerShell التالية.

فردي التمرير

في فردي التمرير، يتم ختم إعدادات التشفير على كل قرص من الأقراص (نظام التشغيل والبيانات). يمكنك التقاط إعدادات التشفير لقرص نظام التشغيل في فردي التمرير على النحو التالي:

$RGNAME = "RGNAME"
$VMNAME = "VMNAME"

$VM = Get-AzVM -Name ${VMNAME} -ResourceGroupName ${RGNAME}
 $Sourcedisk = Get-AzDisk -ResourceGroupName ${RGNAME} -DiskName $VM.StorageProfile.OsDisk.Name
 Write-Host "============================================================================================================================================================="
 Write-Host "Encryption Settings:"
 Write-Host "============================================================================================================================================================="
 Write-Host "Enabled:" $Sourcedisk.EncryptionSettingsCollection.Enabled
 Write-Host "Version:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettingsVersion
 Write-Host "Source Vault:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SourceVault.Id
 Write-Host "Secret URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SecretUrl
 Write-Host "Key URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.KeyEncryptionKey.KeyUrl
 Write-Host "============================================================================================================================================================="

إعدادات التشفير لقرص نظام التشغيل

إذا لم يكن القرص يحتوي على إعدادات تشفير مختومة، فسيكون الإخراج فارغًا:

إخراج فارغ

استخدم الأوامر التالية لالتقاط إعدادات التشفير لأقراص البيانات:

$RGNAME = "RGNAME"
$VMNAME = "VMNAME"

$VM = Get-AzVM -Name ${VMNAME} -ResourceGroupName ${RGNAME}
 clear
 foreach ($i in $VM.StorageProfile.DataDisks|ForEach-Object{$_.Name})
 {
 Write-Host "============================================================================================================================================================="
 Write-Host "Encryption Settings:"
 Write-Host "============================================================================================================================================================="
 Write-Host "Checking Disk:" $i
 $Disk=(Get-AzDisk -ResourceGroupName ${RGNAME} -DiskName $i)
 Write-Host "Encryption Enable: " $Sourcedisk.EncryptionSettingsCollection.Enabled
 Write-Host "Encryption KeyEncryptionKey: " $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.KeyEncryptionKey.KeyUrl;
 Write-Host "Encryption DiskEncryptionKey: " $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SecretUrl;
 Write-Host "============================================================================================================================================================="
 }

إعدادات التشفير لأقراص البيانات

مزدوج التمرير

في مزدوج التمرير، يتم ختم إعدادات التشفير في طراز VM وليس على كل قرص على حدة.

للتحقق من أن إعدادات التشفير مختومة في مزدوج التمرير، استخدم الأوامر التالية:

$RGNAME = "RGNAME"
$VMNAME = "VMNAME"

$vm = Get-AzVm -ResourceGroupName ${RGNAME} -Name ${VMNAME};
$Sourcedisk = Get-AzDisk -ResourceGroupName ${RGNAME} -DiskName $VM.StorageProfile.OsDisk.Name
clear
Write-Host "============================================================================================================================================================="
Write-Host "Encryption Settings:"
Write-Host "============================================================================================================================================================="
Write-Host "Enabled:" $Sourcedisk.EncryptionSettingsCollection.Enabled
Write-Host "Version:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettingsVersion
Write-Host "Source Vault:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SourceVault.Id
Write-Host "Secret URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SecretUrl
Write-Host "Key URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.KeyEncryptionKey.KeyUrl
Write-Host "============================================================================================================================================================="

الأقراص غير المرفقة

تحقق من إعدادات التشفير للأقراص غير المتصلة بجهاز ظاهري.

مقابل الأقراص المُدارة

$Sourcedisk = Get-AzDisk -ResourceGroupName ${RGNAME} -DiskName ${TARGETDISKNAME}
Write-Host "============================================================================================================================================================="
Write-Host "Encryption Settings:"
Write-Host "============================================================================================================================================================="
Write-Host "Enabled:" $Sourcedisk.EncryptionSettingsCollection.Enabled
Write-Host "Version:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettingsVersion
Write-Host "Source Vault:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SourceVault.Id
Write-Host "Secret URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.DiskEncryptionKey.SecretUrl
Write-Host "Key URL:" $Sourcedisk.EncryptionSettingsCollection.EncryptionSettings.KeyEncryptionKey.KeyUrl
Write-Host "============================================================================================================================================================="

Azure CLI

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

VMNAME="VMNAME"
RGNAME="RGNAME"
az vm encryption show --name ${VMNAME} --resource-group ${RGNAME} --query "substatus"

حالة التشفير العامة من Azure CLI

فردي التمرير

يمكنك التحقق من صحة إعدادات التشفير لكل قرص باستخدام أوامر Azure CLI التالية:

az vm encryption show -g ${RGNAME} -n ${VMNAME} --query "disks[*].[name, statuses[*].displayStatus]"  -o table

إعدادات تشفير البيانات

هام

إذا لم يكن القرص يحتوي على إعدادات تشفير مختومة، فسترى النص القرص غير مشفر.

استخدم الأوامر التالية للحصول على إعدادات مفصلة للحالة والتشفير.

قرص نظام التشغيل

RGNAME="RGNAME"
VMNAME="VNAME"

disk=`az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.osDisk.name -o tsv`
for disk in $disk; do \
echo "============================================================================================================================================================="
echo -ne "Disk Name: "; az disk show -g ${RGNAME} -n ${disk} --query name -o tsv; \
echo -ne "Encryption Enabled: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.enabled -o tsv; \
echo -ne "Version: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettingsVersion -o tsv; \
echo -ne "Disk Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].diskEncryptionKey.secretUrl -o tsv; \
echo -ne "key Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].keyEncryptionKey.keyUrl -o tsv; \
echo "============================================================================================================================================================="
done

إعدادات الحالة والتشفير التفصيلية لقرص نظام التشغيل

أقراص البيانات:

RGNAME="RGNAME"
VMNAME="VMNAME"
az vm encryption show --name ${VMNAME} --resource-group ${RGNAME} --query "substatus"

for disk in `az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.dataDisks[].name -o tsv`; do \
echo "============================================================================================================================================================="; \
echo -ne "Disk Name: "; az disk show -g ${RGNAME} -n ${disk} --query name -o tsv; \
echo -ne "Encryption Enabled: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.enabled -o tsv; \
echo -ne "Version: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettingsVersion -o tsv; \
echo -ne "Disk Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].diskEncryptionKey.secretUrl -o tsv; \
echo -ne "key Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].keyEncryptionKey.keyUrl -o tsv; \
echo "============================================================================================================================================================="
done

إعدادات الحالة والتشفير التفصيلية لأقراص البيانات

مزدوج التمرير

az vm encryption show --name ${VMNAME} --resource-group ${RGNAME} -o table

إعدادات التشفير العامة للتمرير المزدوج عبر Azure CLI

يمكنك أيضاً التحقق من إعدادات التشفير على ملف تعريف VM Model Storage لقرص نظام التشغيل:

disk=`az vm show -g ${RGNAME} -n ${VMNAME} --query storageProfile.osDisk.name -o tsv`
for disk in $disk; do \
echo "============================================================================================================================================================="; \
echo -ne "Disk Name: "; az disk show -g ${RGNAME} -n ${disk} --query name -o tsv; \
echo -ne "Encryption Enabled: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.enabled -o tsv; \
echo -ne "Version: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettingsVersion -o tsv; \
echo -ne "Disk Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].diskEncryptionKey.secretUrl -o tsv; \
echo -ne "key Encryption Key: "; az disk show -g ${RGNAME} -n ${disk} --query encryptionSettingsCollection.encryptionSettings[].keyEncryptionKey.keyUrl -o tsv; \
echo "============================================================================================================================================================="
done

ملف تعريف الجهاز الظاهري للتمرير المزدوج عبر Azure CLI

الأقراص غير المرفقة

تحقق من إعدادات التشفير للأقراص غير المتصلة بجهاز ظاهري.

مقابل الأقراص المُدارة

RGNAME="RGNAME"
TARGETDISKNAME="DISKNAME"
echo "============================================================================================================================================================="
echo -ne "Disk Name: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query name -o tsv; \
echo -ne "Encryption Enabled: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.enabled -o tsv; \
echo -ne "Version: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettingsVersion -o tsv; \
echo -ne "Disk Encryption Key: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettings[].diskEncryptionKey.secretUrl -o tsv; \
echo -ne "key Encryption Key: "; az disk show -g ${RGNAME} -n ${TARGETDISKNAME} --query encryptionSettingsCollection.encryptionSettings[].keyEncryptionKey.keyUrl -o tsv; \
echo "============================================================================================================================================================="

الأقراص غير المدارة

الأقراص غير المُدارة هي ملفات VHD التي يتم تخزينها كـ كائنات ثنائية كبيرة الحجم للصفحات في حسابات تخزين Azure.

للحصول على تفاصيل قرص معين، تحتاج إلى توفير:

  • معرف حساب التخزين الذي يحتوي على القرص.
  • سلسلة اتصال لحساب التخزين المحدد هذا.
  • اسم الحاوية التي تخزن القرص.
  • اسم القرص.

يسرد هذا الأمر كافة المعرفات لجميع حسابات التخزين الخاصة بك:

az storage account list --query [].[id] -o tsv

يتم سرد معرفات حساب التخزين في النموذج التالي:

/الاشتراكات/<معرف> الاشتراك/مجموعات الموارد/اسم مجموعة الموارد/الموفرين/Microsoft.Storage/حسابات التخزين/<>اسم< حساب التخزين>

حدد المعرف المناسب وقم بتخزينه على متغير:

id="/subscriptions/<subscription id>/resourceGroups/<resource group name>/providers/Microsoft.Storage/storageAccounts/<storage account name>"

يحصل هذا الأمر على سلسلة الاتصال لحساب تخزين معين ويخزنها على متغير:

ConnectionString=$(az storage account show-connection-string --ids $id --query connectionString -o tsv)

يسرد الأمر التالي كافة الحاويات ضمن حساب تخزين:

az storage container list --connection-string $ConnectionString --query [].[name] -o tsv

عادةً ما تسمى الحاوية المستخدمة للأقراص "vhds".

تخزين اسم الحاوية على متغير:

ContainerName="name of the container"

استخدم هذا الأمر لسرد كافة النقاط الموجودة على حاوية معينة:

az storage blob list -c ${ContainerName} --connection-string $ConnectionString --query [].[name] -o tsv

اختر القرص الذي تريد الاستعلام عنه وقم بتخزين اسمه على متغير:

DiskName="diskname.vhd"

الاستعلام عن إعدادات تشفير القرص:

az storage blob show -c ${ContainerName} --connection-string ${ConnectionString} -n ${DiskName} --query metadata.DiskEncryptionSettings

نظام التشغيل

تحقق من صحة ما إذا كانت أقسام قرص البيانات مشفرة (ولم يكن قرص نظام التشغيل مشفرًا).

عندما يتم تشفير قسم أو قرص، يتم عرضه كنوع سرد مشفر. عندما لا يكون مشفرًا، يتم عرضه كنوع جزء/قرص.

sudo lsblk

طبقة تشفير نظام التشغيل لقسم

يمكنك الحصول على مزيد من التفاصيل باستخدام متغير lsblk التالي.

سترى طبقة نوع تشفير مثبتة بواسطة الامتداد. يوضح المثال التالي وحدات التخزين المنطقية والأقراص العادية التي تحتوي على crypto_LUKS FSTYPE.

sudo lsblk -o NAME,TYPE,FSTYPE,LABEL,SIZE,RO,MOUNTPOINT

طبقة تشفير نظام التشغيل لوحدات التخزين المنطقية والأقراص العادية

كخطوة إضافية، يمكنك التحقق مما إذا كان قرص البيانات يحتوي على أي مفاتيح تم تحميلها:

sudo cryptsetup luksDump /dev/VGNAME/LVNAME
sudo cryptsetup luksDump /dev/sdd1

ويمكنك التحقق من أجهزة dm المدرجة كجزء مشفر:

sudo dmsetup ls --target crypt

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