IoT Edge-eszközök létrehozása és üzembe helyezése nagy méretekben TPM-lel Linuxon

A következőkre vonatkozik:IoT Edge 1.4 pipa IoT Edge 1.4

Fontos

Az IoT Edge 1.4 a támogatott kiadás. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Ez a cikk útmutatást nyújt egy Azure IoT Edge for Linux-eszköz automatikus fejlesztéséhez egy megbízható platformmodul (TPM) használatával. Az IoT Edge-eszközöket automatikusan kiépítheti az Azure IoT Hub eszközkiépítési szolgáltatással. Ha nem ismeri az automatikus üzembe helyezés folyamatát, a folytatás előtt tekintse át a kiépítés áttekintését .

Ez a cikk két módszertant ismertet. Válassza ki a kívánt beállítást a megoldás architektúrája alapján:

  • Linux-eszköz automatikus létrehozása fizikai TPM-hardverrel.
  • Linux rendszerű virtuális gép (VM) automatikus létrehozása szimulált TPM-vel, amely egy Windows rendszerű fejlesztőgépen fut, és engedélyezve van a Hyper-V. Javasoljuk, hogy ezt a módszertant csak tesztelési forgatókönyvként használja. A szimulált TPM nem nyújt ugyanolyan biztonságot, mint a fizikai TPM.

Az utasítások a módszertantól függően eltérnek, ezért győződjön meg arról, hogy a megfelelő lapon halad tovább.

A feladatok a következők:

  1. Kérje le a TPM kiépítési adatait.
  2. Hozzon létre egy egyéni regisztrációt az eszközhöz az IoT Hub eszközkiépítési szolgáltatás egy példányában.
  3. Telepítse az IoT Edge-futtatókörnyezetet, és csatlakoztassa az eszközt az IoT Hubhoz.

Előfeltételek

Felhőbeli erőforrások

  • Aktív IoT Hub
  • Az IoT Hub eszközkiépítési szolgáltatásának egy példánya az Azure-ban, az IoT Hubhoz csatolva
    • Ha nem rendelkezik eszközkiépítési szolgáltatáspéldánysal, kövesse az új IoT Hub-eszközkiépítési szolgáltatás létrehozása, valamint az IoT Hub és az IoT Hub eszközkiépítési szolgáltatás szakaszainak összekapcsolása rövid útmutatójában leírtakat.
    • Az eszközkiépítési szolgáltatás futtatása után másolja ki az azonosító hatókörének értékét az áttekintési oldalról. Ezt az értéket az IoT Edge-futtatókörnyezet konfigurálásakor használja.

Eszközkövetelmények

Fizikai Linux-eszköz, amely az IoT Edge-eszköz.

Ha Ön eszközgyártó, tekintse meg a TPM gyártási folyamatba való integrálásával kapcsolatos útmutatást.

Feljegyzés

A TPM 2.0 akkor szükséges, ha TPM-igazolást használ az eszközkiépítési szolgáltatással.

TPM használata esetén csak egyéni, nem csoportszintű eszközkiépítési szolgáltatásregisztrációkat hozhat létre.

Az eszköz beállítása

Ha fizikai Linux-eszközt használ TPM-sel, nincs további lépés az eszköz beállításához.

Készen áll a folytatásra.

Kiépítési információk lekérése a TPM-hez

Feljegyzés

Ez a cikk korábban az tpm_device_provision IoT C SDK eszközét használta kiépítési adatok létrehozásához. Ha korábban az eszközre támaszkodott, vegye figyelembe, hogy az alábbi lépések eltérő regisztrációs azonosítót hoznak létre ugyanahhoz a nyilvános ellenőrzőkulcshoz. Ha a korábbiakhoz hasonlóan újra létre kell hoznia a regisztrációs azonosítót, tekintse meg, hogyan hozza létre a C SDK tpm_device_provision eszköz . Győződjön meg arról, hogy a DPS-ben az egyéni regisztráció regisztrációs azonosítója megegyezik az IoT Edge-eszköz használatára konfigurált regisztrációs azonosítóval.

