Erstellen von geschachtelten Azure IoT Edge-Gerätehierarchien (2023)

  • Artikel
  • 29Minuten Lesedauer

Gilt für:Erstellen von geschachtelten Azure IoT Edge-Gerätehierarchien (1) IoT Edge 1.4

Dieser Artikel enthält Anweisungen zum Herstellen einer vertrauenswürdigen Verbindung zwischen einem IoT Edge-Gateway und einem nachgeschalteten IoT Edge-Gerät. Diese Einrichtung wird auch als „Nested Edge“ bezeichnet.

In einem Gatewayszenario kann ein IoT Edge-Gerät sowohl ein Gateway als auch ein nachgeschaltetes Gerät sein. Mehrere IoT Edge-Geräte können auf mehreren Ebenen angeordnet werden, um eine Gerätehierarchie zu erstellen. Die nachgeschalteten (untergeordneten) Geräte können sich authentifizieren und Nachrichten über das jeweils dazugehörige Gatewaygerät (übergeordnete Gerät) senden oder empfangen.

Es gibt zwei verschiedene Konfigurationen für IoT Edge-Geräte in einer Gatewayhierarchie, und in diesem Artikel werden beide thematisiert. Beim ersten handelt es sich um das IoT Edge-Gerät der obersten Ebene. Wenn mehrere IoTEdge-Geräte jeweils Verbindungen miteinander herstellen, gilt jedes Gerät, das über kein übergeordnetes Gerät verfügt, sich aber direkt mit IoT Hub verbindet, als ein Gerät der obersten Ebene. Dieses Gerät ist verantwortlich dafür, Anforderungen von allen untergeordneten Geräten zu verarbeiten. Die andere Konfiguration gilt für alle IoT Edge-Geräte auf einer niedrigeren Ebene der Hierarchie. Diese Geräte sind möglicherweise ein Gateway für andere nachgeschaltete IoT- und IoT Edge-Geräte. Sie müssen sämtliche Kommunikation jedoch auch über ihre jeweiligen übergeordneten Geräte weiterleiten.

Für manche Netzwerkarchitekturen ist es erforderlich, dass nur das oberste IoT Edge-Gerät einer Hierarchie eine Verbindung zur Cloud herstellen kann. In dieser Konfiguration können alle IoTEdge-Geräte auf niedrigeren Ebenen einer Hierarchie nur mit ihrem Gatewaygerät (übergeordneten Gerät) und beliebigen nachgeschalteten (untergeordneten) Geräten kommunizieren.

Alle Schritte in diesem Artikel basieren auf den Schritten im Artikel Konfigurieren eines IoT Edge-Geräts als transparentes Gateway. Dabei wird ein IoT Edge-Gerät als Gateway für nachgeschaltete IoT-Geräte eingerichtet. Die selben grundlegenden Schritte gelten für alle Gatewayszenarios:

  • Authentifizierung: Erstellen Sie IoT Hub-Identitäten für alle Geräte in der Gatewayhierarchie.
  • Autorisierung: Richten Sie die übergeordnet/untergeordnet-Beziehung in IoTHub ein, um nachgeschaltete Geräte für die Herstellung einer Verbindung zum jeweiligen übergeordneten Gerät zu autorisieren, wie wenn eine Verbindung zu IoTHub hergestellt würde.
  • Gatewayermittlung: Sorgen Sie dafür, dass das nachgeschaltete Gerät sein übergeordnetes Gerät im lokalen Netzwerk finden kann.
  • Sichere Verbindung: Stellen Sie eine sichere Verbindung mit vertrauenswürdigen Zertifikaten her, die Teil derselben Kette sind.

Voraussetzungen

  • Ein kostenloser oder Standard-IoT-Hub
  • Mindestens zwei IoT Edge-Geräte (eines muss das Gerät der obersten Ebene sein, das zweite bzw. sämtliche anderen Geräte unterer Ebenen) Wenn keine IoT Edge-Geräte verfügbar sind, erhalten Sie unter Ausführen von virtuellen Computern vom Typ „Azure IoT Edge unter Ubuntu“ weitere Informationen.
  • Wenn Sie die Azure CLI zum Erstellen und Verwalten von Geräten verwenden, muss die Azure CLI (Version2.3.1) mit der Azure IoT-Erweiterung (Version0.10.6 oder höher) installiert sein.

In diesem Artikel finden Sie detaillierte Schritte und Optionen, die Sie beim Erstellen einer geeigneten Gatewayhierarchie für Ihr Szenario unterstützen. Ein Tutorial finden Sie unter Tutorial: Erstellen einer Hierarchie für IoT Edge-Geräte mit Gateways.

Erstellen einer Gatewayhierarchie

Sie erstellen eine IoT Edge-Gatewayhierarchie, indem Sie Beziehungen zwischen übergeordneten/untergeordneten Geräten für die IoT Edge-Geräte im Szenario definieren. Sie können ein übergeordnetes Gerät beim Erstellen einer neuen Geräteidentität festlegen, oder Sie verwalten das übergeordnete Gerät und untergeordnete Geräte einer vorhandenen Geräteidentität.

Beim Einrichten von übergeordnet/untergeordnet-Beziehungen werden nachgeschaltete Geräte autorisiert, eine Verbindung zu ihrem übergeordneten Gerät herzustellen, wie wenn sie eine Verbindung zu IoTHub herstellen würden.

Nur IoT Edge-Geräte können übergeordnete Geräte sein. Sowohl IoT Edge-Geräte als auch IoT-Geräte können jedoch untergeordnete Geräte sein. Ein übergeordnetes Gerät kann über viele untergeordnete Geräte verfügen. Ein untergeordnetes Gerät kann jedoch nur ein übergeordnetes Gerät haben. Eine Gatewayhierarchie wird erstellt, indem jeweils übergeordnete und untergeordnete Geräte verkettet werden, sodass das untergeordnete Geräte eines Geräts das übergeordnete Gerät eines anderen ist.

Bei einem übergeordneten Gerät kann es standardmäßig bis zu 100untergeordnete Geräte geben. Sie können diesen Grenzwert ändern, indem Sie im edgeHub-Modul des übergeordneten Geräts die Umgebungsvariable MaxConnectedClients festlegen.

  • Portal
  • Azure-Befehlszeilenschnittstelle

Im Azure-Portal können Sie die Beziehung zwischen übergeordnetem und untergeordnetem Gerät beim Erstellen neuer Geräteidentitäten verwalten, oder indem Sie vorhandene Geräte bearbeiten.

Wenn Sie ein neues IoT Edge-Gerät erstellen, steht Ihnen die Option zur Verfügung, übergeordnete und untergeordnete Geräte aus einer Liste vorhandener IoT Edge-Geräte im jeweiligen Hub auszuwählen.

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.
  2. Wählen Sie Geräte im Menü Geräteverwaltung aus.
  3. Wählen Sie Gerät hinzufügen und aktivieren Sie dann das Kontrollkästchen IoT Edge-Gerät.
  4. Zusammen mit dem Festlegen der Geräte-ID und der Authentifizierungseinstellungen können Sie ein übergeordnetes Gerät festlegen oder untergeordnete Geräte auswählen.
  5. Wählen Sie das Gerät oder die Geräte aus, die übergeordnetes Gerät bzw. untergeordnete Geräte sein sollen.

