Sdílet prostřednictvím


Vytváření a zřizování zařízení IoT Edge ve velkém měřítku pomocí čipu TPM v Linuxu

Platí pro: Ikona Ano IoT Edge 1.1

Důležité

Datum ukončení podpory ioT Edge 1.1 bylo 13. prosince 2022. Informace o způsobu podpory tohoto produktu, služby, technologie nebo rozhraní API najdete v tématu věnovaném životnímu cyklu produktů Microsoftu. Další informace o aktualizaci na nejnovější verzi IoT Edge najdete v tématu Aktualizace IoT Edge.

Tento článek obsahuje pokyny k automatickému zřízení azure IoT Edge pro zařízení s Linuxem pomocí čipu TPM (Trusted Platform Module). Zařízení IoT Edge můžete automaticky zřizovat pomocí služby zřizování zařízení Azure IoT Hubu. Pokud neznáte proces automatického zřizování, než budete pokračovat, projděte si přehled zřizování.

Tento článek popisuje dvě metodologie. Vyberte svoji předvolbu na základě architektury vašeho řešení:

  • Automatické zřízení zařízení s Linuxem pomocí fyzického hardwaru TPM Příkladem je Infineon OPTIGA™ TPM SLB 9670.
  • Automatické zřízení virtuálního počítače s Linuxem se simulovaným čipem TPM běžícím na vývojovém počítači s Windows s povolenou technologií Hyper-V. Tuto metodologii doporučujeme používat pouze jako testovací scénář. Simulovaný čip TPM nenabízí stejné zabezpečení jako fyzický čip TPM.

Pokyny se liší podle vaší metodologie, takže se ujistěte, že jste na správné kartě.

Úkoly jsou následující:

  1. Načtení informací o zřizování pro čip TPM
  2. Vytvořte pro své zařízení individuální registraci v instanci služby IoT Hub device Provisioning.
  3. Nainstalujte modul runtime IoT Edge a připojte zařízení k centru IoT.

Požadavky

Cloudové prostředky

  • Aktivní centrum IoT
  • Instance služby IoT Hub device Provisioning v Azure propojená s centrem IoT
    • Pokud nemáte instanci služby zřizování zařízení, můžete postupovat podle pokynů v rychlém startu vytvoření nové služby zřizování zařízení ioT Hubu a propojení centra IoT a oddílů služby zřizování zařízení ve službě IoT Hub.
    • Po spuštění služby device provisioning zkopírujte hodnotu Oboru ID ze stránky přehledu. Tuto hodnotu použijete při konfiguraci modulu runtime IoT Edge.

Požadavky na zařízení

Fyzické zařízení s Linuxem, které bude zařízením IoT Edge.

Pokud jste výrobce zařízení, přečtěte si pokyny k integraci čipu TPM do výrobního procesu.

Poznámka:

Čip TPM 2.0 se vyžaduje při použití ověření identity TPM se službou zřizování zařízení.

Při použití čipu TPM můžete vytvořit jenom jednotlivé registrace služeb zřizování zařízení, nikoli skupiny.

Nastavte své zařízení

Pokud používáte fyzické zařízení s Linuxem s čipem TPM, neexistují žádné další kroky k nastavení zařízení.

Jste připraveni pokračovat.

Načtení informací o zřizování pro tpm

V této části vytvoříte nástroj, který můžete použít k načtení ID registrace a ověřovacího klíče pro čip TPM.

  1. Přihlaste se ke svému zařízení a pak postupujte podle kroků v nastavení vývojového prostředí pro Linux a nainstalujte a sestavte sadu SDK pro zařízení Azure IoT pro jazyk C.

  2. Spuštěním následujících příkazů sestavte nástroj SDK, který načte informace o zřizování zařízení pro čip TPM.

    cd azure-iot-sdk-c/cmake
    cmake -Duse_prov_client:BOOL=ON ..
    cd provisioning_client/tools/tpm_device_provision
    make
    sudo ./tpm_device_provision
    
  3. V okně výstupu se zobrazí ID registrace zařízení a ověřovací klíč. Tyto hodnoty zkopírujte pro pozdější použití při vytváření individuální registrace zařízení ve službě zřizování zařízení.

Jakmile budete mít ID registrace a ověřovací klíč, můžete pokračovat.

