Erstellen und Bereitstellen eines IoT Edge-Geräts unter Linux mithilfe von symmetrischen Schlüsseln

Gilt für:Symbol „Ja“ IoT Edge 1.1 Andere Versionen: IoT Edge 1.2, IoT Edge 1.3

Gilt für:IoT Edge 1.2 Häkchen IoT Edge 1.2 IoT Edge 1.3 Häkchen IoT Edge 1.3 Andere Versionen:IoT Edge 1.1

In diesem Artikel finden Sie umfassende Anweisungen zum Registrieren und Bereitstellen eines IoT Edge-Geräts unter Linux, darunter auch zum Installieren von IoT Edge.

Jedes Gerät, das eine Verbindung mit einem IoT-Hub herstellt, verfügt über eine Geräte-ID, die zum Nachverfolgen der Cloud-zu-Gerät- oder Gerät-zu-Cloud-Kommunikation verwendet wird. Sie konfigurieren ein Gerät mit den Verbindungsinformationen, einschließlich des IoT Hub-Hostnamens, der Geräte-ID und der Informationen, die das Gerät zum Authentifizieren bei IoT Hub verwendet.

Die Schritte in diesem Artikel führen Sie durch die sogenannte manuelle Bereitstellung, bei der Sie ein einzelnes Gerät mit dem entsprechenden IoT-Hub verbinden. Bei der manuellen Bereitstellung haben Sie zwei Optionen zum Authentifizieren von IoT Edge-Geräten:

  • Symmetrische Schlüssel: Wenn Sie in IoT Hub eine neue Geräteidentität erstellen, erstellt der Dienst zwei Schlüssel. Ein Schlüssel befindet sich auf dem Gerät, den es bei der Authentifizierung in IoT Hub vorzeigt.

    Diese Authentifizierungsmethode kann schneller eingerichtet werden, ist dafür aber weniger sicher.

  • X.509, selbstsigniert: Sie erstellen zwei X. 509-Identitätszertifikate und bewahren diese auf dem Gerät auf. Wenn Sie in IoT Hub eine neue Geräteidentität erstellen, geben Sie Fingerabdrücke aus beiden Zertifikaten an. Wenn sich das Gerät bei IoT Hub authentifiziert, übergibt es ein Zertifikat, und IoT Hub überprüft, ob das Zertifikat mit dem Fingerabdruck übereinstimmt.

    Diese Authentifizierungsmethode ist sicherer und wird für Produktionsszenarien empfohlen.

In diesem Artikel wird die Verwendung von symmetrischen Schlüsseln als Authentifizierungsmethode beschrieben. Wenn Sie X.509-Zertifikate verwenden möchten, lesen Sie Erstellen und Bereitstellen eines IoT Edge-Geräts unter Linux mithilfe von X.509-Zertifikaten.

Hinweis

Wenn Sie viele Geräte einrichten müssen und sie nicht einzeln manuell bereitstellen möchten, informieren Sie sich in einem der folgenden Artikel, wie IoT Edge beim IoT Hub Device Provisioning Service (Gerätebereitstellungsdienst) funktioniert:

Voraussetzungen

In diesem Artikel wird beschrieben, wie Sie Ihr IoT Edge-Gerät registrieren und darauf IoT Edge installieren. Bei diesen Aufgaben gibt es unterschiedliche Voraussetzungen und Hilfsprogramme zu deren Erledigung. Stellen Sie sicher, dass alle Voraussetzungen erfüllt sind, bevor Sie den Vorgang fortsetzen.

Geräteverwaltungstools

Sie können die Schritte zum Registrieren Ihres Geräts über das Azure-Portal, mithilfe von Visual Studio Code oder über die Azure CLI ausführen. Bei jedem Hilfsprogramm gibt es eigene Voraussetzungen:

Ein IoT-Hub in Ihrem Azure-Abonnement im Tarif „Free“ oder „Standard“.

Geräteanforderungen

Ein X64-, ARM32- oder ARM64-Linux-Gerät.

