إنشاء وتوفير أجهزة IoT Edge على نطاق واسع باستخدام TPM على Linux

ينطبق على:علامة اختيار IoT Edge 1.4 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 الفعلي.

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

المهام هي كما يلي:

  1. استرداد معلومات التوفير ل TPM الخاص بك.
  2. إنشاء تسجيل فردي لجهازك في مثيل خدمة توفير جهاز IoT Hub.
  3. تثبيت وقت تشغيل 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.

  1. في مدخل Microsoft Azure، انتقل إلى مثيل خدمة توفير جهاز IoT Hub.

  2. ضمن الإعدادات، حدد إدارة التسجيلات.

  3. حدد Add individual enrollment، ثم أكمل الخطوات التالية لتكوين التسجيل:

    1. بالنسبة إلى آلية، حدد TPM.

    2. قم بتوفير مفتاح المصادقة ومعرف التسجيل الذي نسخته من الجهاز الظاهري أو الجهاز الفعلي.

    3. قم بتوفير معرف لجهازك إذا أردت ذلك. إذا لم توفر معرف جهاز، يتم استخدام معرف التسجيل.

    4. حدد True للإعلان عن أن الجهاز الظاهري أو الجهاز الفعلي هو جهاز IoT Edge.

    5. اختر مركز IoT المرتبط الذي تريد توصيل جهازك به، أو حدد رابط إلى IoT Hub الجديد. يمكنك اختيار مراكز متعددة، وسيتم تعيين الجهاز لأحدها وفقا لنهج التعيين المحدد.

    6. أضف قيمة علامة إلى حالة الجهاز المزدوج الأولي إذا كنت تريد ذلك. يمكنك استخدام العلامات لاستهداف مجموعات من الأجهزة لنشر الوحدة النمطية. لمزيد من المعلومات، راجع نشر وحدات IoT Edge النمطية على نطاق واسع.

    7. حدد حفظ.

الآن بعد وجود تسجيل لهذا الجهاز، يمكن لوقت تشغيل 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 برنامج تشغيل التسجيل كآلية تسجيل.

  1. إنشاء ملف تكوين Docker daemon الموجود أو تحريره

    sudo nano /etc/docker/daemon.json
    
  2. قم بتعيين برنامج تشغيل التسجيل الافتراضي إلى local برنامج تشغيل التسجيل كما هو موضح في المثال.

       {
          "log-driver": "local"
       }
    
  3. أعد تشغيل محرك الحاوية حتى تسري التغييرات.

    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
  1. ابحث عن قسم تكوينات التزويد في الملف. قم بإلغاء التعليق على خطوط توفير 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
    
  2. قم بتحديث قيم id_scope و registration_id مع خدمة توفير الجهاز ومعلومات الجهاز. scope_id القيمة هي نطاق المعرف من صفحة نظرة عامة على مثيل خدمة توفير الجهاز.

    لمزيد من المعلومات حول إعدادات تكوين التوفير، راجع تكوين إعدادات جهاز IoT Edge.

  3. اختياريا، ابحث عن قسم وضع إعادة التزويد التلقائي في الملف. استخدم المعلمة auto_reprovisioning_mode لتكوين سلوك إعادة توفير جهازك. ديناميكي - إعادة توفير عندما يكتشف الجهاز أنه قد تم نقله من مركز IoT إلى آخر. هذا هو الوضع الافتراضي. AlwaysOnStartup - إعادة التوفير عند إعادة تشغيل الجهاز أو حدوث عطل يؤدي إلى إعادة تشغيل البرامج الخفية. OnErrorOnly - لا تقم أبدا بتشغيل إعادة توفير الجهاز تلقائيا. يحتوي كل وضع على جهاز احتياطي ضمني لإعادة توفير الجهاز إذا كان الجهاز غير قادر على الاتصال ب IoT Hub أثناء توفير الهوية بسبب أخطاء الاتصال. لمزيد من المعلومات، راجع مفاهيم إعادة توفير جهاز IoT Hub.

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

  5. احفظ الملف وأغلقه.

منح IoT Edge حق الوصول إلى TPM

يعتمد وقت تشغيل IoT Edge على خدمة TPM التي تقوم بالوساطة للوصول إلى TPM الخاص بالجهاز. تحتاج هذه الخدمة إلى الوصول إلى TPM لتوفير جهازك تلقائيا.

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

  1. إنشاء قاعدة جديدة تمنح وقت تشغيل IoT Edge حق الوصول إلى tpm0 و tpmrm0.

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  2. افتح ملف القواعد.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  3. انسخ معلومات الوصول التالية إلى ملف القواعد. 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"
    
  4. حفظ الملف والخروج منه.

  5. udev تشغيل النظام لتقييم القاعدة الجديدة.

    /bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
    
  6. تحقق من تطبيق القاعدة بنجاح.

    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.

  7. تطبيق تغييرات التكوين التي أجريتها على الجهاز.

    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.