Tip

Pokud nechcete k načtení informací použít softwarové nástroje TPM2, musíte najít jiný způsob, jak získat informace o zřizování. Ověřovací klíč, který je pro každý čip TPM jedinečný, se získá od výrobce čipu TPM, který k němu přidružuje. Pro zařízení TPM můžete odvodit jedinečné ID registrace. Jak je znázorněno výše, můžete například vytvořit hodnotu hash SHA-256 ověřovacího klíče.

Vytvoření registrace služby zřizování zařízení

Informace o zřizování čipu TPM slouží k vytvoření individuální registrace ve službě zřizování zařízení.

Při vytváření registrace ve službě zřizování zařízení máte možnost deklarovat počáteční stav dvojčete zařízení. Ve dvojčeti zařízení můžete nastavit značky pro seskupení zařízení podle libovolné metriky používané ve vašem řešení, jako je oblast, prostředí, umístění nebo typ zařízení. Tyto značky slouží k vytváření automatických nasazení.

Tip

Kroky v tomto článku jsou určené pro Azure Portal, ale jednotlivé registrace můžete vytvořit také pomocí Azure CLI. Další informace najdete v tématu az iot dps enrollment. Jako součást příkazu rozhraní příkazového řádku použijte příznak s povoleným hraničním zařízením a určete, že registrace je pro zařízení IoT Edge.

  1. Na webu Azure Portal přejděte do vaší instance služby IoT Hub device Provisioning.

  2. V části Nastavení vyberte Spravovat registrace.

  3. Vyberte Přidat jednotlivé registrace a pak proveďte následující kroky a nakonfigurujte registraci:

    1. V případě mechanismu vyberte TPM.

    2. Zadejte ověřovací klíč a ID registrace, které jste zkopírovali z virtuálního počítače nebo fyzického zařízení.

    3. Pokud chcete, zadejte ID zařízení. Pokud nezadáte ID zařízení, použije se ID registrace.

    4. Výběrem možnosti True deklarujte, že virtuální počítač nebo fyzické zařízení je zařízení IoT Edge.

    5. Zvolte propojené centrum IoT, ke kterému chcete zařízení připojit, nebo vyberte Propojit s novým IoT Hubem. Můžete zvolit více rozbočovačů a zařízení se přiřadí k jednomu z nich podle vybraných zásad přiřazení.

    6. Pokud chcete, přidejte hodnotu značky do stavu počátečního dvojčete zařízení. Značky můžete použít k cílovým skupinám zařízení pro nasazení modulu. Další informace najdete v tématu Nasazení modulů IoT Edge ve velkém měřítku.

    7. Zvolte Uložit.

Teď, když pro toto zařízení existuje registrace, může modul runtime IoT Edge během instalace zařízení automaticky zřídit.

Instalace IoT Edge

V této části připravíte virtuální počítač s Linuxem nebo fyzické zařízení pro IoT Edge. Pak nainstalujete IoT Edge.

Spuštěním následujících příkazů přidejte úložiště balíčků a potom přidejte podpisový klíč balíčku Microsoftu do seznamu důvěryhodných klíčů.

Důležité

30. června 2022 Raspberry Pi OS Stretch byl vyřazen ze seznamu podpory operačního systému vrstvy 1. Abyste se vyhnuli potenciálním ohrožením zabezpečení, aktualizujte hostitelský operační systém na Bullseye.

Instalaci je možné provést několika příkazy. Otevřete terminál a spusťte následující příkazy:

  • 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
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Poznámka:

Softwarové balíčky Azure IoT Edge podléhají licenčním podmínkám umístěným v jednotlivých balíčcích (usr/share/doc/{package-name} nebo adresáři LICENSE ). Přečtěte si licenční podmínky před použitím balíčku. Vaše instalace a použití balíčku představuje vaše přijetí těchto podmínek. Pokud s licenčními podmínkami nesouhlasíte, nepoužívejte tento balíček.

Instalace modulu kontejneru

Azure IoT Edge spoléhá na modul runtime kontejneru kompatibilní s OCI. Pro produkční scénáře doporučujeme použít modul Moby. Modul Moby je jediným kontejnerovým modulem oficiálně podporovaným v IoT Edge. Image kontejnerů Dockeru CE/EE jsou kompatibilní s modulem runtime Moby.