Ebben a szakaszban a TPM2 szoftvereszközökkel lekéri a TPM jóváhagyási kulcsát, majd létrehoz egy egyedi regisztrációs azonosítót. Ez a szakasz a 3. lépésnek felel meg: Az eszköz belső vezérlőprogrammal és szoftverrel rendelkezik a TPM gyártási folyamatba való integrálásához.

A TPM2-eszközök telepítése

Jelentkezzen be az eszközére, és telepítse a tpm2-tools csomagot.

sudo apt-get install tpm2-tools

Futtassa a következő szkriptet a jóváhagyási kulcs olvasásához, és hozzon létre egyet, ha még nem létezik.

#!/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

A kimeneti ablakban megjelenik az eszköz jóváhagyási kulcsa és egy egyedi regisztrációs azonosító. Másolja ezeket az értékeket későbbi használatra, amikor egyéni regisztrációt hoz létre az eszközhöz az eszközkiépítési szolgáltatásban.

Miután rendelkezik a regisztrációs azonosítóval és az ellenőrző kulccsal, készen áll a folytatásra.

Tipp.

Ha nem szeretné használni a TPM2 szoftvereszközöket az információk lekéréséhez, más módot kell találnia a kiépítési információk beszerzésére. Az egyes TPM-chipekhez egyedi jóváhagyási kulcsot a hozzá társított TPM-chip gyártójától szerzik be. A TPM-eszköz egyedi regisztrációs azonosítóját is levezetheti. Például a fent látható módon létrehozhat egy SHA-256 kivonatot a jóváhagyási kulcsból.

Eszközkiépítési szolgáltatás regisztrációjának létrehozása

A TPM kiépítési adataival egyéni regisztrációt hozhat létre az eszközkiépítési szolgáltatásban.

Amikor regisztrációt hoz létre az eszközkiépítési szolgáltatásban, lehetősége van az ikereszköz kezdeti állapotának deklarálására. Az ikereszközön beállíthatja, hogy a címkéket a megoldásban használt bármely metrika alapján csoportosítsa, például régió, környezet, hely vagy eszköztípus szerint. Ezek a címkék automatikus üzembe helyezéseket hoznak létre.

Tipp.

A cikkben szereplő lépések az Azure Portalon érhetők el, de egyéni regisztrációkat is létrehozhat az Azure CLI használatával. További információ: az iot dps-regisztráció. A CLI-parancs részeként használja az edge-kompatibilis jelzőt annak megadásához, hogy a regisztráció egy IoT Edge-eszközhöz tartozik- e.

  1. Az Azure Portalon nyissa meg az IoT Hub eszközkiépítési szolgáltatásának példányát.

  2. A Gépház területen válassza a Regisztrációk kezelése lehetőséget.

  3. Válassza az Egyéni regisztráció hozzáadása lehetőséget, majd végezze el a következő lépéseket a regisztráció konfigurálásához:

    1. A Mechanizmus beállításnál válassza a TPM lehetőséget.

    2. Adja meg a virtuális gépről vagy fizikai eszközről másolt jóváhagyási kulcsot és regisztrációs azonosítót .

    3. Ha szeretné, adjon meg egy azonosítót az eszközéhez. Ha nem ad meg eszközazonosítót, a rendszer a regisztrációs azonosítót használja.

    4. Az Igaz lehetőséget választva deklarálhatja, hogy a virtuális gép vagy a fizikai eszköz IoT Edge-eszköz.

    5. Válassza ki azt a csatolt IoT Hubot, amelyhez csatlakoztatni szeretné az eszközt, vagy válassza a Hivatkozás az új IoT Hubra lehetőséget. Több központot is választhat, és az eszköz a kiválasztott hozzárendelési szabályzatnak megfelelően az egyikhez lesz hozzárendelve.

    6. Ha szeretné, adjon hozzá egy címkeértéket az ikereszköz kezdeti állapotához . Címkék használatával célcsoportokat célozhat meg a modul üzembe helyezéséhez. További információ: IoT Edge-modulok nagy léptékű üzembe helyezése.

    7. Válassza a Mentés lehetőséget.