Microsoft veröffentlicht Installationspakete für viele verschiedene Betriebssysteme.

Neueste Informationen dazu, welche Betriebssysteme zurzeit für Produktionsszenarien unterstützt werden, finden Sie unter Von Azure IoT Edge unterstützte Systeme.

Registrieren Ihres Geräts

Je nach Präferenz können Sie Ihr Gerät über das Azure-Portal, mithilfe von Visual Studio Code oder über die Azure CLI registrieren.

In Ihrem IoT-Hub im Azure-Portal werden IoT Edge-Geräte separat von IoT-Geräten erstellt und verwaltet, die nicht mit Edge verwendet werden können.

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem IoT Hub.

  2. Klicken Sie im linken Bereich auf IoT Edge, und klicken Sie dann auf IoT Edge Geräte hinzufügen.

    Screenshot: Hinzufügen eines IoT Edge-Geräts aus dem Azure-Portal.

  3. Geben Sie auf der Seite Gerät erstellen die folgenden Informationen ein:

    • Erstellen Sie eine eindeutige Geräte-ID. Notieren Sie sich die Geräte-ID, da Sie sie später verwenden werden.
    • Wählen Sie als Authentifizierungstyp Symmetrischer Schlüssel aus.
    • Verwenden Sie die Standardeinstellungen, um Authentifizierungsschlüssel automatisch zu generieren und das neue Gerät mit Ihrem Hub zu verbinden.
  4. Wählen Sie Speichern.

Nachdem Sie nun ein Gerät in IoT Hub registriert haben, rufen Sie die Informationen ab, mit denen Sie die Installation und Bereitstellung der IoT Edge-Runtime abschließen.

Anzeigen registrierter Geräte und Abrufen von Bereitstellungsinformationen

Für Geräte, die die Authentifizierung mit symmetrischen Schlüsseln verwenden, wird eine eigene Verbindungszeichenfolge benötigt, um die Installation und Bereitstellung der IoT Edge-Runtime abzuschließen.

Alle auf die Verwendung mit Edge ausgelegten Geräte, die eine Verbindung mit Ihrem IoT-Hub herstellen, sind auf der Seite IoT Edge aufgeführt.

Screenshot, wie Sie Ihre Geräte im Azure-Portal IoT-Hub anzeigen können.

Wenn Sie bereit für die Einrichtung Ihres Geräts sind, benötigen Sie die Verbindungszeichenfolge, die Ihr physisches Gerät mit seiner Identität in IoT Hub verknüpft.

Sie können die Verbindungszeichenfolgen von Geräten, die sich mit symmetrischen Schlüsseln authentifizieren, im Portal kopieren.

  1. Klicken Sie im Portal auf der Seite IoT Edge in der Liste der IoT Edge-Geräte auf die Geräte-ID.
  2. Kopieren Sie entweder den Wert der primären Verbindungszeichenfolge oder der sekundären Verbindungszeichenfolge.

Installieren von IoT Edge

In diesem Abschnitt bereiten Sie Ihre Linux-VM oder Ihr physisches Gerät für IoT Edge vor. Anschließend installieren Sie IoT Edge.

Führen Sie zuerst die folgenden Befehle aus, um das Paket-Repository hinzuzufügen, und fügen Sie dann Ihrer Liste der vertrauenswürdigen Schlüssel den Microsoft-Paketsignaturschlüssel hinzu.

Die Installation kann mit einigen wenigen Befehlen erledigt werden. Öffnen Sie ein Terminal, und führen Sie die folgenden Befehle aus:

  • 20.04:

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

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

Hinweis

Für Azure IoT Edge-Softwarepakete gelten die in jedem Paket (im Verzeichnis usr/share/doc/{package-name} oder LICENSE) enthaltenen Lizenzbedingungen. Lesen Sie die Lizenzbedingungen, bevor Sie ein Paket verwenden. Durch Ihre Installation und Verwendung eines Pakets erklären Sie Ihre Zustimmung zu diesen Bedingungen. Wenn Sie den Lizenzbedingungen nicht zustimmen, verwenden Sie das Paket nicht.