Nainstalujte modul Moby.

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

Po úspěšné instalaci modulu Moby ho nakonfigurujte tak, aby jako mechanismus protokolování používal local ovladač protokolování. Další informace o konfiguraci protokolování najdete v kontrolním seznamu produkčního nasazení.

  • Vytvořte nebo otevřete konfigurační soubor démona Dockeru na adrese /etc/docker/daemon.json.

  • Nastavte výchozí ovladač protokolování na local ovladač protokolování, jak je znázorněno v následujícím příkladu.

       {
          "log-driver": "local"
       }
    
  • Restartujte modul kontejneru, aby se změny projevily.

    sudo systemctl restart docker
    

    Tip

    Pokud při instalaci modulu kontejneru Moby dojde k chybám, ověřte kompatibilitu jádra Linuxu pro Moby. Někteří výrobci vložených zařízení dodávají image zařízení, která obsahují vlastní linuxová jádra bez funkcí potřebných pro kompatibilitu modulu kontejnerů. Spuštěním následujícího příkazu, který používá skript check-config od Moby, zkontrolujte konfiguraci jádra:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Ve výstupu skriptu zkontrolujte, jestli jsou všechny položky v části Generally Necessary a Network Drivers jsou povolené. Pokud vám chybí funkce, povolte je opětovným sestavením jádra ze zdroje a výběrem přidružených modulů pro zahrnutí do příslušného jádra .config. Podobně pokud používáte generátor konfigurace jádra, například defconfig nebo menuconfig, vyhledejte a povolte příslušné funkce a odpovídajícím způsobem znovu sestavte jádro. Po nasazení nově upraveného jádra znovu spusťte skript check-config a ověřte, že všechny požadované funkce byly úspěšně povolené.

Instalace modulu runtime IoT Edge

Proces démon zabezpečení IoT Edge poskytuje a udržuje standardy zabezpečení na zařízení IoT Edge. Proces démon se spustí při každém spuštění a spustí zařízení spuštěním zbytku modulu runtime IoT Edge.

Kroky v této části představují typický proces instalace nejnovější verze na zařízení s připojením k internetu. Pokud potřebujete nainstalovat konkrétní verzi, jako je předběžná verze, nebo je potřeba ji nainstalovat offline, postupujte podle pokynů pro offline nebo konkrétní instalaci verze dále v tomto článku.

Nainstalujte IoT Edge verze 1.1.* spolu s balíčkem libiothsm-std :

sudo apt-get update; \
  sudo apt-get install iotedge

Poznámka:

IoT Edge verze 1.1 je dlouhodobá větev ioT Edge. Pokud používáte starší verzi, doporučujeme nainstalovat nebo aktualizovat nejnovější opravu, protože starší verze už nejsou podporované.

Zřízení zařízení s využitím cloudové identity

Po instalaci modulu runtime na zařízení nakonfigurujte zařízení s informacemi, které používá pro připojení ke službě zřizování zařízení a ioT Hubu.

  1. Seznamte se s oborem ID služby zřizování zařízení a ID registrace zařízení, které jste shromáždili dříve.

  2. Otevřete konfigurační soubor na zařízení IoT Edge.

    sudo nano /etc/iotedge/config.yaml
    
  3. Vyhledejte část konfigurace zřizování souboru. Odkomentujte řádky pro zřizování TPM a ujistěte se, že jsou všechny ostatní řádky zřizování okomentované.

    Řádek provisioning: by neměl mít žádné předchozí prázdné znaky a vnořené položky by měly být odsazené o dvě mezery.

    # DPS TPM provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "SCOPE_ID_HERE"
      attestation:
        method: "tpm"
        registration_id: "REGISTRATION_ID_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: false
    
  4. Aktualizujte hodnoty scope_id registration_id služby zřizování zařízení a informací o zařízení. Hodnota scope_id je obor ID ze stránky přehledu instance služby zřizování zařízení.

  5. Volitelně můžete pomocí always_reprovision_on_startup řádků dynamic_reprovisioning nakonfigurovat chování opětovného zřízení zařízení. Pokud je zařízení nastavené na opětovné zřízení při spuštění, vždy se nejprve pokusí zřídit službu DPS a v případě selhání se vrátí do zálohy zřizování. Pokud je zařízení nastavené na dynamické opětovné zřízení, IoT Edge (a všechny moduly) se restartuje a znovu vytvoří, pokud se zjistí událost opětovného zřízení, například pokud se zařízení přesune z jednoho IoT Hubu do jiného. Konkrétně IoT Edge kontroluje bad_credential nebo device_disabled chyby ze sady SDK za účelem zjištění události opětovného zřízení. Pokud chcete tuto událost aktivovat ručně, zakažte zařízení v IoT Hubu. Další informace najdete v tématu Koncepty opětovného zřízení zařízení ve službě IoT Hub.

  6. Soubor uložte a zavřete.