Sie können auch Beziehungen zwischen übergeordneten und untergeordneten Geräten für vorhandene Geräte erstellen oder sie verwalten.

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.
  2. Wählen Sie Geräte im Menü Geräteverwaltung aus.
  3. Wählen Sie das IoT Edge-Gerät, das Sie verwalten möchten, aus der Liste aus.
  4. Wählen Sie das Übergeordnetes Gerät festlegenZahnrad-Symbol oder Untergeordnete Geräte verwalten aus.
  5. Fügen Sie übergeordnete oder untergeordnete Geräte hinzu, oder entfernen Sie sie.

Hinweis

Wenn Sie Beziehungen zwischen über- und untergeordneten Elementen programmgesteuert einrichten möchten, können Sie das IoT Hub Service SDK für C#, Java oder Node.js verwenden.

Dies ist ein Beispiel für die Zuordnung von untergeordneten Geräten mit dem C#-SDK. Die Aufgabe RegistryManager_AddAndRemoveDeviceWithScope() zeigt, wie Sie programmgesteuert eine Hierarchie mit drei Ebenen erstellen. Ein IoT Edge-Gerät befindet sich als übergeordnetes Element auf der ersten Ebene. Ein weiteres IoT Edge-Gerät befindet sich auf der zweiten Ebene und dient sowohl als untergeordnetes als auch als übergeordnetes Element. Schließlich befindet sich ein IoT-Gerät auf der dritten Ebene als untergeordnetes Gerät der untersten Ebene.

Generieren von Zertifikaten

Auf den Geräten einer Gatewayhierarchie muss eine konsistente Zertifikatkette installiert sein, damit eine sichere Kommunikation zwischen diesen Geräten möglich ist. Jedes Gerät in der Hierarchie– ob IoTEdge-Gerät oder nachgeschaltetes IoT-Gerät– benötigt eine Kopie desselben Zertifikats der Stammzertifizierungsstelle. Die einzelnen IoT Edge-Geräte in der Hierarchie verwenden das Zertifikat der Stammzertifizierungsstelle dann als Stamm für ihr jeweiliges Stammzertifizierungsstellenzertifikat.

Mit dieser Einrichtung kann jedes nachgeschaltete IoT Edge-Gerät die Identität des jeweiligen übergeordneten Geräts überprüfen, indem überprüft wird, ob der Edgehub, mit dem die Verbindung hergestellt wird, über ein Serverzertifikat verfügt, das vom gemeinsamen Stammzertifizierungsstellenzertifikat signiert ist.

Erstellen von geschachtelten Azure IoT Edge-Gerätehierarchien (2)

Weitere Informationen zu den IoT Edge-Zertifikatanforderungen finden Sie unter Grundlegendes zur Verwendung von Zertifikaten durch Azure IoT Edge.

  1. Erstellen Sie die folgenden Zertifikate, oder fordern Sie sie an:

    • Ein Zertifikat der Stammzertifizierungsstelle: Dabei handelt es sich um das oberste gemeinsam genutzte Zertifikat für alle Geräte in einer bestimmten Gatewayhierarchie. Dieses Zertifikat ist auf allen Geräten installiert.
    • Alle Zwischenzertifikate, die in die Stammzertifikatkette eingeschlossen werden sollen.
    • Ein Gerätezertifizierungsstellenzertifikat und der dazugehörige private Schlüssel, die vom Stamm- und den Zwischenzertifikaten erstellt werden. Sie benötigen ein eindeutiges Gerätezertifizierungsstellenzertifikat für jedes einzelne IoT Edge-Gerät in der Gatewayhierarchie.

    Sie können entweder eine selbstsignierte Zertifizierungsstelle verwenden oder ein Zertifikat von einer vertrauenswürdigen kommerziellen Zertifizierungsstelle wie Baltimore, Verisign, DigiCert oder GlobalSign erwerben.

  2. Wenn Sie keine eigenen Zertifikate zum Testen besitzen, erstellen Sie Stamm- und Zwischenzertifikate und dann Zertifizierungsstellenzertifikate für IoTEdge-Geräte für jedes Gerät. In diesem Artikel verwenden Sie Testzertifikate, die mithilfe von Zertifizierungsstellen-Testzertifikaten für Beispiele und Tutorials generiert werden.Beispielsweise erstellen die folgenden Befehle ein Stammzertifizierungsstellenzertifikat, ein Zertifikat für das übergeordnete Gerät und ein Zertifikat für das untergeordnete Gerät.

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

    Warnung

    Verwenden Sie Zertifikate, die von den Testskripts erstellt wurden, nicht für die Produktion. Sie enthalten hartcodierte Kennwörter und laufen standardmäßig nach 30Tagen ab. Die Zertifizierungsstellen-Testzertifikate werden zu Demonstrationszwecken bereitgestellt, damit Sie sich schnell mit Zertifizierungsstellenzertifikaten vertraut machen können. Verwenden Sie in der Produktion Ihre eigenen bewährten Sicherheitsmethoden für die Zertifizierungserstellung und Lebensdauerverwaltung.

    Weitere Informationen zum Erstellen von Testzertifikaten finden Sie unter Erstellen von Demozertifikaten zum Testen der Features von IoT Edge-Geräten.

  3. Sie müssen die Zertifikate und Schlüssel auf jedes Gerät übertragen. Sie können dazu einen USB-Datenträger, einen Dienst wie Azure Key Vault oder eine Funktion wie Secure file copy verwenden. Wählen Sie eine Methode aus, die am besten zu Ihrem Szenario passt. Kopieren Sie die Dateien in das bevorzugte Verzeichnis für Zertifikate und Schlüssel. Verwenden Sie /var/aziot/certs für Zertifikate und /var/aziot/secrets für Schlüssel.

Weitere Informationen zum Installieren von Zertifikaten auf einem Gerät finden Sie unter Verwalten von Zertifikaten auf einem IoT Edge Gerät.

Konfigurieren des übergeordneten Geräts

Öffnen Sie zum Konfigurieren Ihres übergeordneten Geräts eine lokale Befehlsshell oder eine Remotebefehlsshell.