Most, hogy már létezik regisztráció ehhez az eszközhöz, az IoT Edge-futtatókörnyezet automatikusan kiépítheti az eszközt a telepítés során.

Az IoT Edge telepítése

Ebben a szakaszban előkészíti Linux rendszerű virtuális gépét vagy fizikai eszközét az IoT Edge-hez. Ezután telepítse az IoT Edge-et.

Futtassa az alábbi parancsokat a csomagtárház hozzáadásához, majd adja hozzá a Microsoft-csomagaláíró kulcsot a megbízható kulcsok listájához.

Fontos

2022. június 30-án a Raspberry Pi OS Stretch kilépett az 1. rétegbeli operációsrendszer-támogatási listából. A lehetséges biztonsági rések elkerülése érdekében frissítse a gazdagép operációs rendszerét a Bullseye-re.

A telepítés néhány paranccsal elvégezhető. Nyisson meg egy terminált, és futtassa a következő parancsokat:

  • 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
    

Az operációsrendszer-verziókról további információt az Azure IoT Edge által támogatott platformokon talál.

Feljegyzés

Az Azure IoT Edge szoftvercsomagjaira az egyes csomagokban (usr/share/doc/{package-name} vagy a LICENSE címtárban) található licencfeltételek vonatkoznak. A csomag használata előtt olvassa el a licencfeltételeket. A csomagok telepítése és használata jelenti a jelen feltételek elfogadását. Ha nem ért egyet a licencfeltételekkel, ne használja ezt a csomagot.

Tárolómotor telepítése

Az Azure IoT Edge egy OCI-kompatibilis tároló-futtatókörnyezetre támaszkodik. Éles helyzetekben javasoljuk, hogy használja a Moby motort. A Moby motor az egyetlen olyan tárolómotor, amelyet hivatalosan támogat az IoT Edge. A Docker CE/Enterprise kiadás tárolórendszerképei kompatibilisek a Moby futtatókörnyezetével.

Telepítse a Moby motort.

sudo apt-get update; \
  sudo apt-get install moby-engine

Alapértelmezés szerint a tárolómotor nem állítja be a tárolónapló méretkorlátját. Ez idővel ahhoz vezethet, hogy az eszköz megtelik naplókkal, és elfogy a lemezterület. A naplót azonban úgy konfigurálhatja, hogy helyileg jelenjen meg, bár ez nem kötelező. A naplózási konfigurációval kapcsolatos további információkért tekintse meg az éles üzembehelyezési ellenőrzőlistát.

Az alábbi lépések bemutatják, hogyan konfigurálhatja a tárolót úgy, hogy naplózási illesztőprogramot használjon local naplózási mechanizmusként.

  1. A meglévő Docker-démon konfigurációs fájljának létrehozása vagy szerkesztése

    sudo nano /etc/docker/daemon.json
    
  2. Állítsa be az alapértelmezett naplózási illesztőprogramot a naplózási local illesztőre a példában látható módon.

       {
          "log-driver": "local"
       }
    
  3. Indítsa újra a tárolómotort a módosítások érvénybe lépéséhez.

    sudo systemctl restart docker
    

Az IoT Edge-futtatókörnyezet telepítése

Az IoT Edge szolgáltatás biztonsági szabványokat biztosít és tart fenn az IoT Edge-eszközön. A szolgáltatás minden rendszerindításkor elindul, és az IoT Edge többi futtatókörnyezetének elindításával elindítja az eszközt.

Feljegyzés

Az IoT Identity Service az 1.2-es verziótól kezdve kezeli az IoT Edge és más eszközösszetevők identitáskiépítését és kezelését, amelyeknek kommunikálniuk kell az IoT Hubbal.

Az ebben a szakaszban ismertetett lépések a legújabb IoT Edge-verzió internetkapcsolattal rendelkező eszközre való telepítésének tipikus folyamatát jelölik. Ha telepítenie kell egy adott verziót, például egy előzetes verziót, vagy offline állapotban kell telepítenie, kövesse az Offline vagy adott verzió telepítési lépéseit a jelen cikk későbbi részében.