Installieren einer Containerengine

Azure IoT Edge basiert auf einer OCI-kompatiblen Containerruntime. Für Produktionsszenarien empfehlen wir die Verwendung der Moby-Engine. Die Moby-Engine ist die einzige Container-Engine, die offiziell von IoT Edge unterstützt wird. Docker CE/EE-Containerimages sind mit der Moby-Runtime kompatibel.

Installieren Sie die Moby-Engine.

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

Nachdem die Moby-Engine erfolgreich installiert wurde, konfigurieren Sie sie so, dass der local Protokollierungstreiber als Protokollierungsmechanismus verwendet wird. Weitere Informationen zur Protokollierungskonfiguration finden Sie in der Prüfliste zur Produktionsbereitstellung.

  • Erstellen oder öffnen Sie die Konfigurationsdatei des Docker-Daemons unter /etc/docker/daemon.json.

  • Legen Sie den Standardprotokollierungstreiber auf den Protokollierungstreiber local fest, wie im folgenden Beispiel gezeigt.

       {
          "log-driver": "local"
       }
    
  • Starten Sie die Container-Engine neu, damit die Änderungen wirksam werden.

    Tipp

    Wenn beim Installieren der Moby-Container-Engine Fehler angezeigt werden, überprüfen Sie Ihren Linux-Kernel auf Moby-Kompatibilität. Einige Hersteller von eingebetteten Geräten stellen Geräteimages mit benutzerdefinierten Linux-Kernels bereit, denen die Funktionen für die Containerengine-Kompatibilität fehlen. Führen Sie den folgenden Befehl aus, der das von Moby bereitgestellte check-config-Skript verwendet, um die Kernelkonfiguration zu überprüfen:

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

    Überprüfen Sie in der Ausgabe des Skripts, ob alle Elemente unter Generally Necessary und Network Drivers aktiviert sind. Wenn Funktionen fehlen, aktivieren Sie diese, indem Sie Ihren Kernel aus der Quelle neu erstellen und die zugehörigen Module auswählen, die in die entsprechende Konfigurationsdatei für den Kernel eingebunden werden sollen. Gleiches gilt, wenn Sie einen Kernelkonfigurationsgenerator wie defconfig oder menuconfig verwenden: Suchen und aktivieren Sie die entsprechenden Funktionen, und erstellen Sie dann den Kernel dementsprechend neu. Sobald Sie Ihren neu bearbeiteten Kernel bereitgestellt haben, führen Sie das check-config-Skript erneut aus, um zu überprüfen, ob alle erforderlichen Funktionen erfolgreich aktiviert wurden.

Installieren der IoT Edge-Runtime

Der Daemon für IoT Edge-Sicherheit dient zum Bereitstellen und Einhalten von Sicherheitsstandards auf dem IoT Edge-Gerät. Der Daemon wird bei jedem Start gestartet und führt durch Starten der restlichen IoT Edge-Runtime einen Bootstrap für das Gerät aus.

Die in diesem Abschnitt beschriebenen Schritte stellen den typischen Prozess zum Installieren der neuesten Version auf einem Gerät dar, das über eine Internetverbindung verfügt. Wenn Sie eine bestimmte Version, z. B eine Vorabversion, installieren oder eine Offlineinstallation durchführen müssen, führen Sie die Schritte unter Offlineinstallation oder Installation einer bestimmten Version weiter unten in diesem Artikel aus.

Installieren Sie IoT Edge, Version 1.1.*, zusammen mit dem Paket libiothsm-std:

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

Hinweis

IoT Edge, Version 1.1, ist der Branch für langfristigen Support von IoT Edge. Wenn Sie eine ältere Version ausführen, empfehlen wir, den neuesten Patch zu installieren oder darauf zu aktualisieren, da ältere Versionen nicht mehr unterstützt werden.

Der IoT Edge-Dienst stellt Sicherheitsstandards auf dem IoT Edge-Gerät bereit und sorgt für deren Einhaltung. Der Dienst wird bei jedem Start gestartet und führt durch Starten der restlichen IoT Edge-Runtime einen Bootstrap für das Gerät aus.

