Vytváření a zřizování zařízení IoT Edge ve velkém měřítku pomocí čipu TPM v Linuxu
Platí pro: IoT Edge 1.5 IoT Edge 1.4
Důležité
Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek 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
- 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í:
- Načtení informací o zřizování pro čip TPM
- Vytvořte pro své zařízení individuální registraci v instanci služby IoT Hub device Provisioning.
- 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
Poznámka:
Tento článek dříve použil tpm_device_provision
nástroj ze sady IoT C SDK ke generování informací o zřizování. Pokud jste na tomto nástroji dříve spoléhali, mějte na paměti následující postup vygenerování jiného ID registrace pro stejný veřejný ověřovací klíč. Pokud potřebujete znovu vytvořit ID registrace jako předtím, přečtěte si, jak ho nástroj C SDK tpm_device_provision vygeneruje. Ujistěte se, že ID registrace pro jednotlivou registraci v DPS odpovídá ID registrace, které má zařízení IoT Edge používat.
V této části použijete softwarové nástroje TPM2 k načtení ověřovacího klíče pro čip TPM a vygenerování jedinečného ID registrace. Tato část odpovídá kroku 3: Zařízení má v procesu nainstalován firmware a software pro integraci čipu TPM do výrobního procesu.
Instalace nástrojů TPM2
Přihlaste se ke svému zařízení a nainstalujte tpm2-tools
balíček.
sudo apt-get install tpm2-tools
Spuštěním následujícího skriptu si přečtěte ověřovací klíč a vytvořte ho, pokud ještě neexistuje.
#!/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
V okně výstupu se zobrazí ověřovací klíč zařízení a jedinečné ID registrace. 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.
Na webu Azure Portal přejděte do vaší instance služby IoT Hub device Provisioning.
V části Nastavení vyberte Spravovat registrace.
Vyberte Přidat jednotlivé registrace a pak proveďte následující kroky a nakonfigurujte registraci:
V případě mechanismu vyberte TPM.
Zadejte ověřovací klíč a ID registrace, které jste zkopírovali z virtuálního počítače nebo fyzického zařízení.
Pokud chcete, zadejte ID zařízení. Pokud nezadáte ID zařízení, použije se ID registrace.
Výběrem možnosti True deklarujte, že virtuální počítač nebo fyzické zařízení je zařízení IoT Edge.
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í.
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.
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.
Pro operační systémy platformy s podporou vrstvy 2 jsou instalační balíčky dostupné ve verzích Azure IoT Edge. Postup instalace najdete v offline nebo konkrétní instalaci verze.
Instalaci je možné provést několika příkazy. Otevřete terminál a spusťte následující příkazy:
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
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
Další informace o verzích operačního systému najdete na podporovaných platformách Azure IoT Edge.
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 kontejnerový modul oficiálně podporovaný službou IoT Edge. Image kontejnerů Dockeru CE/EE jsou kompatibilní s modulem runtime Moby. Pokud používáte moduly snaps Ubuntu Core, bude modul snap Dockeru obsluhován canonical a podporován pro produkční scénáře.
Nainstalujte modul Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
Ve výchozím nastavení modul kontejneru nenastavuje limity velikosti protokolu kontejneru. Časem to může vést k zaplnění zařízení protokoly a vyčerpání místa na disku. Protokol ale můžete nakonfigurovat tak, aby se zobrazoval místně, i když je volitelný. Další informace o konfiguraci protokolování najdete v kontrolním seznamu produkčního nasazení.
Následující kroky ukazují, jak nakonfigurovat kontejner tak, aby jako mechanismus protokolování používal local
ovladač protokolování.
Vytvoření nebo úprava konfiguračního souboru existujícího procesu démona Dockeru
sudo nano /etc/docker/daemon.json
Nastavte výchozí ovladač protokolování na
local
ovladač protokolování, jak je znázorněno v příkladu.{ "log-driver": "local" }
Restartujte modul kontejneru, aby se změny projevily.
sudo systemctl restart docker
Instalace modulu runtime IoT Edge
Služba IoT Edge poskytuje a udržuje standardy zabezpečení na zařízení IoT Edge. Služba se spustí při každém spuštění a spuštění zařízení spuštěním zbytku modulu runtime IoT Edge.
Poznámka:
Počínaje verzí 1.2 služba identit IoT zpracovává zřizování a správu identit pro IoT Edge a pro další komponenty zařízení, které potřebují komunikovat se službou IoT Hub.
Kroky v této části představují typický proces instalace nejnovější verze IoT Edge 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.
Tip
Pokud už máte zařízení IoT Edge se starší verzí a chcete upgradovat na nejnovější verzi, postupujte podle pokynů v tématu Aktualizace démona zabezpečení a modulu runtime ioT Edge. Novější verze se dostatečně liší od předchozích verzí IoT Edge, které jsou potřeba k upgradu konkrétní kroky.
Nainstalujte nejnovější verzi IoT Edge a balíček služby identit IoT (pokud ještě nejste aktuální):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
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.
Seznamte se s oborem ID služby zřizování zařízení a ID registrace zařízení, které jste shromáždili dříve.
Vytvořte konfigurační soubor pro vaše zařízení na základě souboru šablony, který je součástí instalace IoT Edge.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
Otevřete konfigurační soubor na zařízení IoT Edge.
sudo nano /etc/aziot/config.toml
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é.
# 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
Aktualizujte hodnoty
id_scope
registration_id
služby zřizování zařízení a informací o zařízení. Hodnotascope_id
je obor ID ze stránky přehledu instance služby zřizování zařízení.Další informace o zřizování nastavení konfigurace najdete v tématu Konfigurace nastavení zařízení IoT Edge.
Volitelně můžete najít část režimu automatického opětovného zřízení souboru. Pomocí parametru
auto_reprovisioning_mode
nakonfigurujte chování opětovného zřízení zařízení. Dynamické – opětovné zřízení, když zařízení zjistí, že mohlo být přesunuto z jednoho IoT Hubu do jiného. Tato možnost je výchozí. AlwaysOnStartup – Opětovné zřízení při restartování zařízení nebo chybové ukončení způsobí restartování démonů. OnErrorOnly – Automatické opětovné zřízení zařízení nikdy neaktivujte. Každý režim má implicitní opětovné zřízení zařízení, pokud se zařízení během zřizování identit nemůže připojit ke službě IoT Hub kvůli chybám připojení. Další informace najdete v tématu Koncepty opětovného zřízení zařízení ve službě IoT Hub.Volitelně můžete odkomentovat
payload
parametr a zadat cestu k místnímu souboru JSON. Obsah souboru se odešle do DPS jako další data , když se zařízení zaregistruje. To je užitečné pro vlastní přidělení. Pokud například chcete přidělit zařízení na základě ID modelu technologie Plug and Play IoT bez zásahu člověka.Soubor uložte a zavřete.
Udělení přístupu k čipu TPM službě IoT Edge
Modul runtime IoT Edge spoléhá na službu TPM, která zprostředkuje přístup k čipu TPM zařízení. Tato služba potřebuje přístup k čipu TPM, aby se zařízení automaticky zřídilo.
Přístup k čipu TPM můžete udělit přepsáním systémových nastavení tak, aby aziottpm
služba získala 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.
Vytvořte nové pravidlo, které dává modulu runtime IoT Edge přístup k
tpm0
modulu runtime atpmrm0
.sudo touch /etc/udev/rules.d/tpmaccess.rules
Otevřete soubor pravidel.
sudo nano /etc/udev/rules.d/tpmaccess.rules
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 aziottpm access to tpm0 and tpmrm0 KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="aziottpm", MODE="0660" KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="aziottpm", MODE="0660"
Uložte a ukončete soubor.
udev
Aktivujte systém pro vyhodnocení nového pravidla./bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
Ověřte, že se pravidlo úspěšně použilo.
ls -l /dev/tpm*
Úspěšný výstup se zobrazí takto:
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
Pokud nevidíte, že se použila správná oprávnění, zkuste počítač restartovat a aktualizovat
udev
.Použijte změny konfigurace, které jste provedli na zařízení.
sudo iotedge config apply
Ověření úspěšné instalace
Pokud jste to ještě neudělali, použijte změny konfigurace, které jste provedli na zařízení.
sudo iotedge config apply
Zkontrolujte, jestli je spuštěný modul runtime IoT Edge.
sudo iotedge system status
Prozkoumejte protokoly démona.
sudo iotedge system logs
Pokud se zobrazí chyby zřizování, může se stát, že se změny konfigurace ještě neprojevily. Zkuste restartovat démon IoT Edge.
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.