Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
IoT Edge 1.5
Důležité
Podporovanou verzí je IoT Edge 1.5 LTS. IoT Edge 1.4 LTS je konec životnosti od 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.
Tento článek vysvětluje, jak vytvořit důvěryhodné připojení mezi bránou IoT Edge a podřízeným zařízením IoT Edge. Tato konfigurace se nazývá vnořená hrana.
Ve scénáři brány může být zařízení IoT Edge bránou i podřízeným zařízením. Můžete vrstvit několik bran IoT Edge a vytvořit tak hierarchii zařízení. Podřízená zařízení se ověřují a odesílají nebo přijímají zprávy prostřednictvím svého nadřazeného bránového zařízení.
Tento článek popisuje dvě konfigurace pro zařízení IoT Edge v hierarchii brány. První je zařízení IoT Edge nejvyšší vrstvy . Když se mezi sebou připojuje několik zařízení IoT Edge, považuje se každé zařízení, které nemá nadřazené zařízení, ale připojuje se přímo ke službě IoT Hub, v horní vrstvě. Toto zařízení zodpovídá za zpracování požadavků ze všech zařízení pod ním. Druhá konfigurace se vztahuje na jakékoli zařízení IoT Edge v nižší vrstvě hierarchie. Tato zařízení můžou být bránou pro ostatní podřízená zařízení IoT a IoT Edge, ale musí také směrovat veškerou komunikaci prostřednictvím jejich vlastních nadřazených zařízení.
Některé síťové architektury vyžadují, aby se ke cloudu mohl připojit jenom nejlepší zařízení IoT Edge v hierarchii. V této konfiguraci můžou všechna zařízení IoT Edge v nižších vrstvách hierarchie komunikovat pouze s jejich bránou (nadřazeným) zařízením a všemi podřízenými (podřízenými) zařízeními.
Kroky v tomto článku vycházejí z konfigurace zařízení IoT Edge tak, aby fungovalo jako transparentní brána, která nastaví zařízení IoT Edge jako bránu pro podřízená zařízení IoT. Stejný základní postup platí pro všechny scénáře brány:
- Ověřování: Vytvoření identit služby IoT Hub pro všechna zařízení v hierarchii brány
- Autorizace: Nastavte vztah nadřazenosti a podřízenosti ve službě IoT Hub tak, aby se podřízená zařízení připojovala k nadřazeným zařízením, jako by se připojila ke službě IoT Hub.
- Zjišťování brány: Ujistěte se, že podřízené zařízení může najít jeho nadřazené zařízení v místní síti.
- Zabezpečené připojení: Vytvořte zabezpečené připojení s důvěryhodnými certifikáty, které jsou součástí stejného řetězce.
Požadavky
- Bezplatné nebo standardní centrum IoT.
- Nejméně dvě zařízení IoT Edge, jedno jako zařízení nejvyšší vrstvy a jedno nebo více zařízení nižší vrstvy. Pokud nemáte k dispozici zařízení IoT Edge, můžete azure IoT Edge spustit na virtuálních počítačích s Ubuntu.
- Pokud k vytváření a správě zařízení používáte Azure CLI , nainstalujte rozšíření Azure IoT.
Návod
Tento článek obsahuje podrobné kroky a možnosti, které vám pomůžou vytvořit správnou hierarchii brány pro váš scénář. Kurz s asistencí najdete v tématu Vytvoření hierarchie zařízení IoT Edge pomocí bran.
Vytvoření hierarchie brány
Hierarchii brány IoT Edge vytvoříte definováním vztahů nadřazenosti a podřízenosti pro zařízení IoT Edge ve scénáři. Nadřazené zařízení můžete nastavit při vytváření nové identity zařízení nebo můžete spravovat nadřazené a podřízené položky existující identity zařízení.
Krok nastavení vztahů nadřazenosti a podřízenosti autorizuje podřízená zařízení, aby se připojila k nadřazeným zařízením, jako by se připojila ke službě IoT Hub.
Nadřazená zařízení můžou být jenom zařízení IoT Edge, ale zařízení IoT Edge i zařízení IoT můžou být podřízená. Nadřazený objekt může mít mnoho podřízených položek, ale dítě může mít pouze jeden nadřazený objekt. Hierarchie brány se vytváří zřetězením sad nadřazených/podřízených, aby podřízená položka jednoho zařízení byla nadřazená druhé.
Ve výchozím nastavení může mít nadřazený objekt až 100 podřízených prvků. Tento limit můžete změnit nastavením proměnné prostředí MaxConnectedClients v modulu EdgeHub nadřazeného zařízení.
Na webu Azure Portal můžete spravovat vztah nadřazenosti a podřízenosti při vytváření nových identit zařízení nebo úpravou existujících zařízení.
Když vytvoříte nové zařízení IoT Edge, máte možnost zvolit nadřazená a podřízená zařízení ze seznamu existujících zařízení IoT Edge v daném centru.
- Na webu Azure Portal přejděte do svého centra IoT.
- V nabídce Správa zařízení vyberte zařízení.
- Vyberte Přidat zařízení a zaškrtněte políčko Zařízení IoT Edge .
- Spolu s nastavením ID zařízení a nastavení ověřování můžete nastavit nadřazené zařízení nebo zvolit podřízená zařízení.
- Zvolte zařízení nebo zařízení, která chcete použít jako nadřazený nebo podřízený objekt.
Můžete také vytvořit nebo spravovat vztahy nadřazenosti a podřízenosti pro existující zařízení.
- Na webu Azure Portal přejděte do svého centra IoT.
- V nabídce Správa zařízení vyberte zařízení.
- Ze seznamu vyberte zařízení IoT Edge, které chcete spravovat.
- Vyberte ikonu Nastavit nadřazené ozubené kolečko zařízenínebo Spravovat podřízená zařízení.
- Přidejte nebo odeberte všechna nadřazená nebo podřízená zařízení.
Poznámka:
Pokud chcete vytvořit vztahy nadřazenosti a podřízenosti prostřednictvím kódu programu, použijte sadu SDK služby IoT Hub pro C#, Javu nebo Node.js.
Tady je příklad přiřazení podřízených zařízení pomocí sady C# SDK.
RegistryManager_AddAndRemoveDeviceWithScope() Úkol ukazuje, jak programově vytvořit třívrstvou hierarchii. Zařízení IoT Edge je ve vrstvě 1 jako nadřazený objekt. Další zařízení IoT Edge je ve vrstvě dvě, které slouží jako podřízené i nadřazené zařízení. Nakonec je zařízení IoT ve třetí vrstvě, jako podřízené zařízení nejnižší vrstvy.
Vygenerování certifikátů
Aby bylo možné vytvořit zabezpečenou komunikaci mezi sebou, musí být na všech zařízeních ve stejné hierarchii brány nainstalovaný konzistentní řetěz certifikátů. Každé zařízení v hierarchii, ať už zařízení IoT Edge nebo podřízené zařízení IoT, potřebuje kopii stejného kořenového certifikátu certifikační autority. Každé zařízení IoT Edge v hierarchii pak použije tento kořenový certifikát certifikační autority jako kořen pro certifikát certifikační autority Edge.
Při tomto nastavení může každé podřízené zařízení IoT Edge ověřit identitu nadřazeného objektu ověřením, že hraničníhub, ke kterému se připojí, má certifikát serveru podepsaný certifikátem sdílené kořenové certifikační autority.
Další informace o požadavcích na certifikáty IoT Edge najdete v tématu Vysvětlení způsobu, jakým Azure IoT Edge používá certifikáty.
Vytvořte nebo požádejte o následující certifikáty:
- Kořenový certifikát certifikační autority, což je nejvyšší sdílený certifikát pro všechna zařízení v dané hierarchii brány. Tento certifikát je nainstalovaný na všech zařízeních.
- Všechny zprostředkující certifikáty , které chcete zahrnout do kořenového řetězu certifikátů.
- Certifikát certifikační autority Edge a jeho privátní klíč vygenerovaný kořenovými a zprostředkujícími certifikáty. Potřebujete jeden jedinečný certifikát certifikační autority Edge pro každé zařízení IoT Edge v hierarchii brány.
Můžete použít certifikační autoritu podepsanou svým držitelem nebo ji koupit od důvěryhodné komerční certifikační autority, jako je Baltimore, Verisign, Digicert nebo GlobalSign.
Pokud nemáte vlastní certifikáty pro testování, vytvořte jednu sadu kořenových a zprostředkujících certifikátů a pak vytvořte certifikáty certifikační autority Edge pro každé zařízení. Tyto příkazy například vytvoří kořenový certifikát certifikační autority, nadřazený certifikát zařízení a podřízený certifikát zařízení.
# !!! For test only - do not use in production !!! # Create the the root CA test certificate ./certGen.sh create_root_and_intermediate # Create the parent (gateway) device test certificate # signed by the shared root CA certificate ./certGen.sh create_edge_device_ca_certificate "gateway" # Create the downstream device test certificate # signed by the shared root CA certificate ./certGen.sh create_edge_device_ca_certificate "downstream"Upozorňující
Nepoužívejte certifikáty vytvořené testovacími skripty pro produkční prostředí. Obsahují pevně zakódovaná hesla a ve výchozím nastavení vyprší po 30 dnech. Certifikáty testovací certifikační autority jsou k dispozici pro demonstrační účely, které vám pomůžou porozumět certifikátům certifikační autority. Použijte vlastní osvědčené postupy zabezpečení pro vytváření certifikací a správu životnosti v produkčním prostředí.
Další informace o vytváření testovacích certifikátů najdete v tématu vytvoření ukázkových certifikátů pro testování funkcí zařízení IoT Edge.
Certifikáty a klíče budete muset přenést do každého zařízení. Můžete použít jednotku USB, službu, jako je Azure Key Vault, nebo s funkcí, jako je zabezpečené kopírování souborů. Vyberte jednu z těchto metod, která nejlépe odpovídá vašemu scénáři. Zkopírujte soubory do upřednostňovaného adresáře pro certifikáty a klíče. Používá se
/var/aziot/certspro certifikáty a/var/aziot/secretsklíče.
Další informace o instalaci certifikátů na zařízení najdete v tématu Správa certifikátů na zařízení IoT Edge.
Konfigurace nadřazeného zařízení
Pokud chcete nakonfigurovat nadřazené zařízení, otevřete místní nebo vzdálené příkazové prostředí.
Aby bylo možné povolit zabezpečená připojení, musí být každé nadřazené zařízení IoT Edge ve scénáři brány nakonfigurované s jedinečným certifikátem certifikační autority Edge a kopií certifikátu kořenové certifikační autority, který sdílí všechna zařízení v hierarchii brány.
Zkontrolujte, jestli certifikáty splňují požadavky na formát.
Přeneste kořenový certifikát certifikační autority, nadřazený certifikát certifikační autority Edge a nadřazený privátní klíč do nadřazeného zařízení.
Zkopírujte certifikáty a klíče do správných adresářů. Upřednostňované adresáře pro certifikáty zařízení jsou
/var/aziot/certsurčené pro certifikáty a/var/aziot/secretsklíče.### Copy device certificate ### # If the device certificate and keys directories don't exist, create, set ownership, and set permissions sudo mkdir -p /var/aziot/certs sudo chown aziotcs:aziotcs /var/aziot/certs sudo chmod 755 /var/aziot/certs sudo mkdir -p /var/aziot/secrets sudo chown aziotks:aziotks /var/aziot/secrets sudo chmod 700 /var/aziot/secrets # Copy full-chain device certificate and private key into the correct directory sudo cp iot-edge-device-ca-gateway-full-chain.cert.pem /var/aziot/certs sudo cp iot-edge-device-ca-gateway.key.pem /var/aziot/secrets ### Root certificate ### # Copy root certificate into the /certs directory sudo cp azure-iot-test-only.root.ca.cert.pem /var/aziot/certs # Copy root certificate into the CA certificate directory and add .crt extension. # The root certificate must be in the CA certificate directory to install it in the certificate store. # Use the appropriate copy command for your device OS or if using EFLOW. # For Ubuntu and Debian, use /usr/local/share/ca-certificates/ sudo cp azure-iot-test-only.root.ca.cert.pem /usr/local/share/azure-iot-test-only.root.ca.cert.pem.crt # For EFLOW, use /etc/pki/ca-trust/source/anchors/ sudo cp azure-iot-test-only.root.ca.cert.pem /etc/pki/ca-trust/source/anchors/azure-iot-test-only.root.ca.pem.crtZměňte vlastnictví a oprávnění certifikátů a klíčů.
# Give aziotcs ownership to certificates # Read and write for aziotcs, read-only for others sudo chown -R aziotcs:aziotcs /var/aziot/certs sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \; # Give aziotks ownership to private keys # Read and write for aziotks, no permission for others sudo chown -R aziotks:aziotks /var/aziot/secrets sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \; # Verify permissions of directories and files sudo ls -Rla /var/aziotVýstup seznamu se správným vlastnictvím a oprávněním je podobný následujícímu:
azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot /var/aziot: total 16 drwxr-xr-x 4 root root 4096 Dec 14 00:16 . drwxr-xr-x 15 root root 4096 Dec 14 00:15 .. drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 certs drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 secrets /var/aziot/certs: total 20 drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 . drwxr-xr-x 4 root root 4096 Dec 14 00:16 .. -rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem -rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-gateway-full-chain.cert.pem /var/aziot/secrets: total 16 drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 . drwxr-xr-x 4 root root 4096 Dec 14 00:16 .. -rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-gateway.key.pemNainstalujte kořenový certifikát certifikační autority na nadřazené zařízení IoT Edge aktualizací úložiště certifikátů na zařízení pomocí příkazu specifického pro platformu.
# Update the certificate store # For Ubuntu or Debian - use update-ca-certificates sudo update-ca-certificates # For EFLOW or RHEL - use update-ca-trust sudo update-ca-trustDalší informace o použití
update-ca-trustv EFLOW naleznete v tématu CBL-Mariner SSL CA správa certifikátů.
Příkaz hlásí jeden certifikát byl přidán do /etc/ssl/certs.
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Aktualizace nadřazeného konfiguračního souboru
Na svém zařízení byste už měli mít nainstalovaný IoT Edge. Pokud ne, postupujte podle pokynů k ručnímu zřízení jednoho zařízení IoT Edge s Linuxem.
Ověřte, že
/etc/aziot/config.tomlkonfigurační soubor existuje na nadřazené zařízení.Pokud konfigurační soubor na vašem zařízení neexistuje, vytvořte ho pomocí následujícího příkazu na základě souboru šablony:
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.tomlSoubor šablony můžete použít také jako odkaz na přidání parametrů konfigurace v této části.
Otevřete konfigurační soubor IoT Edge pomocí editoru. Například pomocí editoru
nano/etc/aziot/config.tomlotevřete soubor.sudo nano /etc/aziot/config.tomlVyhledejte parametr názvu hostitele nebo ho přidejte na začátek konfiguračního souboru. Aktualizujte hodnotu tak, aby byla plně kvalifikovaným názvem domény (FQDN) nebo IP adresou nadřazeného zařízení IoT Edge. Příklad:
hostname = "10.0.0.4"Aby bylo možné povolit zjišťování brány, musí každé nadřazené zařízení IoT Edge zadat parametr názvu hostitele, který používají jeho podřízená zařízení k vyhledání na místní síti. Každé podřízené zařízení IoT Edge musí zadat parametr parent_hostname k identifikaci nadřazeného objektu. V hierarchickém scénáři, kdy je jedno zařízení IoT Edge nadřazeným i podřízeným zařízením, potřebuje oba parametry.
Parametry názvu hostitele a trust_bundle_cert musí být na začátku konfiguračního souboru před všemi oddíly. Přidáním parametru před definovanými oddíly zajistíte, že se správně použije.
Použijte název hostitele kratší než 64 znaků, což je limit znaků pro běžný název certifikátu serveru.
Být konzistentní se vzorem názvu hostitele v hierarchii brány. Použijte plně kvalifikované názvy domén nebo IP adresy, ale ne obojí. Pro připojení podřízených zařízení se vyžaduje plně kvalifikovaný název domény nebo IP adresa.
Před vytvořením kontejneru EdgeHub nastavte název hostitele. Pokud je edgeHub spuštěný, změna názvu hostitele v konfiguračním souboru se neprojeví, dokud se kontejner znovu nevytvoří. Další informace o tom, jak ověřit použití názvu hostitele, najdete v části ověření nadřazené konfigurace .
Vyhledejte parametr trust bundle cert nebo ho přidejte na začátek konfiguračního souboru.
trust_bundle_certAktualizujte parametr pomocí identifikátoru URI souboru na kořenový certifikát certifikační autority na vašem zařízení. Příklad:trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"V konfiguračním souboru vyhledejte nebo přidejte oddíl certifikátu certifikační autority Edge. Aktualizujte parametry certifikátu
certa privátního klíčepkpomocí cest identifikátoru URI souboru pro soubory s úplným řetězem certifikátů a klíčů na nadřazené zařízení IoT Edge. IoT Edge vyžaduje, aby certifikát a privátní klíč byly ve formátu PEM (Text-Based Privacy-Enhanced Mail). Příklad:[edge_ca] cert = "file:///var/aziot/certs/iot-edge-device-ca-gateway-full-chain.cert.pem" pk = "file:///var/aziot/secrets/iot-edge-device-ca-gateway.key.pem"Ověřte, že vaše zařízení IoT Edge používá při spuštění správnou verzi agenta IoT Edge. Vyhledejte část Výchozí agent Edge a nastavte hodnotu image pro IoT Edge na verzi 1.5. Příklad:
[agent] name = "edgeAgent" type = "docker" [agent.config] image = "mcr.microsoft.com/azureiotedge-agent:1.5"Začátek nadřazeného konfiguračního souboru by měl vypadat podobně jako v následujícím příkladu.
hostname = "10.0.0.4" trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem" [edge_ca] cert = "file:///var/aziot/certs/iot-edge-device-ca-gateway-full-chain.cert.pem" pk = "file:///var/aziot/secrets/iot-edge-device-ca-gateway.key.pem"Uložte a zavřete
config.tomlkonfigurační soubor. Pokud například používáte editor nano, vyberte , - a Exit.Pokud jste dříve použili nějaké jiné certifikáty pro IoT Edge, odstraňte soubory v následujících dvou adresářích a ujistěte se, že se použijí nové certifikáty:
/var/lib/aziot/certd/certs/var/lib/aziot/keyd/keys
Použijte změny.
sudo iotedge config applyZkontrolujte případné chyby v konfiguraci.
sudo iotedge check --verbosePoznámka:
Na nově zřízeném zařízení se může zobrazit chyba související se službou IoT Edge Hub:
× provozní připravenosti: Adresář úložiště Edge Hubu je trvalý v systému souborů hostitele – chyba
Nepodařilo se zkontrolovat aktuální stav kontejneru EdgeHub.
Tato chyba se očekává na nově zřízeném zařízení, protože modul IoT Edge Hub není spuštěný. Pokud chcete tuto chybu vyřešit, nastavte v IoT Hubu moduly pro zařízení a vytvořte nasazení. Vytvoření nasazení pro zařízení spustí moduly na zařízení, včetně modulu IoT Edge Hubu.
Ověření nadřazené konfigurace
Název hostitele musí být kvalifikovaný název domény (FQDN) nebo IP adresa zařízení IoT Edge, protože IoT Edge používá tuto hodnotu v certifikátu serveru při připojení podřízených zařízení. Hodnoty se musí shodovat nebo se zobrazí chyba neshody IP adres.
Pokud chcete ověřit název hostitele, musíte zkontrolovat proměnné prostředí kontejneru EdgeHub .
Vypíše spuštěné kontejnery IoT Edge.
iotedge listOvěřte, že jsou spuštěné kontejnery edgeAgent a edgeHub . Výstup příkazu by měl být podobný následujícímu příkladu.
NAME STATUS DESCRIPTION CONFIG SimulatedTemperatureSensor running Up 5 seconds mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0 edgeAgent running Up 17 seconds mcr.microsoft.com/azureiotedge-agent:1.5 edgeHub running Up 6 seconds mcr.microsoft.com/azureiotedge-hub:1.5Prozkoumejte kontejner EdgeHubu.
sudo docker inspect edgeHubVe výstupu vyhledejte parametr EdgeDeviceHostName v části Env .
"EdgeDeviceHostName=10.0.0.4"Ověřte, že hodnota parametru EdgeDeviceHostName odpovídá
config.tomlnastavení názvu hostitele. Pokud se neshoduje, kontejner EdgeHub se spustil při úpravě a použití konfigurace. Pokud chcete aktualizovat EdgeDeviceHostName, odeberte kontejner edgeAgent .sudo docker rm -f edgeAgentKontejnery edgeAgent a edgeHub se znovu vytvoří a spustí během několika minut. Po spuštění kontejneru EdgeHub zkontrolujte kontejner a ověřte, že parametr EdgeDeviceHostName odpovídá konfiguračnímu souboru.
Konfigurace podřízených zařízení
Pokud chcete nakonfigurovat podřízené zařízení, otevřete místní nebo vzdálené příkazové prostředí.
Aby bylo možné povolit zabezpečená připojení, musí být každé podřízené zařízení IoT Edge ve scénáři brány nakonfigurované s jedinečným certifikátem certifikační autority Edge a kopií certifikátu kořenové certifikační autority, který sdílí všechna zařízení v hierarchii brány.
Zkontrolujte, jestli certifikáty splňují požadavky na formát.
Přeneste kořenový certifikát certifikační autority, podřízený certifikát certifikační autority Edge a podřízený privátní klíč do podřízeného zařízení.
Zkopírujte certifikáty a klíče do správných adresářů. Upřednostňované adresáře pro certifikáty zařízení jsou
/var/aziot/certsurčené pro certifikáty a/var/aziot/secretsklíče.### Copy device certificate ### # If the device certificate and keys directories don't exist, create, set ownership, and set permissions sudo mkdir -p /var/aziot/certs sudo chown aziotcs:aziotcs /var/aziot/certs sudo chmod 755 /var/aziot/certs sudo mkdir -p /var/aziot/secrets sudo chown aziotks:aziotks /var/aziot/secrets sudo chmod 700 /var/aziot/secrets # Copy device full-chain certificate and private key into the correct directory sudo cp iot-device-downstream-full-chain.cert.pem /var/aziot/certs sudo cp iot-device-downstream.key.pem /var/aziot/secrets ### Root certificate ### # Copy root certificate into the /certs directory sudo cp azure-iot-test-only.root.ca.cert.pem /var/aziot/certs # Copy root certificate into the CA certificate directory and add .crt extension. # The root certificate must be in the CA certificate directory to install it in the certificate store. # Use the appropriate copy command for your device OS or if using EFLOW. # For Ubuntu and Debian, use /usr/local/share/ca-certificates/ sudo cp azure-iot-test-only.root.ca.cert.pem /usr/local/share/azure-iot-test-only.root.ca.cert.pem.crt # For EFLOW, use /etc/pki/ca-trust/source/anchors/ sudo cp azure-iot-test-only.root.ca.cert.pem /etc/pki/ca-trust/source/anchors/azure-iot-test-only.root.ca.pem.crtZměňte vlastnictví a oprávnění certifikátů a klíčů.
# Give aziotcs ownership to certificates # Read and write for aziotcs, read-only for others sudo chown -R aziotcs:aziotcs /var/aziot/certs sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \; # Give aziotks ownership to private keys # Read and write for aziotks, no permission for others sudo chown -R aziotks:aziotks /var/aziot/secrets sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;Nainstalujte kořenový certifikát certifikační autority na podřízené zařízení IoT Edge aktualizací úložiště certifikátů v zařízení pomocí příkazu specifického pro platformu.
# Update the certificate store # For Ubuntu or Debian - use update-ca-certificates sudo update-ca-certificates # For EFLOW or RHEL - use update-ca-trust sudo update-ca-trustDalší informace o použití
update-ca-trustv EFLOW naleznete v tématu CBL-Mariner SSL CA správa certifikátů.
Příkaz hlásí jeden certifikát byl přidán do /etc/ssl/certs.
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Aktualizace konfiguračního souboru podřízené položky
Na svém zařízení byste už měli mít nainstalovaný IoT Edge. Pokud ne, postupujte podle pokynů k ručnímu zřízení jednoho zařízení IoT Edge s Linuxem.
Ověřte, že
/etc/aziot/config.tomlkonfigurační soubor existuje na podřízené zařízení.Pokud konfigurační soubor na vašem zařízení neexistuje, vytvořte ho pomocí následujícího příkazu na základě souboru šablony:
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.tomlSoubor šablony můžete použít také jako odkaz na přidání parametrů konfigurace v této části.
Otevřete konfigurační soubor IoT Edge pomocí editoru. Například pomocí editoru
nano/etc/aziot/config.tomlotevřete soubor.sudo nano /etc/aziot/config.tomlVyhledejte parametr parent_hostname nebo ho přidejte na začátek konfiguračního souboru Každý podřízený zařízení IoT Edge musí zadat parametr parent_hostname k identifikaci nadřazeného objektu.
parent_hostnameAktualizujte parametr tak, aby byl plně kvalifikovaným názvem domény nebo IP adresou nadřazeného zařízení, který odpovídá názvu hostitele v konfiguračním souboru nadřazeného zařízení. Příklad:parent_hostname = "10.0.0.4"Vyhledejte parametr trust bundle cert nebo ho přidejte na začátek konfiguračního souboru.
trust_bundle_certAktualizujte parametr pomocí identifikátoru URI souboru na kořenový certifikát certifikační autority na vašem zařízení. Příklad:trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"V konfiguračním souboru vyhledejte nebo přidejte oddíl certifikátu certifikační autority Edge. Aktualizujte parametry certifikátu
certa privátního klíčepkpomocí cest identifikátoru URI souboru pro úplné řetězení certifikátů a souborů klíčů v podřízené zařízení IoT Edge. IoT Edge vyžaduje, aby certifikát a privátní klíč byly ve formátu PEM (Text-Based Privacy-Enhanced Mail). Příklad:[edge_ca] cert = "file:///var/aziot/certs/iot-device-downstream-full-chain.cert.pem" pk = "file:///var/aziot/secrets/iot-device-downstream.key.pem"Ověřte, že vaše zařízení IoT Edge používá při spuštění správnou verzi agenta IoT Edge. Vyhledejte část Výchozí agent Edge a nastavte hodnotu image pro IoT Edge na verzi 1.5. Příklad:
[agent] name = "edgeAgent" type = "docker" [agent.config] image: "mcr.microsoft.com/azureiotedge-agent:1.5"Začátek konfiguračního souboru podřízeného serveru by měl vypadat podobně jako v následujícím příkladu.
parent_hostname = "10.0.0.4" trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem" [edge_ca] cert = "file:///var/aziot/certs/iot-device-downstream-full-chain.cert.pem" pk = "file:///var/aziot/secrets/iot-device-downstream.key.pem"Uložte a zavřete
config.tomlkonfigurační soubor. Pokud například používáte editor nano, vyberte , - a Exit.Pokud jste dříve použili nějaké jiné certifikáty pro IoT Edge, odstraňte soubory v následujících dvou adresářích a ujistěte se, že se použijí nové certifikáty:
/var/lib/aziot/certd/certs/var/lib/aziot/keyd/keys
Použijte změny.
sudo iotedge config applyZkontrolujte případné chyby v konfiguraci.
sudo iotedge check --verboseNávod
Nástroj pro kontrolu IoT Edge používá ke kontrole diagnostiky kontejner. Pokud chcete tento nástroj použít na podřízených zařízeních IoT Edge, ujistěte se, že mají přístup k
mcr.microsoft.com/azureiotedge-diagnostics:latestimagi kontejneru ve vašem privátním registru kontejneru.Poznámka:
Na nově zřízeném zařízení se může zobrazit chyba související se službou IoT Edge Hub:
× provozní připravenosti: Adresář úložiště Edge Hubu je trvalý v systému souborů hostitele – chyba
Nepodařilo se zkontrolovat aktuální stav kontejneru EdgeHub.
Tato chyba se očekává na nově zřízeném zařízení, protože modul IoT Edge Hub není spuštěný. Pokud chcete tuto chybu vyřešit, nastavte v IoT Hubu moduly pro zařízení a vytvořte nasazení. Vytvoření nasazení pro zařízení spustí moduly na zařízení, včetně modulu IoT Edge Hubu.
Síťová izolace podřízených zařízení
Dosud uvedené kroky v tomto článku nastaví zařízení IoT Edge jako bránu nebo podřízené zařízení a vytvoří mezi nimi důvěryhodné připojení. Zařízení brány zpracovává interakce mezi podřízeným zařízením a IoT Hubem, včetně ověřování a směrování zpráv. Moduly nasazené do podřízených zařízení IoT Edge stále můžou vytvářet vlastní připojení ke cloudovým službám.
Některé síťové architektury, jako jsou architektury, které se řídí standardem ISA-95, se snaží minimalizovat počet připojení k internetu. V těchto scénářích můžete nakonfigurovat podřízená zařízení IoT Edge bez přímého připojení k internetu. Kromě směrování komunikace IoT Hubu prostřednictvím zařízení brány můžou podřízená zařízení IoT Edge spoléhat na zařízení brány pro všechna cloudová připojení.
Tato konfigurace sítě vyžaduje, aby přímé připojení ke cloudu měli jenom zařízení IoT Edge v horní vrstvě hierarchie brány. Zařízení IoT Edge v nižších vrstvách můžou komunikovat pouze s nadřazeným zařízením nebo všemi podřízenými zařízeními. Tento scénář umožňují speciální moduly na zařízeních brány, včetně následujících:
Modul proxy rozhraní API se vyžaduje na jakékoli bráně IoT Edge, která má pod sebou jiné zařízení IoT Edge. To znamená, že musí být na každé vrstvě hierarchie brány s výjimkou spodní vrstvy. Tento modul používá reverzní proxy server nginx ke směrování dat HTTP přes síťové vrstvy přes jeden port. Je vysoce konfigurovatelná prostřednictvím dvojčete modulu a proměnných prostředí, takže je můžete upravit tak, aby vyhovovala požadavkům na scénář brány.
Modul registru Dockeru je možné nasadit na bránu IoT Edge v horní vrstvě hierarchie brány. Tento modul zodpovídá za načítání a ukládání imagí kontejnerů do mezipaměti jménem všech zařízení IoT Edge v nižších vrstvách. Alternativou k nasazení tohoto modulu v horní vrstvě je použití místního registru nebo ruční načtení imagí kontejnerů do zařízení a nastavení zásad vyžádané replikace modulu na nikdy.
Azure Blob Storage ve službě IoT Edge je možné nasadit na bránu IoT Edge v horní vrstvě hierarchie brány. Tento modul zodpovídá za nahrávání objektů blob jménem všech zařízení IoT Edge v nižších vrstvách. Schopnost nahrávat objekty blob také umožňuje užitečné funkce řešení potíží pro zařízení IoT Edge v nižších vrstvách, jako je nahrávání protokolů modulů a podpora nahrávání sady prostředků.
Konfigurace sítě
Pro každé zařízení brány v horní vrstvě musí síťové operátory:
Zadejte statickou IP adresu nebo plně kvalifikovaný název domény (FQDN).
Autorizovat odchozí komunikaci z této IP adresy k názvu hostitele azure IoT Hubu přes porty 443 (HTTPS) a 5671 (AMQP).
Autorizace odchozí komunikace z této IP adresy na název hostitele služby Azure Container Registry přes port 443 (HTTPS).
Modul proxy rozhraní API dokáže zpracovat připojení pouze k jednomu registru kontejneru najednou. Doporučujeme mít všechny image kontejnerů, včetně veřejných imagí poskytovaných službou Microsoft Container Registry (mcr.microsoft.com), uložené ve vašem privátním registru kontejneru.
Pro každé zařízení brány v nižší vrstvě musí síťové operátory:
- Zadejte statickou IP adresu.
- Autorizovat odchozí komunikaci z této IP adresy na IP adresu nadřazené brány přes porty 443 (HTTPS) a 5671 (AMQP).
Nasazení modulů do zařízení nejvyšší vrstvy
Zařízení IoT Edge v horní vrstvě hierarchie brány má sadu požadovaných modulů, které je potřeba do ní nasadit, kromě modulů úloh, které můžete na zařízení spustit.
Modul proxy rozhraní API byl navržen tak, aby byl přizpůsobený tak, aby zpracovával nejběžnější scénáře brány. Tento článek obsahuje příklad nastavení modulů v základní konfiguraci. Podrobnější informace a příklady najdete v tématu Konfigurace modulu proxy rozhraní API pro scénář hierarchie brány.
Na webu Azure Portal přejděte do svého centra IoT.
V nabídce Správa zařízení vyberte zařízení.
Ze seznamu vyberte zařízení IoT Edge nejvyšší vrstvy, které konfigurujete.
Vyberte Set modules (Nastavit moduly).
V části Moduly IoT Edge vyberte Přidat a pak zvolte Modul IoT Edge.
Aktualizujte následující nastavení modulu:
Nastavení Hodnota Název modulu IoT IoTEdgeAPIProxyIdentifikátor URI image mcr.microsoft.com/azureiotedge-api-proxy:latestZásada restartování vždy Požadovaný stav spuštěno Pokud chcete použít jinou verzi nebo architekturu modulu proxy rozhraní API, vyhledejte dostupné image v Registr artefaktů Microsoft.
Na kartě Proměnné prostředí přidejte proměnnou s názvem
NGINX_DEFAULT_PORTtypu Text s hodnotou443.Na kartě Možnosti vytvoření kontejneru aktualizujte vazby portů tak, aby odkazy na port 443.
{ "HostConfig": { "PortBindings": { "443/tcp": [ { "HostPort": "443" } ] } } }
Tyto změny nakonfigurují modul proxy rozhraní API tak, aby naslouchal na portu 443. Pokud chcete zabránit kolizím vazby portů, musíte nakonfigurovat modul EdgeHub tak, aby na portu 443 neposlouchal. Místo toho modul proxy rozhraní API směruje veškerý provoz edgeHubu na portu 443.
Výběrem možnosti Přidat přidáte modul do nasazení.
Vyberte Nastavení modulu runtime a najděte modul EdgeHub – Možnosti vytvoření kontejneru. Odstraňte vazbu portu 443 a ponechte vazby pro porty 5671 a 8883.
{ "HostConfig": { "PortBindings": { "5671/tcp": [ { "HostPort": "5671" } ], "8883/tcp": [ { "HostPort": "8883" } ] } } }Výběrem možnosti Použít uložte změny v nastavení modulu runtime.
Zadejte následující hodnoty pro přidání modulu registru Dockeru do vašeho nasazení.
V části Moduly IoT Edge vyberte Přidat a pak zvolte Modul IoT Edge.
Nastavení Hodnota Název modulu IoT registryIdentifikátor URI image registry:latestZásada restartování alwaysPožadovaný stav runningNa kartě Proměnné prostředí přidejte následující proměnné:
Název Typ Hodnota REGISTRY_PROXY_REMOTEURLText Adresa URL registru kontejneru, na který chcete tento modul registru namapovat. Například https://myregistry.azurecr. Modul registru se může mapovat jenom na jeden registr kontejneru, takže doporučujeme mít všechny image kontejnerů v jednom privátním registru kontejneru.REGISTRY_PROXY_USERNAMEText Uživatelské jméno pro ověření v registru kontejneru. REGISTRY_PROXY_PASSWORDText Heslo pro ověření v registru kontejneru. Na kartě Možnosti vytvoření kontejneru aktualizujte vazby portů tak, aby odkazy na port 5000.
{ "HostConfig": { "PortBindings": { "5000/tcp": [ { "HostPort": "5000" } ] } } }Výběrem možnosti Přidat přidáte modul do nasazení.
Vyberte Další: Trasy , které chcete přejít k dalšímu kroku.
Pokud chcete povolit přístup ke službě IoT Hub ze zpráv typu zařízení-cloud z podřízených zařízení, uveďte trasu, která předává všechny zprávy do IoT Hubu. Příklad:
-
Název:
Route -
Hodnota:
FROM /messages/* INTO $upstream
-
Název:
Pokud chcete přejít na poslední krok, vyberte Zkontrolovat a vytvořit .
Vyberte Vytvořit a nasaďte ho do zařízení.
Nasazení modulů do zařízení nižší vrstvy
Zařízení IoT Edge v nižších vrstvách hierarchie brány mají jeden požadovaný modul, který je potřeba do nich nasadit, kromě modulů úloh, které můžete na zařízení spustit.
Směrování vyžádání imagí kontejneru
Než začnete diskutovat o požadovaném modulu proxy pro zařízení IoT Edge v hierarchiích bran, je důležité pochopit, jak zařízení IoT Edge v nižších vrstvách získávají image modulů.
Pokud se vaše zařízení nižší vrstvy nemůžou připojit ke cloudu, ale chcete, aby načítá image modulů jako obvykle, musí být zařízení nejvyšší vrstvy hierarchie brány nakonfigurované tak, aby zpracovávala tyto požadavky. Zařízení nejvyšší vrstvy musí spustit modul registru Dockeru, který je namapovaný na váš registr kontejneru. Pak nakonfigurujte modul proxy rozhraní API tak, aby na něj směrovali požadavky na kontejnery. Tyto podrobnosti jsou popsány v předchozích částech tohoto článku. V této konfiguraci by zařízení nižší vrstvy neměly odkazovat na cloudové registry kontejnerů, ale na registr spuštěný v horní vrstvě.
Například místo volání mcr.microsoft.com/azureiotedge-api-proxy:1.1by měla volat $upstream:443/azureiotedge-api-proxy:1.1zařízení nižší vrstvy .
Parametr $upstream odkazuje na nadřazenou položku zařízení nižší vrstvy, takže požadavek směruje všechny vrstvy, dokud nedosáhne nejvyšší vrstvy, která má požadavky na kontejner směrování proxy prostředí do modulu registru. Port :443 v tomto příkladu by se měl nahradit portem, na kterém naslouchá modul proxy rozhraní API na nadřazené zařízení.
Modul proxy rozhraní API může směrovat pouze na jeden modul registru a každý modul registru se může mapovat pouze na jeden registr kontejneru. Proto všechny image, které zařízení nižší vrstvy potřebují načíst, musí být uložené v jednom registru kontejneru.
Pokud nechcete, aby zařízení nižší vrstvy vytvářela žádosti o změny modulů prostřednictvím hierarchie síťových bran, další možností je spravovat řešení místního registru. Nebo před vytvořením nasazení nasdílejte image modulu do zařízení a pak nastavte imagePullPolicy tak, aby nikdy.
Spuštění agenta IoT Edge
Agent IoT Edge je první komponenta modulu runtime, která se spustí na jakémkoli zařízení IoT Edge. Musíte se ujistit, že všechna podřízená zařízení IoT Edge mají při spuštění přístup k imagi modulu edgeAgent a pak mají přístup k nasazením a spustit zbývající image modulu.
Pokud aktualizujete konfigurační soubor na zařízení IoT Edge, aby poskytoval ověřovací informace, certifikáty a hlavní název hostitele, aktualizujte také obraz kontejneru EdgeAgent.
Pokud je zařízení brány nejvyšší úrovně nakonfigurované pro zpracování požadavků na image kontejneru, nahraďte mcr.microsoft.com nadřazeným názvem hostitele a portem nasloucháním proxy serveru rozhraní API. V manifestu nasazení můžete použít $upstream jako zástupce, ale to vyžaduje, aby modul EdgeHub zpracovával směrování a tento modul se v tomto okamžiku nezačala. Příklad:
[agent]
name = "edgeAgent"
type = "docker"
[agent.config]
image: "{Parent FQDN or IP}:443/azureiotedge-agent:1.5"
Pokud používáte místní registr kontejneru nebo ručně poskytujete image kontejneru v zařízení, odpovídajícím způsobem aktualizujte konfigurační soubor.
Konfigurace modulu runtime a nasazení modulu proxy
Pro směrování veškeré komunikace mezi cloudem a všemi podřízenými zařízeními IoT Edge se vyžaduje modul proxy rozhraní API. Zařízení IoT Edge v dolní vrstvě hierarchie bez podřízených zařízení IoT Edge tento modul nepotřebuje.
Modul proxy rozhraní API byl navržen tak, aby byl přizpůsobený tak, aby zpracovával nejběžnější scénáře brány. Tento článek stručně popisuje postup nastavení modulů v základní konfiguraci. Podrobnější informace a příklady najdete v tématu Konfigurace modulu proxy rozhraní API pro váš scénář hierarchie brány.
Na webu Azure Portal přejděte do svého centra IoT.
V nabídce Správa zařízení vyberte zařízení.
Ze seznamu vyberte zařízení IoT Edge nižší vrstvy, které konfigurujete.
Vyberte Set modules (Nastavit moduly).
V části Moduly IoT Edge vyberte Přidat a pak zvolte Modul IoT Edge.
Aktualizujte následující nastavení modulu:
Nastavení Hodnota Název modulu IoT IoTEdgeAPIProxyIdentifikátor URI image mcr.microsoft.com/azureiotedge-api-proxy:latestZásada restartování alwaysPožadovaný stav runningPokud chcete použít jinou verzi nebo architekturu modulu proxy rozhraní API, vyhledejte dostupné image v Registr artefaktů Microsoft.
Na kartě Proměnné prostředí přidejte proměnnou s názvem
NGINX_DEFAULT_PORTtypu Text s hodnotou443.Na kartě Možnosti vytvoření kontejneru aktualizujte vazby portů tak, aby odkazy na port 443.
{ "HostConfig": { "PortBindings": { "443/tcp": [ { "HostPort": "443" } ] } } }
Tyto změny nakonfigurují modul proxy rozhraní API tak, aby naslouchal na portu 443. Pokud chcete zabránit kolizím vazby portů, musíte nakonfigurovat modul EdgeHub tak, aby na portu 443 neposlouchal. Místo toho modul proxy rozhraní API směruje veškerý provoz edgeHubu na portu 443.
Vyberte Nastavení modulu runtime.
Aktualizujte nastavení modulu EdgeHub:
-
V poli Obrázek nahraďte
mcr.microsoft.comtextem$upstream:443. - V poli Vytvořit možnosti odstraňte vazbu portu 443 a ponechejte vazby pro porty 5671 a 8883.
{ "HostConfig": { "PortBindings": { "5671/tcp": [ { "HostPort": "5671" } ], "8883/tcp": [ { "HostPort": "8883" } ] } } }-
V poli Obrázek nahraďte
Aktualizujte nastavení modulu edgeAgent:
-
V poli Obrázek nahraďte
mcr.microsoft.comtextem$upstream:443.
-
V poli Obrázek nahraďte
Výběrem možnosti Použít uložte změny v nastavení modulu runtime.
Vyberte Další: Trasy , které chcete přejít k dalšímu kroku.
Pokud chcete povolit přístup ke službě IoT Hub zpráv typu zařízení-cloud z podřízených zařízení, zahrňte trasu, která předává všechny zprávy
$upstreamdo služby . Upstream parametr odkazuje na nadřazené zařízení v případě zařízení nižší vrstvy. Příklad:-
Název:
Route -
Hodnota:
FROM /messages/* INTO $upstream
-
Název:
Pokud chcete přejít na poslední krok, vyberte Zkontrolovat a vytvořit .
Vyberte Vytvořit a nasaďte ho do zařízení.
Ověření připojení z podřízené položky k nadřazené po nadřazené
Spuštěním následujícího
opensslpříkazu na podřízeném zařízení v podřízeném zařízení ověřte připojení TLS/SSL z podřízeného objektu k nadřazené posílání. Nahraďte<parent hostname>plně kvalifikovaným názvem domény nebo IP adresou nadřazeného objektu.openssl s_client -connect <parent hostname>:8883 </dev/null 2>&1 >/dev/nullPříkaz by měl potvrdit úspěšné ověření nadřazeného řetězu certifikátů podobně jako v následujícím příkladu:
azureUser@child-vm:~$ openssl s_client -connect <parent hostname>:8883 </dev/null 2>&1 >/dev/null Can't use SSL_get_servername depth=3 CN = Azure_IoT_Hub_CA_Cert_Test_Only verify return:1 depth=2 CN = Azure_IoT_Hub_Intermediate_Cert_Test_Only verify return:1 depth=1 CN = gateway.ca verify return:1 depth=0 CN = <parent hostname> verify return:1 DONEZprávu "Nejde použít SSL_get_servername" je možné ignorovat.
Hodnota
depth=0 CN =by se měla shodovat s parametrem názvu hostitele zadaným v konfiguračním souboru nadřazeného objektuconfig.toml.Pokud vyprší časový limit příkazu, mezi podřízenými a nadřazenými zařízeními můžou být blokované porty. Zkontrolujte konfiguraci a nastavení sítě pro zařízení.
Upozorňující
Pokud nepoužíváte úplný řetězový certifikát v části brány
[edge_ca], výsledkem jsou chyby ověření certifikátu z podřízeného zařízení. Například výše uvedenýopenssl s_client ...příkaz vytvoří:Can't use SSL_get_servername depth=1 CN = gateway.ca verify error:num=20:unable to get local issuer certificate verify return:1 depth=0 CN = <parent hostname> verify return:1 DONEK tomuto problému dochází u zařízení s povoleným protokolem TLS, která se připojují k podřízené zařízení IoT Edge, pokud se na podřízené zařízení nepoužívá a nenakonfiguruje úplný řetězový certifikát zařízení.
Integrace Microsoft Defenderu pro IoT s bránou IoT Edge
Podřízená zařízení se dají použít k integraci mikro agenta Microsoft Defenderu pro IoT s bránou IoT Edge pomocí proxy podřízeného zařízení.
Přečtěte si další informace o mikro agentu Defenderu pro IoT.
Integrace Microsoft Defenderu pro IoT se službou IoT Edge s využitím proxy podřízených zařízení:
Přihlaste se k portálu Azure.
Přejděte na IoT Hub>
Your Hub>Správa zařízení>Zařízení.Vyberte své zařízení.
DefenderIotMicroAgentV těchto pokynech vyberte dvojče modulu, které jste vytvořili.
Výběrem tlačítka zkopírujte připojovací řetězec (primární klíč).Vložte připojovací řetězec do textové aplikace pro úpravy a přidejte do řetězce GatewayHostName. GatewayHostName je plně kvalifikovaný název domény nebo IP adresa nadřazeného zařízení. Například
HostName=nested11.azure-devices.net;DeviceId=downstream1;ModuleId=module1;SharedAccessKey=xxx;GatewayHostName=10.16.7.4.Otevřete terminál na podřízené zařízení.
Pomocí následujícího příkazu umístěte připojovací řetězec kódovaný v adresáři agenta Defender for Cloud do souboru
connection_string.txtv následující cestě:/etc/defender_iot_micro_agent/connection_string.txtsudo bash -c 'echo "<connection string>" > /etc/defender_iot_micro_agent/connection_string.txt'Nyní by měla být umístěna
connection_string.txtv následujícím umístění/etc/defender_iot_micro_agent/connection_string.txtcesty .Restartujte službu spuštěním tohoto příkazu:
sudo systemctl restart defender-iot-micro-agent.servicePřejděte zpět na zařízení.
Povolte připojení ke službě IoT Hub a vyberte ikonu ozubeného kola.
V zobrazeném seznamu vyberte nadřazené zařízení.
Ujistěte se, že je otevřený port 8883 (MQTT) mezi podřízeným zařízením a zařízením IoT Edge.
Další kroky
Jak se dá zařízení IoT Edge využít jako brána
Konfigurace modulu proxy rozhraní API pro scénář hierarchie brány