إنشاء وتوفير أجهزة IoT Edge على نطاق واسع باستخدام TPM على Linux
ينطبق على: IoT Edge 1.4
هام
IoT Edge 1.4 هو الإصدار المدعوم. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.
توفر هذه المقالة إرشادات للتزويد التلقائي لجهاز Azure IoT Edge لنظام Linux باستخدام وحدة نمطية للنظام الأساسي الموثوق به (TPM). يمكنك توفير أجهزة IoT Edge تلقائيا مع خدمة توفير جهاز Azure IoT Hub. إذا لم تكن على دراية بعملية التوفير التلقائي، فراجع نظرة عامة على التوفير قبل المتابعة.
توضح هذه المقالة منهجيتين. حدد تفضيلك استنادا إلى بنية الحل الخاص بك:
- التزويد التلقائي لجهاز Linux مع أجهزة TPM الفعلية.
- التزويد التلقائي لجهاز Linux الظاهري (VM) مع TPM محاكاة يعمل على جهاز تطوير Windows مع تمكين Hyper-V. نوصي باستخدام هذه المنهجية فقط كسيناريو اختبار. لا يوفر TPM المحاكي نفس الأمان مثل TPM الفعلي.
تختلف الإرشادات بناء على منهجيتك، لذا تأكد من أنك في علامة التبويب الصحيحة من الآن فصاعدا.
المهام هي كما يلي:
- استرداد معلومات التوفير ل TPM الخاص بك.
- إنشاء تسجيل فردي لجهازك في مثيل خدمة توفير جهاز IoT Hub.
- تثبيت وقت تشغيل IoT Edge وتوصيل الجهاز بمركز IoT.
المتطلبات الأساسية
موارد السحابة
- مركز IoT نشط
- مثيل لخدمة توفير جهاز IoT Hub في Azure، مرتبط بمركز IoT الخاص بك
- إذا لم يكن لديك مثيل خدمة تزويد الجهاز، يمكنك اتباع الإرشادات الواردة في إنشاء خدمة توفير جهاز IoT Hub جديدة وربط مركز IoT وأقسام خدمة تزويد الجهاز في التشغيل السريع لخدمة توفير جهاز IoT Hub.
- بعد تشغيل خدمة توفير الجهاز، انسخ قيمة نطاق المعرف من صفحة النظرة العامة. يمكنك استخدام هذه القيمة عند تكوين وقت تشغيل IoT Edge.
متطلبات الجهاز
جهاز Linux فعلي ليكون جهاز IoT Edge.
إذا كنت شركة مصنعة للجهاز، فراجع إرشادات حول دمج TPM في عملية التصنيع.
إشعار
مطلوب TPM 2.0 عند استخدام إثبات TPM مع خدمة توفير الجهاز.
يمكنك فقط إنشاء عمليات تسجيل فردية، وليس جماعية، لتسجيلات خدمة توفير الجهاز عند استخدام TPM.
إعداد جهازك
إذا كنت تستخدم جهاز Linux فعلي مع TPM، فلا توجد خطوات إضافية لإعداد جهازك.
أنت مستعد للمتابعة.
استرداد معلومات التوفير ل TPM الخاص بك
إشعار
استخدمت tpm_device_provision
هذه المقالة مسبقا الأداة من IoT C SDK لإنشاء معلومات التزويد. إذا كنت تعتمد على هذه الأداة مسبقا، فكن على دراية بالخطوات أدناه لإنشاء معرف تسجيل مختلف لنفس مفتاح المصادقة العام. إذا كنت بحاجة إلى إعادة إنشاء معرف التسجيل كما كان من قبل، فراجع كيفية إنشاء أداة tpm_device_provision C SDK له. تأكد من أن معرف التسجيل للتسجيل الفردي في DPS يطابق معرف التسجيل الذي تم تكوين جهاز IoT Edge لاستخدامه.
في هذا القسم، يمكنك استخدام أدوات برنامج TPM2 لاسترداد مفتاح المصادقة ل TPM الخاص بك ثم إنشاء معرف تسجيل فريد. يتوافق هذا القسم مع الخطوة 3: يحتوي الجهاز على برامج ثابتة وبرامج مثبتة في عملية دمج TPM في عملية التصنيع.
تثبيت أدوات TPM2
سجل الدخول إلى جهازك، وقم بتثبيت الحزمة tpm2-tools
.
sudo apt-get install tpm2-tools
قم بتشغيل البرنامج النصي التالي لقراءة مفتاح المصادقة، وإنشاء واحد إذا لم يكن موجودا بالفعل.
#!/bin/sh
if [ "$USER" != "root" ]; then
SUDO="sudo "
fi
$SUDO tpm2_readpublic -Q -c 0x81010001 -o ek.pub 2> /dev/null
if [ $? -gt 0 ]; then
# Create the endorsement key (EK)
$SUDO tpm2_createek -c 0x81010001 -G rsa -u ek.pub
# Create the storage root key (SRK)
$SUDO tpm2_createprimary -Q -C o -c srk.ctx > /dev/null
# make the SRK persistent
$SUDO tpm2_evictcontrol -c srk.ctx 0x81000001 > /dev/null
# open transient handle space for the TPM
$SUDO tpm2_flushcontext -t > /dev/null
fi
printf "Gathering the registration information...\n\nRegistration Id:\n%s\n\nEndorsement Key:\n%s\n" $(sha256sum -b ek.pub | cut -d' ' -f1 | sed -e 's/[^[:alnum:]]//g') $(base64 -w0 ek.pub)
$SUDO rm ek.pub srk.ctx 2> /dev/null
تعرض نافذة الإخراج مفتاح المصادقة الخاص بالجهاز ومعرف تسجيل فريد. انسخ هذه القيم لاستخدامها لاحقا عند إنشاء تسجيل فردي لجهازك في خدمة توفير الجهاز.
بعد أن يكون لديك معرف التسجيل ومفتاح المصادقة، تكون مستعدا للمتابعة.
تلميح
إذا كنت لا تريد استخدام أدوات برنامج TPM2 لاسترداد المعلومات، فستحتاج إلى العثور على طريقة أخرى للحصول على معلومات التوفير. يتم الحصول على مفتاح المصادقة، الفريد لكل شريحة TPM، من الشركة المصنعة لرقاقة TPM المرتبطة بها. يمكنك اشتقاق معرف تسجيل فريد لجهاز TPM الخاص بك. على سبيل المثال، كما هو موضح أعلاه، يمكنك إنشاء تجزئة SHA-256 لمفتاح المصادقة.
إنشاء تسجيل خدمة توفير الجهاز
استخدم معلومات التوفير الخاصة ب TPM لإنشاء تسجيل فردي في خدمة توفير الجهاز.
عند إنشاء تسجيل في خدمة تزويد الجهاز، لديك الفرصة للإعلان عن حالة الجهاز المزدوج الأولية. في الجهاز المزدوج، يمكنك تعيين علامات لتجميع الأجهزة حسب أي مقياس مستخدم في الحل الخاص بك، مثل المنطقة أو البيئة أو الموقع أو نوع الجهاز. يتم استخدام هذه العلامات لإنشاء عمليات نشر تلقائية.
تلميح
الخطوات الواردة في هذه المقالة مخصصة لمدخل Azure، ولكن يمكنك أيضا إنشاء عمليات تسجيل فردية باستخدام Azure CLI. لمزيد من المعلومات، راجع تسجيل az iot dps. كجزء من أمر CLI، استخدم العلامة الممكنة للحافة لتحديد أن التسجيل لجهاز IoT Edge.
في مدخل Microsoft Azure، انتقل إلى مثيل خدمة توفير جهاز IoT Hub.
ضمن الإعدادات، حدد إدارة التسجيلات.
حدد Add individual enrollment، ثم أكمل الخطوات التالية لتكوين التسجيل:
بالنسبة إلى آلية، حدد TPM.
قم بتوفير مفتاح المصادقة ومعرف التسجيل الذي نسخته من الجهاز الظاهري أو الجهاز الفعلي.
قم بتوفير معرف لجهازك إذا أردت ذلك. إذا لم توفر معرف جهاز، يتم استخدام معرف التسجيل.
حدد True للإعلان عن أن الجهاز الظاهري أو الجهاز الفعلي هو جهاز IoT Edge.
اختر مركز IoT المرتبط الذي تريد توصيل جهازك به، أو حدد رابط إلى IoT Hub الجديد. يمكنك اختيار مراكز متعددة، وسيتم تعيين الجهاز لأحدها وفقا لنهج التعيين المحدد.
أضف قيمة علامة إلى حالة الجهاز المزدوج الأولي إذا كنت تريد ذلك. يمكنك استخدام العلامات لاستهداف مجموعات من الأجهزة لنشر الوحدة النمطية. لمزيد من المعلومات، راجع نشر وحدات IoT Edge النمطية على نطاق واسع.
حدد حفظ.
الآن بعد وجود تسجيل لهذا الجهاز، يمكن لوقت تشغيل IoT Edge توفير الجهاز تلقائيا أثناء التثبيت.
تثبيت IoT Edge
في هذا القسم، يمكنك إعداد جهاز Linux الظاهري أو الجهاز الفعلي ل IoT Edge. بعد ذلك، يمكنك تثبيت IoT Edge.
قم بتشغيل الأوامر التالية لإضافة مستودع الحزمة ثم إضافة مفتاح توقيع حزمة Microsoft إلى قائمة المفاتيح الموثوق بها.
هام
في 30 يونيو 2022 تم إيقاف Raspberry Pi OS Stretch من قائمة دعم نظام التشغيل من المستوى 1. لتجنب الثغرات الأمنية المحتملة، قم بتحديث نظام التشغيل المضيف إلى Bullseye.
يمكن إجراء التثبيت باستخدام بعض الأوامر. افتح محطة طرفية ثم قم بتشغيل الأوامر التالية:
22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
لمزيد من المعلومات حول إصدارات نظام التشغيل، راجع الأنظمة الأساسية المدعومة من Azure IoT Edge.
إشعار
تخضع حزم برامج Azure IoT Edge لشروط الترخيص الموجودة في كل حزمة LICENSE
(usr/share/doc/{package-name}
أو الدليل). اقرأ شروط الترخيص قبل استخدام الحزمة. تركيب واستخدامك للحزمة يشكل قبولك لهذه الشروط. في حال عدم موافقتك على شروط الترخيص، فلا تستخدم هذه الحزمة.
ثبِّت محرك حاوية
يعتمد Azure IoT Edge على وقت تشغيل حاوية متوافق مع OCI. بالنسبة لسيناريوهات الإنتاج، نوصي باستخدام محرك Moby. محرك Moby هو محرك الحاوية الوحيد المدعوم رسميا مع IoT Edge. تتوافق صور حاوية Docker CE/EE مع وقت تشغيل Moby.
ثبِّت محرك Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
بشكل افتراضي، لا يقوم محرك الحاوية بتعيين حدود حجم سجل الحاوية. مع مرور الوقت، يمكن أن يؤدي هذا إلى ملء الجهاز بالسجلات ونفاد مساحة القرص. ومع ذلك، يمكنك تكوين السجل الخاص بك لإظهاره محليا، على الرغم من أنه اختياري. لمعرفة المزيد حول تكوين التسجيل، راجع قائمة التحقق من نشر الإنتاج.
توضح لك الخطوات التالية كيفية تكوين الحاوية لاستخدام local
برنامج تشغيل التسجيل كآلية تسجيل.
إنشاء ملف تكوين Docker daemon الموجود أو تحريره
sudo nano /etc/docker/daemon.json
قم بتعيين برنامج تشغيل التسجيل الافتراضي إلى
local
برنامج تشغيل التسجيل كما هو موضح في المثال.{ "log-driver": "local" }
أعد تشغيل محرك الحاوية حتى تسري التغييرات.
sudo systemctl restart docker
قم بتثبيت وقت تشغيل IoT Edge
توفر خدمة IoT Edge معايير الأمان وتحافظ عليها على جهاز IoT Edge. تبدأ الخدمة على كل تمهيد وتشغل الجهاز عن طريق بدء بقية وقت تشغيل IoT Edge.
إشعار
بدءا من الإصدار 1.2، تعالج خدمة هوية IoT توفير الهوية وإدارتها ل IoT Edge ومكونات الأجهزة الأخرى التي تحتاج إلى الاتصال ب IoT Hub.
تمثل الخطوات الواردة في هذا القسم العملية النموذجية لتثبيت أحدث إصدار من IoT Edge على جهاز متصل بالإنترنت. إذا كنت بحاجة إلى تثبيت إصدار معين، مثل إصدار ما قبل الإصدار، أو تحتاج إلى التثبيت أثناء عدم الاتصال، فاتبع خطوات تثبيت الإصدار غير المتصل أو المحدد لاحقا في هذه المقالة.
تلميح
إذا كان لديك بالفعل جهاز IoT Edge يعمل بإصدار قديم وتريد الترقية إلى أحدث إصدار، فاستخدم الخطوات الواردة في تحديث البرنامج الخفي لأمان IoT Edge ووقت التشغيل. تختلف الإصدارات اللاحقة بشكل كاف عن الإصدارات السابقة من IoT Edge التي تعتبر خطوات محددة ضرورية للترقية.
تثبيت أحدث إصدار من IoT Edge وحزمة خدمة هوية IoT (إذا لم تكن محدثا بالفعل):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge defender-iot-micro-agent-edge
تتضمن الحزمة الاختيارية defender-iot-micro-agent-edge
عامل Microsoft Defender لأمان IoT الصغير الذي يوفر رؤية نقطة النهاية في إدارة وضع الأمان والثغرات الأمنية والكشف عن التهديدات وإدارة الأسطول والمزيد لمساعدتك على تأمين أجهزة IoT Edge. يوصى بتثبيت العامل الصغير مع عامل Edge لتمكين مراقبة الأمان وتصلب أجهزة Edge. لمعرفة المزيد حول Microsoft Defender for IoT، راجع ما هو Microsoft Defender for IoT لمنشئي الأجهزة.
تزويد الجهاز بهويته السحابية
بعد تثبيت وقت التشغيل على جهازك، قم بتكوين الجهاز بالمعلومات التي يستخدمها للاتصال بخدمة توفير الجهاز وIoT Hub.
تعرف على نطاق معرف خدمة توفير الجهاز ومعرف تسجيل الجهاز اللذين تم جمعهما مسبقا.
إنشاء ملف تكوين لجهازك استنادا إلى ملف قالب يتم توفيره كجزء من تثبيت IoT Edge.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
افتح ملف التكوين على جهاز IoT Edge.
sudo nano /etc/aziot/config.toml
ابحث عن قسم تكوينات التزويد في الملف. قم بإلغاء التعليق على خطوط توفير TPM، وتأكد من التعليق على أي أسطر تزويد أخرى.
# DPS provisioning with TPM [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "SCOPE_ID_HERE" # Uncomment to send a custom payload during DPS registration # payload = { uri = "PATH_TO_JSON_FILE" } [provisioning.attestation] method = "tpm" registration_id = "REGISTRATION_ID_HERE" # auto_reprovisioning_mode = Dynamic
قم بتحديث قيم
id_scope
وregistration_id
مع خدمة توفير الجهاز ومعلومات الجهاز.scope_id
القيمة هي نطاق المعرف من صفحة نظرة عامة على مثيل خدمة توفير الجهاز.لمزيد من المعلومات حول إعدادات تكوين التوفير، راجع تكوين إعدادات جهاز IoT Edge.
اختياريا، ابحث عن قسم وضع إعادة التزويد التلقائي في الملف. استخدم المعلمة
auto_reprovisioning_mode
لتكوين سلوك إعادة توفير جهازك. ديناميكي - إعادة توفير عندما يكتشف الجهاز أنه قد تم نقله من مركز IoT إلى آخر. هذا هو الوضع الافتراضي. AlwaysOnStartup - إعادة التوفير عند إعادة تشغيل الجهاز أو حدوث عطل يؤدي إلى إعادة تشغيل البرامج الخفية. OnErrorOnly - لا تقم أبدا بتشغيل إعادة توفير الجهاز تلقائيا. يحتوي كل وضع على جهاز احتياطي ضمني لإعادة توفير الجهاز إذا كان الجهاز غير قادر على الاتصال ب IoT Hub أثناء توفير الهوية بسبب أخطاء الاتصال. لمزيد من المعلومات، راجع مفاهيم إعادة توفير جهاز IoT Hub.اختياريا، قم بإلغاء تعليق المعلمة
payload
لتحديد المسار إلى ملف JSON محلي. يتم إرسال محتويات الملف إلى DPS كبيانات إضافية عند تسجيل الجهاز. هذا مفيد للتخصيص المخصص. على سبيل المثال، إذا كنت تريد تخصيص أجهزتك استنادا إلى معرف نموذج IoT أجهزة التوصيل و التشغيل دون تدخل بشري.احفظ الملف وأغلقه.
منح IoT Edge حق الوصول إلى TPM
يعتمد وقت تشغيل IoT Edge على خدمة TPM التي تقوم بالوساطة للوصول إلى TPM الخاص بالجهاز. تحتاج هذه الخدمة إلى الوصول إلى TPM لتوفير جهازك تلقائيا.
يمكنك منح حق الوصول إلى TPM عن طريق تجاوز الإعدادات النظامية بحيث يكون للخدمة aziottpm
امتيازات الجذر. إذا كنت لا تريد رفع امتيازات الخدمة، يمكنك أيضا استخدام الخطوات التالية لتوفير الوصول إلى TPM يدويا.
إنشاء قاعدة جديدة تمنح وقت تشغيل IoT Edge حق الوصول إلى
tpm0
وtpmrm0
.sudo touch /etc/udev/rules.d/tpmaccess.rules
افتح ملف القواعد.
sudo nano /etc/udev/rules.d/tpmaccess.rules
انسخ معلومات الوصول التالية إلى ملف القواعد.
tpmrm0
قد لا يكون موجودا على الأجهزة التي تستخدم نواة أقدم من 4.12. ستتجاهل الأجهزة التي لا تحتويtpmrm0
على هذه القاعدة بأمان.# allow aziottpm access to tpm0 and tpmrm0 KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="aziottpm", MODE="0660" KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="aziottpm", MODE="0660"
حفظ الملف والخروج منه.
udev
تشغيل النظام لتقييم القاعدة الجديدة./bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
تحقق من تطبيق القاعدة بنجاح.
ls -l /dev/tpm*
يظهر الإخراج الناجح كما يلي:
crw-rw---- 1 root aziottpm 10, 224 Jul 20 16:27 /dev/tpm0 crw-rw---- 1 root aziottpm 10, 224 Jul 20 16:27 /dev/tpmrm0
إذا كنت لا ترى أن الأذونات الصحيحة مطبقة، فحاول إعادة تشغيل جهازك لتحديث
udev
.تطبيق تغييرات التكوين التي أجريتها على الجهاز.
sudo iotedge config apply
التحقق من التثبيت الناجح
إذا لم تكن قد قمت بذلك بالفعل، فطبق تغييرات التكوين التي أجريتها على الجهاز.
sudo iotedge config apply
تحقق لمعرفة أن وقت تشغيل IoT Edge قيد التشغيل.
sudo iotedge system status
فحص سجلات البرنامج الخفي.
sudo iotedge system logs
إذا رأيت أخطاء في التوفير، فقد يكون أن تغييرات التكوين لم تصبح سارية المفعول بعد. حاول إعادة تشغيل برنامج IoT Edge الخفي.
sudo systemctl daemon-reload
أو حاول إعادة تشغيل الجهاز الظاهري لمعرفة ما إذا كانت التغييرات سارية المفعول على بداية جديدة.
إذا بدأ وقت التشغيل بنجاح، يمكنك الانتقال إلى مركز IoT الخاص بك ورؤية أنه تم توفير جهازك الجديد تلقائيا. الآن جهازك جاهز لتشغيل وحدات IoT Edge النمطية.
سرد الوحدات النمطية قيد التشغيل.
iotedge list
يمكنك التحقق من استخدام التسجيل الفردي الذي قمت بإنشائه في خدمة توفير الجهاز. انتقل إلى مثيل خدمة توفير الجهاز في مدخل Microsoft Azure. افتح تفاصيل التسجيل للتسجيل الفردي الذي قمت بإنشائه. لاحظ أنه تم تعيين حالة التسجيل وإدراج معرف الجهاز.
الخطوات التالية
تتيح لك عملية تسجيل خدمة توفير الجهاز تعيين معرف الجهاز وعلامات الجهاز المزدوجة في نفس الوقت الذي تقوم فيه بتوفير الجهاز الجديد. يمكنك استخدام هذه القيم لاستهداف أجهزة فردية أو مجموعات من الأجهزة باستخدام الإدارة التلقائية للأجهزة.
تعرف على كيفية نشر ومراقبة وحدات IoT Edge على نطاق واسع باستخدام مدخل Azure أو Azure CLI.