Tipp.

Ha már rendelkezik egy régebbi verziót futtató IoT Edge-eszközzel, és a legújabb kiadásra szeretne frissíteni, kövesse az IoT Edge biztonsági démon és futtatókörnyezet frissítésének lépéseit. A későbbi verziók eléggé eltérnek az IoT Edge korábbi verzióitól, és bizonyos lépések szükségesek a frissítéshez.

Telepítse az IoT Edge legújabb verzióját és az IoT Identity Service-csomagot (ha még nem naprakész):

  • 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
    

Az opcionális defender-iot-micro-agent-edge csomag tartalmazza a Microsoft Defender for IoT biztonsági mikroügynököt, amely végponti láthatóságot biztosít a biztonsági helyzetkezelés, a biztonsági rések, a fenyegetésészlelés, a flottakezelés és egyebek szempontjából az IoT Edge-eszközök biztonságossá tételéhez. Javasoljuk, hogy telepítse a mikroügynököt az Edge-ügynökkel, hogy engedélyezze az Edge-eszközök biztonsági monitorozását és megerősítését. Az IoT-hez készült Microsoft Defenderről további információt az eszközkészítőknek készült Microsoft Defender for IoT című témakörben talál.

Az eszköz kiépítése a felhőbeli identitással

Miután telepítette a futtatókörnyezetet az eszközön, konfigurálja az eszközt az eszközkiépítési szolgáltatáshoz és az IoT Hubhoz való csatlakozáshoz használt információkkal.

Ismerje meg a korábban összegyűjtött eszközkiépítési szolgáltatásazonosító hatókörét és eszközregisztrációs azonosítóját .

Hozzon létre egy konfigurációs fájlt az eszközhöz az IoT Edge-telepítés részeként megadott sablonfájl alapján.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

Nyissa meg a konfigurációs fájlt az IoT Edge-eszközön.

sudo nano /etc/aziot/config.toml
  1. Keresse meg a fájl kiépítési konfigurációs szakaszát. Bontsa ki a TPM-kiépítés sorait, és győződjön meg arról, hogy a többi kiépítési sor megjegyzéssel van elfűzve.

    # DPS provisioning with TPM
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "DPS_ID_SCOPE_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. Frissítse az eszközkiépítési id_scope szolgáltatás értékeit és registration_id az eszközinformációkat. Az scope_id érték az eszközkiépítési szolgáltatáspéldány áttekintő oldaláról származó azonosító hatóköre .

    A konfigurációs beállítások kiépítéséről további információt az IoT Edge-eszközbeállítások konfigurálása című témakörben talál.

  3. Ha szeretné, keresse meg a fájl automatikus újraépítési módjának szakaszát. A paraméter használatával auto_reprovisioning_mode konfigurálhatja az eszköz újraépítési viselkedését. Dinamikus – Újraépítés, ha az eszköz azt észleli, hogy áthelyezték az egyik IoT Hubról a másikra. Ez az alapértelmezett beállítás. AlwaysOnStartup – Az eszköz újraindítása vagy összeomlása esetén a démonok újraépítése. OnErrorOnly – Soha ne aktiválja automatikusan az eszköz újraépítését. Minden mód rendelkezik implicit eszközvisszaépítési tartalékokkal, ha az eszköz kapcsolódási hibák miatt nem tud csatlakozni az IoT Hubhoz az identitáskiépítés során. További információ: IoT Hub-eszközök újraépítési fogalmai.

  4. Ha szeretné, törölje a paramétert a payload helyi JSON-fájl elérési útjának megadásához. A rendszer további adatokként továbbítja a fájl tartalmát a DPS-nek, amikor az eszköz regisztrál. Ez hasznos egyéni foglalásokhoz. Ha például emberi beavatkozás nélkül szeretné lefoglalni az eszközöket egy IoT Plug and Play-modellazonosító alapján.

  5. Mentse és zárja be a fájlt.