Udělení přístupu k čipu TPM službě IoT Edge

Modul runtime IoT Edge potřebuje přístup k čipu TPM, aby se zařízení automaticky zřídilo.

Přístup TPM k modulu runtime IoT Edge můžete udělit přepsáním systémových nastavení tak, aby iotedge služba má kořenová oprávnění. Pokud nechcete zvýšit oprávnění služby, můžete k ručnímu poskytnutí přístupu pomocí čipu TPM použít také následující postup.

  1. Vytvořte nové pravidlo, které dáte modulu runtime IoT Edge přístup a tpm0 tpmrm0.

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  2. Otevřete soubor pravidel.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  3. Do souboru pravidel zkopírujte následující informace o přístupu. Na tpmrm0 zařízeních, která používají jádro starší než 4.12, nemusí být k dispozici. Zařízení, která toto pravidlo nemají tpmrm0 , budou toto pravidlo bezpečně ignorovat.

    # allow iotedge access to tpm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="iotedge", MODE="0600"
    KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="iotedge", MODE="0600"
    
  4. Uložte a ukončete soubor.

  5. udev Aktivujte systém pro vyhodnocení nového pravidla.

    /bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
    
  6. Ověřte, že se pravidlo úspěšně použilo.

    ls -l /dev/tpm*
    

    Úspěšný výstup se zobrazí takto:

    crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpm0
    crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpmrm0
    

    Pokud nevidíte, že se použila správná oprávnění, zkuste počítač restartovat a aktualizovat udev.

  7. Restartujte modul runtime IoT Edge, aby se zachytály všechny změny konfigurace, které jste provedli na zařízení.

    sudo systemctl restart iotedge
    

Ověření úspěšné instalace

Pokud jste to ještě neudělali, restartujte modul runtime IoT Edge, aby se zabraly všechny změny konfigurace, které jste provedli na zařízení.

sudo systemctl restart iotedge

Zkontrolujte, jestli je spuštěný modul runtime IoT Edge.

sudo systemctl status iotedge

Prozkoumejte protokoly démona.

journalctl -u iotedge --no-pager --no-full

Pokud se zobrazí chyby zřizování, může se stát, že se změny konfigurace ještě neprojevily. Zkuste démon IoT Edge restartovat znovu.

sudo systemctl daemon-reload

Nebo zkuste restartovat virtuální počítač, abyste zjistili, jestli se změny projeví na novém spuštění.

Pokud se modul runtime úspěšně spustil, můžete přejít do centra IoT a zjistit, že se vaše nové zařízení automaticky zřídilo. Teď je vaše zařízení připravené ke spuštění modulů IoT Edge.

Výpis spuštěných modulů

iotedge list

Můžete ověřit, že se použila jednotlivá registrace, kterou jste vytvořili ve službě zřizování zařízení. Na webu Azure Portal přejděte k instanci služby zřizování zařízení. Otevřete podrobnosti o registraci pro jednotlivou registraci, kterou jste vytvořili. Všimněte si, že se přiřadí stav registrace a zobrazí se ID zařízení.

Další kroky

Proces registrace služby Device Provisioning umožňuje nastavit ID zařízení a značky dvojčat zařízení současně se zřízením nového zařízení. Tyto hodnoty můžete použít k cílení na jednotlivá zařízení nebo skupiny zařízení pomocí automatické správy zařízení.

Naučte se nasazovat a monitorovat moduly IoT Edge ve velkém měřítku pomocí webu Azure Portal nebo Azure CLI.