Für sichere Verbindungen muss jedes übergeordnete IoTEdge-Gerät in einem Gatewayszenario mit einem eindeutigen Gerätezertifizierungsstellenzertifikat und einer Kopie des Stammzertifizierungsstellenzertifikats konfiguriert werden, das von allen Geräten in der Gatewayhierarchie genutzt wird.

  1. Übertragen Sie das Stammzertifizierungsstellenzertifikat, das Zertifikat des übergeordneten Geräts und den übergeordneten privaten Schlüssel auf das übergeordnete Gerät. Bei den Beispielen in diesem Artikel wird das Verzeichnis /var/aziot für die Zertifikate und Schlüssel verwendet.

  2. Installieren Sie das Stammzertifizierungsstellenzertifikat auf dem übergeordneten IoT Edge-Gerät. Kopieren Sie zunächst das Stammzertifikat in das Zertifikatverzeichnis, und fügen Sie am Ende des Dateinamens .crt hinzu. Aktualisieren Sie als Nächstes mithilfe des plattformspezifischen Befehls den Zertifikatspeicher auf dem Gerät.

    Debian oder Ubuntu:

    sudo cp /var/aziot/certs/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crtsudo update-ca-certificates

    IoT Edge für Linux unter Windows (EFLOW):

    sudo cp /var/aziot/certs/azure-iot-test-only.root.ca.cert.pem /etc/pki/ca-trust/source/anchors/azure-iot-test-only.root.ca.cert.pem.crtsudo update-ca-trust

    Weitere Informationen zur Verwendung von update-ca-trust finden Sie unter CBL-Mariner: Verwaltung von SSL-Zertifizierungsstellenzertifikaten.

Der Befehl meldet, dass /etc/ssl/certs ein Zertifikat hinzugefügt wurde.

Updating certificates in /etc/ssl/certs...1 added, 0 removed; done.

Aktualisieren der übergeordneten Konfigurationsdatei