IoT Edge-hozzáférés biztosítása a TPM-hez

Az IoT Edge-futtatókörnyezet egy TPM-szolgáltatásra támaszkodik, amely az eszköz TPM-éhez való hozzáférést közvetíti. A szolgáltatásnak hozzá kell férnie a TPM-hez az eszköz automatikus kiépítéséhez.

A TPM-hez úgy adhat hozzáférést, hogy felülírja a rendszerezett beállításokat, hogy a aziottpm szolgáltatás gyökérjogokkal rendelkezhessen. Ha nem szeretné megemelni a szolgáltatásjogokat, az alábbi lépésekkel manuálisan is biztosíthatja a TPM-hozzáférést.

  1. Hozzon létre egy új szabályt, amely hozzáférést biztosít az IoT Edge-futtatókörnyezethez és tpmrm0a tpm0 .

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  2. Nyissa meg a szabályfájlt.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  3. Másolja a következő hozzáférési adatokat a szabályfájlba. Előfordulhat tpmrm0 , hogy a rendszermagot 4.12-nél régebbi kernelt használó eszközökön nem jelenik meg. A nem rendelkező tpmrm0 eszközök nyugodtan figyelmen kívül hagyják ezt a szabályt.

    # allow aziottpm access to tpm0 and tpmrm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="aziottpm", MODE="0660"
    KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="aziottpm", MODE="0660"
    
  4. Mentse és lépjen ki a fájlból.

  5. Aktiválja a rendszert az udev új szabály kiértékeléséhez.

    /bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
    
  6. Ellenőrizze, hogy sikeresen alkalmazták-e a szabályt.

    ls -l /dev/tpm*
    

    A sikeres kimenet a következőképpen jelenik meg:

    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
    

    Ha nem látja a megfelelő engedélyek alkalmazását, próbálja meg újraindítani a gépet a frissítéshez udev.

  7. Alkalmazza az eszközön végrehajtott konfigurációs módosításokat.

    sudo iotedge config apply
    

Sikeres telepítés ellenőrzése

Ha még nem tette meg, alkalmazza az eszközön végrehajtott konfigurációs módosításokat.

sudo iotedge config apply

Ellenőrizze, hogy fut-e az IoT Edge-futtatókörnyezet.

sudo iotedge system status

Vizsgálja meg a démonnaplókat.

sudo iotedge system logs

Ha kiépítési hibák lépnek fel, előfordulhat, hogy a konfigurációs módosítások még nem lépnek érvénybe. Próbálja meg újraindítani az IoT Edge démont.

sudo systemctl daemon-reload

Vagy indítsa újra a virtuális gépet, és ellenőrizze, hogy a módosítások érvénybe lépnek-e az újrakezdéskor.

Ha a futtatókörnyezet sikeresen elindult, bemehet az IoT Hubba, és láthatja, hogy az új eszköz automatikusan ki lett építve. Az eszköz most már készen áll az IoT Edge-modulok futtatására.

Futó modulok listázása.

iotedge list

Ellenőrizheti, hogy az eszközkiépítési szolgáltatásban létrehozott egyéni regisztrációt használták-e. Nyissa meg az eszközkiépítési szolgáltatáspéldányt az Azure Portalon. Nyissa meg a létrehozott egyéni regisztráció regisztrációs adatait. Figyelje meg, hogy a regisztráció állapota ki van rendelve , és az eszközazonosító megjelenik a listában.

Következő lépések

Az eszközkiépítési szolgáltatás regisztrációs folyamata lehetővé teszi az eszközazonosító és az ikereszköz-címkék beállítását az új eszköz üzembe helyezésével egyidejűleg. Ezeket az értékeket az automatikus eszközfelügyelettel megcélzhatja az egyes eszközökre vagy eszközcsoportokra.

Megtudhatja, hogyan helyezhet üzembe és monitorozhat nagy léptékű IoT Edge-modulokat az Azure Portal vagy az Azure CLI használatával.