Erstellen und Bereitstellen eines IoT Edge-Geräts unter Linux mithilfe von symmetrischen Schlüsseln
Gilt für: IoT Edge 1.4
Wichtig
IoT Edge Version 1.4 wird unterstützt. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.
Dieser Artikel enthält End-to-End-Anweisungen zum Registrieren und Bereitstellen eines Linux IoT Edge-Geräts, das die Installation von IoT Edge umfasst.
Jedes Gerät, das eine Verbindung mit einem IoT-Hub herstellt, verfügt über eine Geräte-ID, die zum Nachverfolgen von Cloud-zu-Gerät - oder Geräte-zu-Cloud-Kommunikation verwendet wird. Sie konfigurieren ein Gerät mit seinen Verbindungsinformationen, die Folgendes umfassen:
- Hostname des IoT-Hubs
- Geräte-ID
- Authentifizierungsdetails zum Herstellen einer Verbindung mit IoT Hub
Die Schritte in diesem Artikel durchlaufen einen Prozess, der als manuelle Bereitstellung bezeichnet wird, bei dem Sie ein einzelnes Gerät mit seinem 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 selbstsignierte: Sie erstellen zwei X.509-Identitätszertifikate und platzieren sie auf dem Gerät. 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 Produktionsszenarios empfohlen.
In diesem Artikel wird die Verwendung von symmetrischen Schlüsseln als Authentifizierungsmethode behandelt. 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 gezeigt, wie Sie Ihr IoT Edge-Gerät registrieren und IoT Edge (auch IoT Edge-Runtime genannt) auf Ihrem Gerät installieren. Stellen Sie sicher, dass Sie über das Geräteverwaltungstool Ihrer Wahl verfügen, z. B. Azure CLI und Geräteanforderungen, bevor Sie Ihr Gerät registrieren und installieren.
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. Jedes Dienstprogramm verfügt über eigene Voraussetzungen oder muss möglicherweise installiert werden:
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.
Visual Studio Code-Erweiterungen
Wenn Sie Visual Studio Code verwenden, gibt es hilfreiche Azure IoT-Erweiterungen, die das Erstellen und Verwalten von Geräten vereinfachen.
Installieren Sie sowohl die Erweiterungen Azure IoT Edge als auch Azure IoT Hub:
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.
Melden Sie sich beim Azure-Portal an, und navigieren Sie zu Ihrem IoT Hub.
Klicken Sie im linken Bereich auf Geräte, und klicken Sie dann auf Gerät hinzufügen.
Geben Sie auf der Seite Gerät erstellen die folgenden Informationen ein:
- Erstellen Sie eine beschreibende Geräte-ID, z
my-edge-device-1
. B. (alle Kleinbuchstaben). Kopieren Sie diese Geräte-ID, wie Sie sie später verwenden. - Aktivieren Sie das Kontrollkästchen IoT Edge-Gerät.
- Wählen Sie als Authentifizierungstyp Symmetrischer Schlüssel aus.
- Verwenden Sie die Standardeinstellungen zum automatischen Generieren von Authentifizierungsschlüsseln, die das neue Gerät mit Ihrem Hub verbinden.
- Erstellen Sie eine beschreibende Geräte-ID, z
Wählen Sie Speichern aus.
Ihr neues Gerät sollte in Ihrem IoT-Hub aufgeführt sein.
Nachdem Sie nun ein Gerät im IoT Hub registriert haben, können Sie Bereitstellungsinformationen abrufen, die verwendet werden, um die Installation und Bereitstellung der IoT Edge-Laufzeit im nächsten Schritt abzuschließ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. Die Verbindungszeichenfolge wird beim Erstellen des Geräts für Ihr IoT Edge-Gerät generiert. Für Visual Studio Code und Azure CLI befindet sich der Verbindungszeichenfolge in der JSON-Ausgabe. Wenn Sie das Azure-Portal zum Erstellen Ihres Geräts verwenden, finden Sie die Verbindungszeichenfolge vom Gerät selbst. Wenn Sie Ihr Gerät in Ihrem IoT-Hub auswählen, wird es wie Primary connection string
auf der Geräteseite aufgeführt.
Die edgefähigen Geräte, die eine Verbindung mit Ihrem IoT-Hub herstellen, werden auf der Seite "Geräte" Ihres IoT-Hubs aufgeführt. Wenn Sie über mehrere Geräte verfügen, können Sie die Liste filtern, indem Sie den Typ "Iot Edge-Geräte" auswählen und dann "Übernehmen" auswählen.
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. So finden Sie Ihre Verbindungszeichenfolge im Portal:
- Wählen Sie auf der Seite "Geräte " die IoT Edge-Geräte-ID aus der Liste aus.
- Kopieren Sie entweder den Wert der primären Verbindungszeichenfolge oder der sekundären Verbindungszeichenfolge. Beide Schlüssel funktionieren.
Installieren von IoT Edge
In diesem Abschnitt bereiten Sie Ihren virtuellen Linux Computer oder Ihr physisches Gerät für loT Edge vor. Anschließend installieren Sie IoT Edge.
Führen Sie die folgenden Befehle aus, um das Paketrepository hinzuzufügen, und fügen Sie dann Ihrer Liste von vertrauenswürdigen Schlüsseln den Microsoft-Paketsignaturschlüssel hinzu.
Wichtig
Am 30. Juni 2022 wurde Raspberry Pi OS Stretch aus der Betriebssystem-Supportliste der Stufe 1 zurückgezogen. Wenn Sie potenzielle Sicherheitsrisiken vermeiden möchten, aktualisieren Sie Ihr Hostbetriebssystem auf Bullseye.
Die Installation kann mit einigen wenigen Befehlen erledigt werden. Öffnen Sie ein Terminal, und führen Sie die folgenden Befehle aus:
22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
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
Weitere Informationen zu Betriebssystemversionen finden Sie unter von Azure IoT Edge unterstützte Plattformen.
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
Die Moby-Containerengine legt standardmäßig keine Grenzwerte für die Größe des Containerprotokolls fest. Im Laufe der Zeit kann dies dazu führen, dass das Gerät mit Protokollen überfüllt wird und auf dem Datenträger nicht genügend Speicherplatz zur Verfügung steht. Sie können ihr Protokoll jedoch so konfigurieren, dass es lokal angezeigt wird, obwohl es optional ist. Weitere Informationen zur Protokollierungskonfiguration finden Sie in der Prüfliste zur Produktionsbereitstellung.
Die folgenden Schritte zeigen, wie Sie Ihren Container so local
konfigurieren, dass der Protokollierungstreiber als Protokollierungsmechanismus verwendet wird.
Erstellen (wenn die Datei noch nicht vorhanden ist) 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.
sudo systemctl restart docker
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
undNetwork 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 wiedefconfig
odermenuconfig
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 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.
Hinweis
Ab Version 1.2 verarbeitet der IoT-Identitätsdienst die Identitätsbereitstellung und -verwaltung für IoT Edge und für andere Gerätekomponenten, die mit IoT Hub kommunizieren müssen.
Die Schritte in diesem Abschnitt stellen den typischen Prozess zum Installieren der neuesten IoT Edge-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.
Tipp
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 das IoT Identity Service-Paket (wenn Sie noch nicht auf dem neuesten Stand sind):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04 oder 18.04:
sudo apt-get update; \ sudo apt-get install aziot-edge defender-iot-micro-agent-edge
Das optionale defender-iot-micro-agent-edge
Paket enthält den Microsoft Defender für IoT-Sicherheits-Mikro-Agent, der Endpunkte Einblicke in die Verwaltung von Sicherheitsstatus, 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 das Containermodul und die IoT Edge-Laufzeit auf Ihrem Gerät installiert sind, können Sie das Gerät mit seinen Cloudidentitäts- und Authentifizierungsinformationen einrichten.
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'
Dieser iotedge config mp
Befehl erstellt eine Konfigurationsdatei auf dem Gerät und gibt Ihre Verbindungszeichenfolge in die Konfigurationsdatei ein.
Wenden Sie die Konfigurationsänderungen an.
sudo iotedge config apply
Um die Konfigurationsdatei anzuzeigen, können Sie sie öffnen:
sudo nano /etc/aziot/config.toml
Bereitstellen von Modulen
Um Ihre IoT Edge-Module bereitzustellen, wechseln Sie im Azure-Portal zu Ihrem IoT-Hub, und führen Sie dann folgende Schritte aus:
Wählen Sie im IoT Hub-Menü "Geräte" aus.
Wählen Sie Ihr Gerät aus, um seine Seite zu öffnen.
Wählen Sie die Registerkarte "Module festlegen" aus.
Da wir die IoT Edge-Standardmodule (edgeAgent und edgeHub) bereitstellen möchten, müssen wir diesem Bereich keine Module hinzufügen. Wählen Sie also " Überprüfen+ erstellen " unten aus.
Die JSON-Bestätigung Ihrer Module wird angezeigt. Wählen Sie " Erstellen" aus, um die Module bereitzustellen.
Weitere Informationen finden Sie unter Bereitstellen eines Moduls.
Ü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 iotedge system status
Eine erfolgreiche Statusantwort zeigt die
aziot
Dienste als ausgeführt oder bereit an.Sollte eine Problembehandlung für den Dienst erforderlich sein, rufen Sie die Dienstprotokolle ab.
sudo iotedge system logs
Verwenden Sie das Tool
check
, um die Konfiguration und den Verbindungsstatus des Geräts zu überprüfen.sudo iotedge check
Sie können eine Reihe von Antworten erwarten, die OK (grün), Warnung (gelb) oder Fehler (rot) enthalten können.
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.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 – Fehlerkonnte den aktuellen Zustand des EdgeHub-Containers nicht überprüfen.
Dieser Fehler wird auf einem neu bereitgestellten Gerät erwartet, da das IoT Edge Hub-Modul noch nicht ausgeführt wird. Stellen Sie sicher, dass Ihre IoT Edge-Module in den vorherigen Schritten bereitgestellt wurden. Die Bereitstellung behebt diesen Fehler.
Alternativ wird möglicherweise ein Statuscode als
417 -- The device's deployment configuration is not set
. Sobald Ihre Module bereitgestellt wurden, ändert sich dieser Status.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.
Überprüfen Sie, ob Ihr Gerät und Ihre Module bereitgestellt und ausgeführt werden, indem Sie die Geräteseite im Azure-Portal anzeigen.
Sobald Ihre Module bereitgestellt und ausgeführt werden, führen Sie sie auf Ihrem Gerät oder virtuellen Computer mit dem folgenden Befehl auf:
sudo iotedge list
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. Dies kann enthalten:
- Installieren von IoT Edge im Offlinemodus
- Installieren einer Releasekandidatenversion
Führen Sie die Schritte in diesem Abschnitt aus, wenn Sie eine bestimmte Version der Azure IoT Edge-Laufzeit installieren möchten, die nicht über Ihren Paket-Manager verfügbar ist. 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.
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.
Navigieren Sie zu den Veröffentlichungen von Azure IoT Edge, und suchen Sie die Version, die Sie verwenden möchten.
Erweitern Sie den Abschnitt Assets für diese Version.
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.
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.
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
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.
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 --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