Auf Ihrem Gerät sollte IoT Edge bereits installiert sein. Falls nicht, führen Sie die Schritte unter Manuelles Bereitstellen eines einzelnen Linux-IoT Edge aus.

  1. Überprüfen Sie, ob die Konfigurationsdatei /etc/aziot/config.toml auf dem übergeordneten Gerät vorhanden ist.

    Wenn die Konfigurationsdatei auf Ihrem Gerät nicht vorhanden ist, erstellen Sie sie mit dem folgenden Befehl basierend auf der Vorlagendatei:

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

    Sie können die Vorlagendatei auch als Referenz verwenden, um Konfigurationsparameter in diesem Abschnitt hinzuzufügen.

  2. Öffnen Sie die IoT Edge-Konfigurationsdatei mithilfe eines Editors. Verwenden Sie beispielsweise den nano-Editor, um die Datei /etc/aziot/config.toml zu öffnen.

    sudo nano /etc/aziot/config.toml
  3. Suchen Sie den Parameter hostname, oder fügen Sie ihn am Anfang der Konfigurationsdatei hinzu. Aktualisieren Sie den Wert auf den vollqualifizierten Domänennamen (Fully Qualified Domain Name, FQDN) oder die IP-Adresse des übergeordneten IoTEdge-Geräts. Beispiel:

    hostname = "10.0.0.4"

    Damit die Gatewayermittlung möglich ist, muss jedes (übergeordnete) IoTEdge-Gatewaygerät den Parameter hostname angeben, den die untergeordneten Geräte verwenden, um es im lokalen Netzwerk zu finden. Jedes nachgeschaltete IoT Edge-Gerät muss den Parameter parent_hostname angeben, um das übergeordnete Gerät zu identifizieren. In einem hierarchischen Szenario, in dem ein einzelnes IoT Edge-Gerät sowohl übergeordnetes als auch untergeordnetes Gerät ist, sind beide Parameter erforderlich.

    Die Parameter hostname, local_gateway_hostname und trust_bundle_cert müssen sich am Anfang der Konfigurationsdatei vor allen Abschnitten befinden. Durch das Hinzufügen des Parameters vor definierten Abschnitten wird sichergestellt, dass er ordnungsgemäß angewendet wird.

    Verwenden Sie einen Hostnamen mit weniger als 64Zeichen. Dies ist das Zeichenlimit für einen allgemeinen Namen für ein Serverzertifikat.

    Nutzen Sie das Muster des Hostnamens für die gesamte Gatewayhierarchie konsistent. Verwenden Sie entweder FQDNs oder IP-Adressen, nicht beides. Der FQDN oder die IP-Adresse ist erforderlich, um eine Verbindung mit nachgeschalteten Geräten herzustellen.

    Legen Sie den Hostnamen fest, bevor der Container edgeHub erstellt wird. Wenn edgeHub ausgeführt wird, wird die Änderung des Hostnamens in der Konfigurationsdatei erst wirksam, wenn der Container neu erstellt wird. Weitere Informationen dazu, wie Sie überprüfen, ob der Hostnamen angewendet wurde, finden Sie im Abschnitt Überprüfen der übergeordneten Konfiguration.

  4. Suchen Sie den Parameter Trust bundle cert, oder fügen Sie ihn am Anfang der Konfigurationsdatei hinzu.

    Aktualisieren Sie den Parameter trust_bundle_cert mit dem Datei-URI auf das Zertifikat der Stammzertifizierungsstelle auf Ihrem Gerät. Beispiel:

    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
  5. Suchen Sie in der Konfigurationsdatei den Abschnitt für das Edge-Zertifikat der Zertifizierungsstelle, oder fügen Sie ihn hinzu. Aktualisieren Sie die Parameter für das Zertifikat (cert) und den privaten Schlüssel (pk) mit den Datei-URI-Pfaden für das Zertifikat mit vollständiger Kette und die Schlüsseldateien auf dem übergeordneten IoTEdge-Gerät. IoT Edge erfordert, dass das Zertifikat und der private Schlüssel im textbasierten Privacy Enhanced Mail-Format (PEM) vorliegen. Beispiel:

    [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"
  6. Überprüfen Sie, ob Ihr IoT Edge-Gerät beim Start die richtige Version des IoT Edge-Agents verwendet. Suchen Sie den Abschnitt für den Standard-Edge-Agent, und legen Sie den Imagewert für IoT Edge auf Version 1.4 fest. Beispiel:

    [agent.config]image = "mcr.microsoft.com/azureiotedge-agent:1.4"
  7. Der Anfang der übergeordneten Konfigurationsdatei sollte dem folgenden Beispiel ähneln:

    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"
  8. Speichern und schließen Sie die Konfigurationsdatei config.toml. Wenn Sie beispielsweise den nano-Editor verwenden, wählen Sie STRG+O - Write Out, EINGABE und STRG+X - Exit aus.

  9. Wenn Sie zuvor bereits andere Zertifikate für IoT Edge verwendet haben, löschen Sie die Dateien in den folgenden beiden Verzeichnissen, um dafür zu sorgen, dass Ihre neuen Zertifikate verwendet werden:

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys
  10. Übernehmen Sie Ihre Änderungen.

    sudo iotedge config apply
  11. Überprüfen Sie, ob Fehler in der Konfiguration vorhanden sind.

    sudo iotedge check --verbose

    Hinweis

    Auf einem neu bereitgestellten Gerät wird möglicherweise ein Fehler im Zusammenhang mit dem IoT Edge-Hub angezeigt:

    × Produktionsbereitschaft: Das Speicherverzeichnis des Edge-Hubs wird im Hostdateisystem beibehalten – Fehler.

    Der aktuelle Zustand des edgeHub-Containers konnte nicht überprüft werden.

    Dieser Fehler wird auf einem neu bereitgestellten Gerät erwartet, da das IoT Edge-Hubmodul nicht ausgeführt wird. Um den Fehler zu beheben, legen Sie in IoT Hub die Module für das Gerät fest, und erstellen Sie eine Bereitstellung. Durch das Erstellen einer Bereitstellung für das Gerät werden die Module auf dem Gerät gestartet, einschließlich des IoT Edge-Hubmoduls.

Überprüfen der übergeordneten Konfiguration

Der Hostname muss ein vollqualifizierter Domänenname (FQDN) oder die IP-Adresse des IoT Edge-Geräts sein, da IoT Edge diesen Wert im Serverzertifikat verwendet, wenn nachgeschaltete Geräte eine Verbindung herstellen. Die Werte müssen übereinstimmen, oder Sie erhalten einen Fehler zu einem IP-Adresskonflikt.

Um den Hostnamen zu überprüfen, müssen Sie die Umgebungsvariablen des edgeHub-Containers überprüfen.

  1. Listen Sie die ausgeführten IoT Edge-Container auf:

    iotedge list

    Überprüfen Sie, ob die Container edgeAgent und edgeHub ausgeführt werden. Die Befehlsausgabe sollte ungefähr wie das folgende Beispiel aussehen:

    NAME STATUS DESCRIPTION CONFIGSimulatedTemperatureSensor running Up 5 seconds mcr.microsoft.com/azureiotedge-simulated-temperature-sensor:1.0edgeAgent running Up 17 seconds mcr.microsoft.com/azureiotedge-agent:1.4edgeHub running Up 6 seconds mcr.microsoft.com/azureiotedge-hub:1.4
  2. Überprüfen Sie den edgeHub-Container:

    sudo docker inspect edgeHub
  3. Suchen Sie in der Ausgabe den Parameter EdgeDeviceHostName im Abschnitt Env:

    "EdgeDeviceHostName=10.0.0.4"
  4. Vergewissern Sie sich, dass der Parameter EdgeDeviceHostName mit der Einstellung für hostname in config.toml übereinstimmt. Wenn sie nicht übereinstimmen, wurde der edgeHub-Container ausgeführt, als Sie die Konfiguration geändert und angewendet haben. Um EdgeDeviceHostName zu aktualisieren, entfernen Sie den edgeAgent-Container.

    sudo docker rm -f edgeAgent

    Die Container edgeAgent und edgeHub werden innerhalb weniger Minuten neu erstellt und gestartet. Wenn der Container edgeHub ausgeführt wird, überprüfen Sie den Container, und vergewissern Sie sich, dass der Parameter EdgeDeviceHostName mit der Konfigurationsdatei übereinstimmt.

Konfigurieren Ihres nachgeschalteten Geräts

Öffnen Sie zum Konfigurieren Ihres nachgeschalteten Geräts eine lokale Befehlsshell oder eine Remotebefehlsshell.

Für sichere Verbindungen muss jedes nachgeschaltete IoTEdge-Gerät in einem Gatewayszenario mit einem eindeutigen Zertifikat der Gerätezertifizierungsstelle und einer Kopie des Zertifikats der Stammzertifizierungsstelle konfiguriert werden, das von allen Geräten in der Gatewayhierarchie genutzt wird.

  1. Übertragen Sie das Zertifikat der Stammzertifizierungsstelle, das Zertifikat der Gerätezertifizierungsstelle für das untergeordnete Gerät und den untergeordneten privaten Schlüssel auf das nachgeschaltete Gerät. Die Beispiele in diesem Artikel verwenden das Verzeichnis /var/aziot als Verzeichnis für die Zertifikate und Schlüssel.

  2. Installieren Sie das Zertifikat der Stammzertifizierungsstelle auf dem nachgeschalteten IoTEdge-Gerät. Kopieren Sie zunächst das Stammzertifikat in das Zertifikatverzeichnis, und fügen Sie am Ende des Dateinamens .crt hinzu. Aktualisieren Sie als Nächstes mithilfe des plattformspezifischen Befehls den Zertifikatspeicher auf dem Gerät.

    Debian oder Ubuntu:

    sudo cp /var/aziot/certs/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crtsudo update-ca-certificates

    IoT Edge für Linux unter Windows (EFLOW):

    sudo cp /var/aziot/certs/azure-iot-test-only.root.ca.cert.pem /etc/pki/ca-trust/source/anchors/azure-iot-test-only.root.ca.cert.pem.crtsudo update-ca-trust

    Weitere Informationen zur Verwendung von update-ca-trust finden Sie unter CBL-Mariner: Verwaltung von SSL-Zertifizierungsstellenzertifikaten.

Der Befehl meldet, dass /etc/ssl/certs ein Zertifikat hinzugefügt wurde.

Updating certificates in /etc/ssl/certs...1 added, 0 removed; done.

Aktualisieren der nachgeschalteten Konfigurationsdatei

Auf Ihrem Gerät sollte IoT Edge bereits installiert sein. Falls nicht, führen Sie die Schritte unter Manuelles Bereitstellen eines einzelnen Linux-IoT Edge aus.

  1. Überprüfen Sie, ob die Konfigurationsdatei /etc/aziot/config.toml auf dem nachgeschalteten Gerät vorhanden ist.

    Wenn die Konfigurationsdatei auf Ihrem Gerät nicht vorhanden ist, erstellen Sie sie mit dem folgenden Befehl basierend auf der Vorlagendatei:

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

    Sie können die Vorlagendatei auch als Referenz verwenden, um Konfigurationsparameter in diesem Abschnitt hinzuzufügen.

  2. Öffnen Sie die IoT Edge-Konfigurationsdatei mithilfe eines Editors. Verwenden Sie beispielsweise den nano-Editor, um die Datei /etc/aziot/config.toml zu öffnen.

    sudo nano /etc/aziot/config.toml
  3. Suchen Sie den Parameter parent_hostname, oder fügen Sie ihn am Anfang der Konfigurationsdatei hinzu. Jedes nachgeschaltete IoT Edge-Gerät muss den Parameter parent_hostname angeben, um das übergeordnete Gerät zu identifizieren. Aktualisieren Sie den Parameter parent_hostname auf den FQDN oder die IP-Adresse des übergeordneten Geräts. Der Wert muss mit dem Wert übereinstimmen, der in der Konfigurationsdatei des übergeordneten Geräts als Hostname angegeben wurde. Beispiel:

    parent_hostname = "10.0.0.4"
  4. Suchen Sie den Parameter Trust bundle cert, oder fügen Sie ihn am Anfang der Konfigurationsdatei hinzu.

    Aktualisieren Sie den Parameter trust_bundle_cert mit dem Datei-URI auf das Zertifikat der Stammzertifizierungsstelle auf Ihrem Gerät. Beispiel:

    trust_bundle_cert = "file:///var/aziot/certs/azure-iot-test-only.root.ca.cert.pem"
  5. Suchen Sie in der Konfigurationsdatei den Abschnitt für das Edge-Zertifikat der Zertifizierungsstelle, oder fügen Sie ihn hinzu. Aktualisieren Sie die Parameter für das Zertifikat (cert) und den privaten Schlüssel (pk) mit den Datei-URI-Pfaden für das Zertifikat mit vollständiger Kette und die Schlüsseldateien auf dem nachgelagerten IoTEdge-Gerät. IoT Edge erfordert, dass das Zertifikat und der private Schlüssel im textbasierten Privacy Enhanced Mail-Format (PEM) vorliegen. Beispiel:

    [edge_ca]cert = "file:///var/aziot/certs/iot-edge-device-ca-downstream-full-chain.cert.pem"pk = "file:///var/aziot/secrets/iot-edge-device-ca-downstream.key.pem"
  6. Überprüfen Sie, ob Ihr IoT Edge-Gerät beim Start die richtige Version des IoT Edge-Agents verwendet. Suchen Sie den Abschnitt für den Standard-Edge-Agent, und legen Sie den Imagewert für IoT Edge auf Version 1.4 fest. Beispiel:

    [agent.config]image: "mcr.microsoft.com/azureiotedge-agent:1.4"
  7. Der Anfang Ihrer nachgeschalteten Konfigurationsdatei sollte ähnlich wie im folgenden Beispiel aussehen.

    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-edge-device-ca-downstream-full-chain.cert.pem"pk = "file:///var/aziot/secrets/iot-edge-device-ca-downstream.key.pem"
  8. Speichern und schließen Sie die Konfigurationsdatei config.toml. Wenn Sie beispielsweise den nano-Editor verwenden, wählen Sie STRG+O - Write Out, EINGABE und STRG+X - Exit aus.

  9. Wenn Sie zuvor bereits andere Zertifikate für IoT Edge verwendet haben, löschen Sie die Dateien in den folgenden beiden Verzeichnissen, um dafür zu sorgen, dass Ihre neuen Zertifikate verwendet werden:

    • /var/lib/aziot/certd/certs
    • /var/lib/aziot/keyd/keys
  10. Übernehmen Sie Ihre Änderungen.

    sudo iotedge config apply
  11. Überprüfen Sie, ob Fehler in der Konfiguration vorhanden sind.

    sudo iotedge check --verbose

    Tipp

    Das Prüftool für IoT Edge verwendet einen Container, um einige der Diagnoseüberprüfungen durchzuführen. Wenn Sie dieses Tool auf nachgeschalteten IoT Edge-Geräten verwenden möchten, sorgen Sie dafür, dass diese auf mcr.microsoft.com/azureiotedge-diagnostics:latest zugreifen können. Sorgen Sie alternativ dafür, dass sich das Containerimage in Ihrer privaten Containerregistrierung befindet.

    Hinweis

    Auf einem neu bereitgestellten Gerät wird möglicherweise ein Fehler im Zusammenhang mit dem IoT Edge-Hub angezeigt:

    × Produktionsbereitschaft: Das Speicherverzeichnis des Edge-Hubs wird im Hostdateisystem beibehalten – Fehler.

    Der aktuelle Zustand des edgeHub-Containers konnte nicht überprüft werden.

    Dieser Fehler wird auf einem neu bereitgestellten Gerät erwartet, da das IoT Edge-Hubmodul nicht ausgeführt wird. Um den Fehler zu beheben, legen Sie in IoT Hub die Module für das Gerät fest, und erstellen Sie eine Bereitstellung. Durch das Erstellen einer Bereitstellung für das Gerät werden die Module auf dem Gerät gestartet, einschließlich des IoT Edge-Hubmoduls.

Überprüfen der Konnektivität zwischen dem untergeordneten und dem übergeordneten Gerät

  1. Überprüfen Sie die TLS/SSL-Verbindung zwischen dem untergeordneten und dem übergeordneten Gerät, indem Sie auf dem nachgeschalteten Gerät den folgenden openssl-Befehl ausführen. Ersetzen Sie <parent hostname> durch den FQDN oder die IP-Adresse des übergeordneten Geräts.

    openssl s_client -connect <parent hostname>:8883 </dev/null 2>&1 >/dev/null

    Der Befehl sollte eine erfolgreiche Validierung der übergeordneten Zertifikatkette ähnlich dem folgenden Beispiel bestätigen:

    azureUser@child-vm:~$ openssl s_client -connect <parent hostname>:8883 </dev/null 2>&1 >/dev/nullCan't use SSL_get_servernamedepth=3 CN = Azure_IoT_Hub_CA_Cert_Test_Onlyverify return:1depth=2 CN = Azure_IoT_Hub_Intermediate_Cert_Test_Onlyverify return:1depth=1 CN = gateway.caverify return:1depth=0 CN = <parent hostname>verify return:1DONE

    Die Meldung „Kann SSL_get_servername nicht verwenden“ kann ignoriert werden.

    Der depth=0 CN = -Wert sollte mit dem hostname-Parameter übereinstimmen, der in der übergeordneten config.toml-Konfigurationsdatei angegeben ist.

    Wenn für den Befehl eine Zeitüberschreitung auftritt, sind zwischen den untergeordneten und übergeordneten Geräten möglicherweise blockierte Ports vorhanden. Überprüfen Sie die Netzwerkkonfiguration und die Einstellungen für die Geräte.

    Warnung

    In einer früheren Version dieses Dokuments wurden Benutzer angewiesen, das Zertifikat iot-edge-device-ca-gateway.cert.pem zur Verwendung im Gatewayabschnitt [edge_ca] zu kopieren. Dies ist falsch und führt zu Zertifikatvalidierungsfehlern vom nachgelagerten Gerät. Der oben genannte Befehl openssl s_client ... erzeugt beispielsweise Folgendes:

    Can't use SSL_get_servernamedepth=1 CN = gateway.caverify error:num=20:unable to get local issuer certificateverify return:1depth=0 CN = <parent hostname>verify return:1DONE

    Das gleiche Problem tritt bei TLS-fähigen Geräte auf, die eine Verbindung mit dem nachgelagerten Edgegerät herstellen, wenn iot-edge-device-ca-downstream.cert.pem anstelle von iot-edge-device-ca-downstream-full-chain.cert.pem auf das Gerät kopiert wird.

Isolieren von nachgeschalteten Geräten im Netzwerk

Mit den bisherigen Schritten dieses Artikels wurden IoT Edge-Geräte entweder als Gateway oder als nachgeschaltetes Gerät eingerichtet. Außerdem wurde eine vertrauenswürdige Verbindung zwischen ihnen erstellt. Das Gatewaygerät verarbeitet Interaktionen zwischen dem nachgeschalteten Gerät und IoT Hub, einschließlich der Authentifizierung und Nachrichtenrouting. Auf nachgeschalteten IoT Edge-Geräten bereitgestellte Module können weiterhin ihre eigenen Verbindungen zu Clouddiensten herstellen.

Bei einigen Netzwerkarchitekturen, z.B. solchen, die den ISA-95-Standard befolgen, wird versucht, die Anzahl an Internetverbindungen zu minimieren. In diesen Szenarios können Sie nachgeschaltete IoT Edge-Geräte ohne direkte Internetkonnektivität konfigurieren. Zusätzlich zum Routing der IoT Hub-Kommunikation über das Gatewaygerät können IoT Edge-Geräte alle Cloudverbindungen über das Gatewaygerät herstellen.

Für diese Netzwerkkonfiguration ist erforderlich, dass nur das IoT Edge-Gerät der obersten Ebene einer Gatewayhierarchie direkte Verbindungen zur Cloud aufweist. IoT Edge-Geräte in den unteren Ebenen können jeweils nur mit ihrem übergeordneten Gerät oder untergeordneten Geräten kommunizieren. Sondermodule auf den Gatewaygeräten ermöglichen dieses Szenario. Dazu gehören die folgenden:

  • Das API-Proxymodul ist für jedes IoT Edge-Gateway erforderlich, das ein weiteres untergeordnetes IoT Edge-Gerät aufweist. Das bedeutet, das Modul muss sich auf jeder Ebene einer Gatewayhierarchie mit Ausnahme der untersten Ebene befinden. Dieses Modul verwendet einen nginx-Reverseproxy, um HTTP-Daten über Netzwerkebenen über einen einzelnen Port weiterzuleiten. Über den dazugehörigen Modulzwilling und die Umgebungsvariablen ist eine umfangreiche Konfiguration möglich. Das Modul kann also exakt an Ihre Gatewayszenarioanforderungen angepasst werden.

  • Das Docker-Registrierungsmodul kann auf dem IoT Edge-Gatewaygerät auf der obersten Ebene einer Gatewayhierarchie bereitgestellt werden. Dieses Modul ist verantwortlich für das Abrufen und Zwischenspeichern von Containerimages im Auftrag aller IoT Edge-Geräte unterer Ebenen. Die Alternative zum Bereitstellen dieses Moduls auf der obersten Ebene ist die Verwendung einer lokalen Registrierung oder das manuelle Laden von Containerimages auf Geräte bei Festlegung der Pullrichtlinie des Moduls auf Nie.

  • Das Modul Azure Blob Storage für IoT Edge kann auf dem IoT Edge-Gatewaygerät auf der obersten Ebene einer Gatewayhierarchie bereitgestellt werden. Dieses Modul ist verantwortlich für das Hochladen von Blobs im Auftrag aller IoT Edge-Geräte unterer Ebenen. Die Möglichkeit, Blobs hochzuladen, ermöglicht auch hilfreiche Troubleshootingfunktionen für IoT Edge-Geräte auf unteren Ebenen, z.B. Hochladen von Modulprotokollen und Unterstützung für das Hochladen von Paketen.

Netzwerkkonfiguration

Für jedes Gatewaygerät der oberen Ebene müssen Netzwerkbetreiber Folgendes tun:

  • Angeben einer statischen IP-Adresse oder eines vollqualifizierten Domänennamens (FQDN)

  • Autorisieren der ausgehenden Kommunikation von dieser IP-Adresse zu Ihrem Azure IoT Hub-Hostname über die Ports443 (HTTPS) und 5671 (AMQP)

  • Autorisieren ausgehender Kommunikation von dieser IP-Adresse zu Ihrem Azure Container Registry-Hostname über Port443 (HTTPS)

    Das API-Proxymodul kann jeweils nur Verbindungen zu einer Containerregistrierung zur selben Zeit verarbeiten. Es wird empfohlen, alle Containerimages, einschließlich der öffentlichen von der Containerregistrierung von Microsoft (mcr.microsoft.com) bereitgestellten Images, in Ihrer privaten Containerregistrierung zu speichern.

Für jedes Gatewaygerät einer unteren Ebene müssen Netzwerkbetreiber Folgendes tun:

  • Bereitstellen einer statischen IP-Adresse
  • Autorisieren ausgehender Kommunikation von dieser IP-Adresse zur IP-Adresse des übergeordneten Gateway über die Ports443 (HTTPS) und 5671 (AMQP)

Bereitstellen von Modulen auf Geräten oberer Ebenen

Das IoT Edge-Gerät auf der obersten Ebene einer Gatewayhierarchie verfügt über mehrere erforderliche Module, die zusätzlich zu Workloadmodulen, die Sie möglicherweise auf dem Gerät ausführen, für es bereitgestellt werden müssen.

Das API-Proxymodul wurde so entworfen, dass es angepasst werden kann, um die häufigsten Gatewayszenarios zu verarbeiten. In diesem Artikel finden Sie ein Beispiel für das Einrichten der Module in einer einfachen Konfiguration. Unter Konfigurieren des API-Proxymoduls für Ihr Gatewayhierarchieszenario finden Sie detailliertere Informationen und Beispiele.

  • Portal
  • Azure-Befehlszeilenschnittstelle
  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.

  2. Wählen Sie Geräte im Menü Geräteverwaltung aus.

  3. Wählen Sie das IoT Edge-Gerät der obersten Ebene, das Sie konfigurieren, aus der Liste aus.

  4. Wählen Sie Module festlegen aus.

  5. Klicken Sie im Abschnitt IoT Edge-Modul auf Hinzufügen und dann auf Marketplace-Modul.

  6. Suchen Sie nach dem Modul IoT Edge-API-Proxy, und klicken Sie darauf.

  7. Wählen Sie den Namen des API-Proxymoduls aus der Liste bereitgestellter Module aus, und aktualisieren Sie die folgenden Moduleinstellungen:

    1. Aktualisieren Sie auf der Registerkarte Umgebungsvariablen den Wert von NGINX_DEFAULT_PORT in 443.

    2. Aktualisieren Sie auf der Registerkarte mit Optionen zum Erstellen von Containern die Portbindungen in den Referenzport443.

      { "HostConfig": { "PortBindings": { "443/tcp": [ { "HostPort": "443" } ] } }}

    Diese Änderungen konfigurieren das API-Proxymodul so, dass es an Port443 lauscht. Zur Vermeidung von Portbindungskollisionen müssen Sie das edgeHub-Modul so konfigurieren, dass es nicht an Port443 lauscht. Stattdessen leitet das API-Proxymodul sämtlichen edgeHub-Datenverkehr für Port443 weiter.

  8. Klicken Sie auf Runtimeeinstellungen, und suchen Sie nach den Optionen zum Erstellen des edgeHub-Moduls. Löschen Sie die Portbindung für Port443, übernehmen Sie jedoch die Bindungen für die Ports5671 und 8883.

    { "HostConfig": { "PortBindings": { "5671/tcp": [ { "HostPort": "5671" } ], "8883/tcp": [ { "HostPort": "8883" } ] } }}
  9. Klicken Sie auf Speichern zum Speichern der Änderungen an den Runtimeeinstellungen.

  10. Klicken Sie noch mal auf Hinzufügen, und klicken Sie dann auf das IoT Edge-Modul.

  11. Geben Sie die folgenden Werte an, um das Docker-Registrierungsmodul Ihrer Bereitstellung hinzuzufügen:

    1. Name des IoT Edge-Moduls:registry

    2. Image-URI (Auf der Registerkarte Moduleinstellungen): registry:latest.

    3. Fügen Sie auf der Registerkarte Umgebungsvariablen die folgenden Umgebungsvariablen hinzu:

      • Name: REGISTRY_PROXY_REMOTEURLWert: Die URL für die Containerregistrierung, der dieses Registrierungsmodul zugeordnet werden soll Beispiel: https://myregistry.azurecr.

        Das Registrierungsmodul kann nur einer Containerregistrierung zugeordnet werden, es wird also empfohlen, dass alle Containerimages in einer einzelnen privaten Containerregistrierung gespeichert werden.

      • Name: REGISTRY_PROXY_USERNAMEWert: Benutzername für die Authentifizierung bei der Containerregistrierung

      • Name: REGISTRY_PROXY_PASSWORDWert: Kennwort für die Authentifizierung bei der Containerregistrierung

    4. Öffnen Sie die Registerkarte mit Optionen für die Containererstellung. Fügen Sie dort Folgendes ein:

      { "HostConfig": { "PortBindings": { "5000/tcp": [ { "HostPort": "5000" } ] } }}
  12. Klicken Sie auf Hinzufügen, um das Modul der Bereitstellung hinzuzufügen.

  13. Klicken Sie auf Weiter: Routen, um mit dem nächsten Schritt fortzufahren.

  14. Wenn Gerät-zu-Cloud-Nachrichten von nachgeschalteten Geräten IoT Hub erreichen sollen, schließen Sie eine Route ein, die alle Nachrichten an IoT Hub übergibt. Zum Beispiel:

    1. Name: Route
    2. Wert: FROM /messages/* INTO $upstream
  15. Klicken Sie auf Überprüfen+ erstellen, um zum letzten Schritt zu gelangen.

  16. Klicken Sie auf Erstellen, um die Bereitstellung für Ihr Gerät durchzuführen.

Bereitstellen von Modulen auf Geräten unterer Ebenen

IoT Edge-Geräte auf niedrigeren Ebenen einer Gatewayhierarchie verfügen über ein erforderliches Modul, das zusätzlich zu Workloadmodulen, die Sie möglicherweise auf dem Gerät ausführen, für sie bereitgestellt werden muss.

Weiterleiten von Pullvorgängen für Containerimages

Bevor Sie Informationen zum erforderlichen Proxymodul für IoT Edge-Geräte in Gatewayhierarchien erhalten, ist es wichtig, zu verstehen, wie IoT Edge-Geräte auf unteren Ebenen ihre Modulimages abrufen.

Wenn Ihre Geräte auf unteren Ebenen keine Verbindung zur Cloud herstellen können, Sie jedoch möchten, dass sie wie gewohnt Modulimages pullen können, muss das Gerät der obersten Ebene der Gatewayhierarchie so konfiguriert werden, dass diese Anforderungen verarbeitet werden. Das Gerät der obersten Ebene muss ein Docker-Registrierungsmodul ausführen, das Ihrer Containerregistrierung zugeordnet ist. Konfigurieren Sie das API-Proxymodul dann so, dass Containeranforderungen dorthin weitergeleitet werden. Diese Details werden in den oberen Abschnitten dieses Artikels erläutert. In dieser Konfiguration sollten die Geräte der unteren Ebenen nicht auf Cloudcontainerregistrierungen verweisen, sondern auf Registrierungen, die auf der oberen Ebene ausgeführt werden.

Anstatt mcr.microsoft.com/azureiotedge-api-proxy:1.1 aufzurufen, sollten Geräte niedrigerer Ebenen beispielsweise $upstream:443/azureiotedge-api-proxy:1.1 aufrufen.

Der $upstream-Parameter verweist auf das übergeordnete Gerät eines Geräts auf einer niedrigeren Ebene. Die Anforderung wird also über alle Ebenen weitergeleitet, bis sie die oberste Ebene erreicht, die über eine Proxyumgebung verfügt, die Containeranforderungen an das Registrierungsmodul weiterleitet. Der :443-Port in diesem Beispiel sollte durch den Port ersetzt werden, an dem das API-Proxymodul des übergeordneten Geräts lauscht.

Das API-Proxymodul kann Weiterleitungen nur zu einem Registrierungsmodul durchführen, und die einzelnen Registrierungsmodule können nur einer Containerregistrierung zugeordnet werden. Deshalb müssen alle Images, die von Geräten auf niedrigeren Ebenen benötigt werden, in einer einzelnen Containerregistrierung gespeichert werden.

Wenn Sie nicht möchten, dass Geräte niedrigerer Ebenen Pull Requests für Module über eine Gatewayhierarchie durchführen können, besteht eine andere Option darin, eine lokale Registrierungslösung zu verwalten. Alternativ können Sie die Modulimages auf die Geräte pushen, bevor Sie Bereitstellungen erstellen. Anschließend legen Sie imagePullPolicy auf Nie fest.

Bootstrapping für den IoT Edge-Agent

Der IoT Edge-Agent ist die erste Runtimekomponente, die auf einem IoT Edge-Gerät gestartet wird. Sie müssen dafür sorgen, dass alle nachgeschalteten IoT Edge-Geräte beim Start auf das edgeAgent-Modulimage zugreifen können. Danach können sie auf Bereitstellungen zugreifen und die restlichen Modulimages starten.

Wenn Sie die Konfigurationsdatei auf einem IoT Edge-Gerät aufrufen, um dessen Authentifizierungsinformationen, Zertifikate und den übergeordneten Hostnamen anzugeben, aktualisieren Sie auch das edgeAgent-Containerimage.

Wenn das Gatewaygerät der obersten Ebene so konfiguriert ist, Containerimageanforderungen zu verarbeiten, ersetzen Sie mcr.microsoft.com durch den übergeordneten Hostname und den API-Proxyport, an dem gelauscht wird. Im Bereitstellungsmanifest können Sie $upstream als Verknüpfung verwenden. Dafür ist aber erforderlich, dass das edgeHub-Modul das Routing verarbeitet und dass das Modul zu diesem Zeitpunkt noch nicht gestartet wurde. Zum Beispiel:

[agent]name = "edgeAgent"type = "docker"[agent.config]image: "{Parent FQDN or IP}:443/azureiotedge-agent:1.4"

Wenn Sie eine lokale Containerregistrierung verwenden oder die Containerimages auf dem Gerät manuell bereitstellen, aktualisieren Sie die Konfigurationsdatei entsprechend.

Konfigurieren der Runtime und Bereitstellen des Proxymoduls

Das API-Proxymodul ist für das Weiterleiten der gesamten Kommunikation zwischen der Cloud und allen nachgeschalteten IoT Edge-Geräten erforderlich. Ein IoT Edge-Gerät auf der untersten Ebene der Hierarchie, das keine nachgeschalteten IoT Edge-Geräte aufweist, benötigt dieses Modul nicht.

Das API-Proxymodul wurde so entworfen, dass es angepasst werden kann, um die häufigsten Gatewayszenarios zu verarbeiten. In diesem Artikel werden die Schritte zum Einrichten der Module in einer einfachen Konfiguration kurz erläutert. Unter Konfigurieren des API-Proxymoduls für Ihr Gatewayhierarchieszenario finden Sie detailliertere Informationen und Beispiele.

  1. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.

  2. Wählen Sie Geräte im Menü Geräteverwaltung aus.

  3. Wählen Sie das IoT Edge-Gerät der unteren Ebene, das Sie konfigurieren, aus der Liste aus.

  4. Wählen Sie Module festlegen aus.

  5. Klicken Sie im Abschnitt IoT Edge-Modul auf Hinzufügen und dann auf Marketplace-Modul.

  6. Suchen Sie nach dem Modul IoT Edge-API-Proxy, und klicken Sie darauf.

  7. Wählen Sie den Namen des API-Proxymoduls aus der Liste bereitgestellter Module aus, und aktualisieren Sie die folgenden Moduleinstellungen:

    1. Aktualisieren Sie auf der Registerkarte Moduleinstellungen den Wert für Image-URI. Ersetzen Sie mcr.microsoft.com durch $upstream:443.

    2. Aktualisieren Sie auf der Registerkarte Umgebungsvariablen den Wert von NGINX_DEFAULT_PORT in 443.

    3. Aktualisieren Sie auf der Registerkarte mit Optionen zum Erstellen von Containern die Portbindungen in den Referenzport443.

      { "HostConfig": { "PortBindings": { "443/tcp": [ { "HostPort": "443" } ] } }}

    Diese Änderungen konfigurieren das API-Proxymodul so, dass es an Port443 lauscht. Zur Vermeidung von Portbindungskollisionen müssen Sie das edgeHub-Modul so konfigurieren, dass es nicht an Port443 lauscht. Stattdessen leitet das API-Proxymodul sämtlichen edgeHub-Datenverkehr für Port443 weiter.

  8. Wählen Sie Runtimeeinstellungen aus.

  9. Aktualisieren Sie die edgeHub-Moduleinstellungen:

    1. Ersetzen Sie im Feld Imagemcr.microsoft.com durch $upstream:443.
    2. Löschen Sie im Feld mit Erstelloptionen die Portbindung für Port443, übernehmen Sie jedoch die Bindungen für die Ports5671 und 8883.
    { "HostConfig": { "PortBindings": { "5671/tcp": [ { "HostPort": "5671" } ], "8883/tcp": [ { "HostPort": "8883" } ] } }}
  10. Aktualisieren Sie die edgeAgent-Moduleinstellungen:

    1. Ersetzen Sie im Feld Imagemcr.microsoft.com durch $upstream:443.
  11. Klicken Sie auf Speichern zum Speichern der Änderungen an den Runtimeeinstellungen.

  12. Klicken Sie auf Weiter: Routen, um mit dem nächsten Schritt fortzufahren.

  13. Wenn Gerät-zu-Cloud-Nachrichten von nachgeschalteten Geräten IoT Hub erreichen sollen, schließen Sie eine Route ein, die alle Nachrichten an $upstream übergibt. Der Upstreamparameter verweist im Fall von Geräten niedrigerer Ebenen auf das übergeordnete Gerät. Zum Beispiel:

    1. Name: Route
    2. Wert: FROM /messages/* INTO $upstream
  14. Klicken Sie auf Überprüfen+ erstellen, um zum letzten Schritt zu gelangen.

  15. Klicken Sie auf Erstellen, um die Bereitstellung für Ihr Gerät durchzuführen.

Integrieren von Microsoft Defender für IoT in das IoTEdge-Gateway

Nachgeschaltete Geräte können verwendet werden, um den Micro-Agent von Microsoft Defender forIoT mithilfe der Proxyfunktion für nachgeschaltete Geräte in das IoTEdge-Gateway zu integrieren.

Weitere Informationen finden Sie unter Micro-Agent für Defender für IoT.

So integrieren Sie Microsoft Defender forIoT mithilfe der Proxyfunktion für nachgeschaltete Geräte in IoTEdge:

  1. Melden Sie sich beim Azure-Portal an.

  2. Navigieren Sie zu IoTHub>Your Hub>Geräteverwaltung>Geräte.

  3. Wählen Sie Ihr Gerät aus.

    Erstellen von geschachtelten Azure IoT Edge-Gerätehierarchien (3)

  4. Wählen Sie den Modulzwilling DefenderIotMicroAgent aus, den Sie gemäß dieser Anleitung erstellt haben.

    Erstellen von geschachtelten Azure IoT Edge-Gerätehierarchien (4)

  5. Wählen Sie die Schaltfläche Erstellen von geschachtelten Azure IoT Edge-Gerätehierarchien (5) aus, um Ihre Verbindungszeichenfolge (Primärschlüssel) zu kopieren.

  6. Fügen Sie die Verbindungszeichenfolge in eine Textbearbeitungsanwendung ein, und fügen Sie der Zeichenfolge den Gatewayhostnamen hinzu. Beispiel: HostName=nested11.azure-devices.net;DeviceId=downstream1;ModuleId=module1;SharedAccessKey=xxx;GatewayHostName=10.16.7.4.

  7. Öffnen Sie auf dem nachgeschalteten Gerät ein Terminal.

  8. Verwenden Sie den folgenden Befehl, um die UTF-8-codierte Verbindungszeichenfolge im Verzeichnis des Defender für Cloud-Agents in der Datei connection_string.txt am folgenden Pfad /etc/defender_iot_micro_agent/connection_string.txt zu platzieren:

    sudo bash -c 'echo "<connection string>" > /etc/defender_iot_micro_agent/connection_string.txt'

    Die Datei connection_string.txt sollte sich nun am folgenden Pfad befinden: /etc/defender_iot_micro_agent/connection_string.txt.

  9. Starten Sie den Dienst mithilfe des folgenden Befehls neu:

    sudo systemctl restart defender-iot-micro-agent.service 
  10. Navigieren Sie wieder zum Gerät.

    Erstellen von geschachtelten Azure IoT Edge-Gerätehierarchien (6)

  11. Aktivieren Sie die Verbindung mit IoTHub, und wählen Sie das Zahnradsymbol aus.

    Erstellen von geschachtelten Azure IoT Edge-Gerätehierarchien (7)

  12. Wählen Sie in der angezeigten Liste das übergeordnete Gerät aus.

  13. Stellen Sie sicher, dass der Port8883 (MQTT) zwischen dem nachgeschalteten Gerät und dem IoTEdge-Gerät geöffnet ist.

Nächste Schritte

Verwendung eines IoT Edge-Geräts als Gateway

Konfigurieren des API-Proxymoduls für Ihr Gatewayhierarchieszenario (Vorschau)

Top Articles
Latest Posts
Article information

Author: Melvina Ondricka

Last Updated: 01/09/2023

Views: 6043

Rating: 4.8 / 5 (48 voted)

Reviews: 95% of readers found this page helpful

Author information

Name: Melvina Ondricka

Birthday: 2000-12-23

Address: Suite 382 139 Shaniqua Locks, Paulaborough, UT 90498

Phone: +636383657021

Job: Dynamic Government Specialist

Hobby: Kite flying, Watching movies, Knitting, Model building, Reading, Wood carving, Paintball

Introduction: My name is Melvina Ondricka, I am a helpful, fancy, friendly, innocent, outstanding, courageous, thoughtful person who loves writing and wants to share my knowledge and understanding with you.