Beginnend mit Version 1.2 übernimmt der IoT-Identitätsdienst die Identitätsbereitstellung und -verwaltung für IoT Edge und andere Gerätekomponenten, die mit IoT Hub kommunizieren müssen.

Die in diesem Abschnitt beschriebenen Schritte stellen den typischen Prozess zum Installieren der neuesten Version auf einem Gerät dar, das über eine Internetverbindung verfügt. Wenn Sie eine bestimmte Version, z. B eine Vorabversion, installieren oder eine Offlineinstallation durchführen müssen, führen Sie die Schritte unter Offlineinstallation oder Installation einer bestimmten Version weiter unten in diesem Artikel aus.

Hinweis

In diesem Abschnitt werden die Schritte zum Installieren der neuesten IoT Edge-Version gezeigt.

Wenn Sie bereits ein IoT Edge-Gerät haben, auf dem eine ältere Version ausgeführt wird, und ein Upgrade auf die neueste Version durchführen möchten, führen Sie die Schritte unter Aktualisieren des IoT Edge-Sicherheitsdaemons und der Runtime aus. Neuere Versionen unterscheiden sich ausreichend von früheren IoT Edge-Versionen, sodass bestimmte Schritte für das Upgrade erforderlich sind.

Installieren Sie die neueste Version von IoT Edge und des IoT-Identitätsdienstpakets:

sudo apt-get update; \
  sudo apt-get install aziot-edge defender-iot-micro-agent-edge

Das „Defender-iot-micro-agent-edge“-Paket enthält den Microsoft Defender für IoT-Sicherheits-Micro-Agent, der Endpunktsichtbarkeit in der Sicherheitsstatusverwaltung, Sicherheitsrisiken, Bedrohungserkennung, Flottenverwaltung und mehr bietet, um Ihre IoT Edge Geräte zu sichern. Es wird empfohlen, den Micro-Agent zusammen mit dem Edge-Agent zu installieren, um die Sicherheitsüberwachung und -härtung Ihrer Edgegeräte zu ermöglichen. Weitere Informationen zu Microsoft Defender für Cloud finden Sie unter Was ist Microsoft Defender für IoT für Geräteentwickler?.

Bereitstellen des Geräts mit seiner Cloud-Identität

Nachdem die Containerengine und die IoT Edge-Runtime auf Ihrem Gerät installiert wurden, sind Sie nun für den nächsten Schritt bereit, nämlich das Einrichten des Geräts mit seinen Cloudidentitäts- und Authentifizierungsinformationen.

Öffnen Sie die Konfigurationsdatei auf dem IoT Edge-Gerät.

sudo nano /etc/iotedge/config.yaml

Suchen Sie die Bereitstellungskonfigurationen der Datei, und heben Sie die Auskommentierung des Abschnitts Manual provisioning configuration using a connection string (Manuelle Bereitstellungskonfiguration mit einer Verbindungszeichenfolge) auf, wenn dies nicht bereits geschehen ist.

# Manual provisioning configuration using a connection string
provisioning:
  source: "manual"
  device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"

Aktualisieren Sie den Wert von device_connection_string durch die Verbindungszeichenfolge Ihres IoT Edge-Geräts. Stellen Sie sicher, dass alle anderen Bereitstellungsabschnitte auskommentiert sind. Stellen Sie sicher, dass der Zeile provisioning: kein Leerzeichen vorangestellt ist und dass geschachtelte Elemente jeweils um zwei Leerzeichen eingerückt sind.

Verwenden Sie zum Einfügen des Inhalts der Zwischenablage in Nano Shift+Right Click, oder drücken Sie Shift+Insert.

Speichern und schließen Sie die Datei.

CTRL + X, Y, Enter

Starten Sie nach Eingabe der Bereitstellungsinformationen in der Konfigurationsdatei den Daemon neu:

sudo systemctl restart iotedge

