التحقق من حالة التشفير لنظام التشغيل 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.
هناك طريقة أخرى للتحقق من صحة حالة التشفير وهي من خلال النظر إلى قسم إعدادات القرص.
إشعار
تعني هذه الحالة أن الأقراص تحتوي على إعدادات تشفير مختومة، وليس أنها مشفرة بالفعل على مستوى نظام التشغيل.
حسب التصميم، يتم ختم الأقراص أولًا وتشفيرها لاحقًا. إذا فشلت عملية التشفير، فقد ينتهي الأمر بالأقراص مختومة ولكن غير مشفرة.
للتأكد مما إذا كانت الأقراص مشفرة حقًا، يمكنك التحقق مرة أخرى من تشفير كل قرص على مستوى نظام التشغيل.
PowerShell
يمكنك التحقق من صحة حالة التشفير العامة لجهاز ظاهري مشفر باستخدام أوامر PowerShell التالية:
$VMNAME="VMNAME"
$RGNAME="RGNAME"
Get-AzVmDiskEncryptionStatus -ResourceGroupName ${RGNAME} -VMName ${VMNAME}
يمكنك التقاط إعدادات التشفير من كل قرص باستخدام أوامر 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 التالية:
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
يمكنك أيضاً التحقق من إعدادات التشفير على ملف تعريف 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
الأقراص غير المرفقة
تحقق من إعدادات التشفير للأقراص غير المتصلة بجهاز ظاهري.
مقابل الأقراص المُدارة
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