Mithilfe des folgenden Befehls können Sie Ihr IoT Edge-Gerät schnell mit der Authentifizierung über symmetrische Schlüssel konfigurieren:

sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE'

Der Befehl iotedge config mp erstellt eine Konfigurationsdatei auf dem Gerät und trägt Ihre Verbindungszeichenfolge in die Datei ein.

Übernehmen Sie die Konfigurationsänderungen.

sudo iotedge config apply

Wenn Sie die Konfigurationsdatei anzeigen möchten, können Sie sie öffnen:

sudo nano /etc/aziot/config.toml

Überprüfen der erfolgreichen Konfiguration

Vergewissern Sie sich, dass die Runtime erfolgreich auf Ihrem IoT Edge-Gerät installiert und konfiguriert wurde.

Tipp

Sie benötigen erhöhte Rechte zum Ausführen von iotedge-Befehlen. Nachdem Sie sich bei Ihrem Computer abgemeldet und sich nach der Installation der IoT Edge-Runtime zum ersten Mal erneut angemeldet haben, werden Ihre Berechtigungen automatisch aktualisiert. Verwenden Sie bis dahin sudo vor den Befehlen.

Überprüfen Sie, ob der IoT Edge-Systemdienst ausgeführt wird.

sudo systemctl status iotedge
sudo iotedge system status

Eine erfolgreiche Statusantwort ist Ok.

Sollte eine Problembehandlung für den Dienst erforderlich sein, rufen Sie die Dienstprotokolle ab.

journalctl -u iotedge
sudo iotedge system logs

Überprüfen Sie die Konfiguration und den Verbindungsstatus des Geräts mithilfe des Tools check.

sudo iotedge check

Tipp

Verwenden Sie zur Ausführung des Tools „check“ immer sudo, auch nachdem Ihre Berechtigungen aktualisiert wurden. Das Tool benötigt erhöhte Rechte für den Zugriff auf die Konfigurationsdatei, um den Konfigurationsstatus überprüfen zu können.

Zeigen Sie alle Module an, die auf Ihrem IoT Edge-Gerät ausgeführt werden. Wenn der Dienst zum ersten Mal gestartet wird, sollte nur das Modul edgeAgent ausgeführt werden. Das Modul edgeAgent wird standardmäßig ausgeführt und unterstützt Sie beim Installieren und Starten von zusätzlichen Modulen, die Sie auf Ihrem Gerät bereitstellen.

sudo iotedge list

Wenn Sie ein neues IoT Edge Gerät erstellen, wird es im Azure-Portal mit dem Statuscode 417 -- The device's deployment configuration is not set angezeigt. Dieser Status ist normal und bedeutet, dass das Gerät bereit ist, eine Modulbereitstellung zu empfangen.

Offlineinstallation oder Installation einer bestimmten Version (optional)

Die in diesem Abschnitt aufgeführten Schritte sind für Szenarien vorgesehen, die von den Schritten der Standardinstallation nicht abgedeckt werden. Das können beispielsweise sein:

  • Die Offlineinstallation von IoT Edge
  • Die Installation einer Release Candidate-Version

Mithilfe der in diesem Abschnitt beschriebenen Schritte können Sie eine bestimmte Version der Azure IoT Edge-Runtime installieren, die über Ihren Paket-Manager nicht zur Verfügung steht. Die Microsoft-Paketliste enthält nur eine begrenzte Reihe aktueller Versionen und deren Unterversionen. Diese Schritte sind also für diejenigen gedacht, die eine ältere Version oder eine Release Candidate-Version installieren möchten.

Mithilfe von curl-Befehlen können Sie die Komponentendateien direkt aus dem IoT Edge-GitHub-Repository als Ziel verwenden.

  1. Navigieren Sie zu den Veröffentlichungen von Azure IoT Edge, und suchen Sie die Version, die Sie verwenden möchten.

  2. Erweitern Sie den Abschnitt Assets für diese Version.

  3. Jedes Release sollte neue Dateien für den IoT Edge-Sicherheits-Daemon und hsmlib enthalten. Wenn Sie IoT Edge auf einem Offlinegerät installieren möchten, laden Sie diese Dateien im Voraus herunter. Alternativ können Sie diese Komponenten mit den folgenden Befehlen aktualisieren.

    1. Suchen Sie die libiothsm-std-Datei, die der Architektur Ihres IoT Edge-Geräts entspricht. Klicken Sie mit der rechten Maustaste auf den Dateilink, und kopieren Sie die Linkadresse.

    2. Verwenden Sie den kopierten Link im folgenden Befehl, um diese Version von hsmlib zu installieren:

      curl -L <libiothsm-std_link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. Suchen Sie die iotedge-Datei, die der Architektur Ihres IoT Edge-Geräts entspricht. Klicken Sie mit der rechten Maustaste auf den Dateilink, und kopieren Sie die Linkadresse.

    4. Verwenden Sie den kopierten Link im folgenden Befehl, um diese Version des IoT Edge-Sicherheits-Daemons zu installieren.

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

Hinweis

Wenn auf Ihrem Gerät zurzeit IoT Edge, Version 1.1 oder älter, ausgeführt wird, deinstallieren Sie die Pakete iotedge und libiothsm-std, bevor Sie die Schritte in diesem Abschnitt ausführen. Weitere Informationen finden Sie unter Update von 1.0 oder 1.1 auf die neueste Version.

  1. Navigieren Sie zu den Veröffentlichungen von Azure IoT Edge, und suchen Sie die Version, die Sie verwenden möchten.

  2. Erweitern Sie den Abschnitt Assets für diese Version.

  3. Jedes Release sollte neue Dateien für IoT Edge und den Identitätsdienst enthalten. Wenn Sie IoT Edge auf einem Offlinegerät installieren möchten, laden Sie diese Dateien im Voraus herunter. Alternativ können Sie diese Komponenten mit den folgenden Befehlen aktualisieren.

    1. Suchen Sie die Datei aziot-identity-service, die der Architektur Ihres IoT Edge-Geräts entspricht. Klicken Sie mit der rechten Maustaste auf den Dateilink, und kopieren Sie die Linkadresse.

    2. Verwenden Sie den kopierten Link im folgenden Befehl, um diese Version des Identitätsdiensts zu installieren:

      curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
      
    3. Suchen Sie die Datei aziot-edge, die der Architektur Ihres IoT Edge-Geräts entspricht. Klicken Sie mit der rechten Maustaste auf den Dateilink, und kopieren Sie die Linkadresse.

    4. Verwenden Sie den kopierten Link im folgenden Befehl, um diese Version von IoT Edge zu installieren.

      curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
      

Nachdem die Containerengine und die IoT Edge-Runtime auf Ihrem Gerät installiert wurden, sind Sie nun für den nächsten Schritt bereit, nämlich das Bereitstellen des Geräts mit seiner Cloudidentität.

Deinstallieren von IoT Edge

Verwenden Sie die folgenden Befehle, wenn Sie die IoT Edge-Installationen von Ihrem Gerät entfernen möchten.

Entfernen Sie die IoT Edge-Runtime.

sudo apt-get autoremove iotedge
sudo apt-get autoremove --purge aziot-edge

Lassen Sie das Flag --purge weg, wenn Sie IoT Edge erneut installieren und künftig dieselben Konfigurationsinformationen verwenden möchten. Das Flag --purge löscht alle IoT Edge zugeordneten Dateien, einschließlich Ihrer Konfigurationsdateien.

Wenn die IoT Edge-Runtime entfernt wird, werden alle von ihr erstellten Container angehalten. Auf Ihrem Gerät sind sie jedoch weiterhin vorhanden. Zeigen Sie alle Container an, um die verbliebenen zu sehen.

sudo docker ps -a

Löschen Sie die Container von Ihrem Gerät, einschließlich der zwei Laufzeitcontainer.

sudo docker rm -f <container name>

Entfernen Sie schließlich die Containerruntime von Ihrem Gerät.

sudo apt-get autoremove --purge moby-engine