Erstellen und Bereitstellen von loT Edge-Geräten in großem Umfang unter Linux mit symmetrischem Schlüssel
Gilt für: IoT Edge 1.5 IoT Edge 1.4
Wichtig
IoT Edge 1.5 LTS und IoT Edge 1.4 LTS sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.
In diesem Artikel finden Sie eine umfassende Anleitung für die automatische Bereitstellung mit symmetrischen Schlüsseln von einem oder mehreren loT Edge-Geräte unter Linux. Sie können Azure loT Edge-Geräte mit dem Azure loT Hub-Device Provisioning Service (DPS) automatisch bereitstellen. Wenn Sie mit dem Prozess der automatischen Bereitstellung nicht vertraut sind, lesen Sie die Übersicht zur Bereitstellung, bevor Sie den Vorgang fortsetzen.
Aufgaben:
- Erstellen Sie entweder eine individuelle Registrierung für ein einzelnes Gerät oder eine Gruppenregistrierung für eine Gruppe von Geräten.
- Installieren Sie die IoT Edge-Runtime, und verbinden Sie das Gerät mit dem IoT Hub.
Tipp
Verwenden Sie für eine vereinfachte Benutzeroberfläche das Azure IoT Edge-Konfigurationstool. Dieses Befehlszeilentool, das sich zurzeit in der öffentlichen Vorschau befindet, installiert IoT Edge auf Ihrem Gerät und stellt es mithilfe von DPS und dem Nachweis des symmetrischen Schlüssels zur Verfügung.
Der Nachweis des symmetrischen Schlüssels ist eine einfache Methode zum Authentifizieren eines Geräts mit einer Device Provisioning Service-Instanz. Diese Nachweismethode stellt eine „Hallo Welt“-Umgebung für Entwickler bereit, die noch nicht mit der Gerätebereitstellung vertraut sind oder keine strengen Sicherheitsanforderungen haben. Die Gerätebestätigung bzw. der Nachweis mithilfe eines TPM (Trusted Platform Module) oder von X.509-Zertifikaten ist sicherer und sollte verwendet werden, wenn striktere Sicherheitsanforderungen gelten.
Voraussetzungen
Cloudressourcen
- Ein aktiver IoT-Hub
- Eine Instanz des IoT Hub Device Provisioning Service (Gerätebereitstellungsdienst) in Azure, die mit Ihrem IoT-Hub verknüpft ist
- Wenn Sie über keine Instanz des Device Provisioning Service verfügen, können Sie die Anweisungen in den Abschnitten Erstellen eines neuen IoT Hub Device Provisioning Service und Verknüpfen des IoT-Hubs und Ihres Gerätebereitstellungsdiensts der Schnellstartanleitung zum IoT Hub Device Provisioning Service befolgen.
- Nachdem Sie den Device Provisioning-Dienst gestartet haben, kopieren Sie den Wert ID-Bereich von der Seite „Übersicht“. Sie können diesen Wert verwenden, wenn Sie IoT Edge-Runtime konfigurieren.
Geräteanforderungen
Ein physisches oder virtuelles Linux-Gerät, dass das IoT Edge-Gerät sein soll.
Sie müssen eine eindeutige Registrierungs-ID definieren, um jedes Gerät zu identifizieren. Sie können die MAC-Adresse, Seriennummer oder eindeutige Informationen vom Gerät verwenden. So könnten Sie beispielsweise mithilfe einer Kombination aus MAC-Adresse und Seriennummer diese Zeichenfolge für eine Registrierungs-ID bilden: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
. Gültige Zeichen sind alphanumerische Kleinbuchstaben und Bindestriche (-
).
Erstellen einer DPS-Registrierung
Erstellen Sie eine Registrierung, um ein oder mehrere Geräte über DPS bereitzustellen.
Wenn Sie ein einzelnes IoT Edge-Gerät bereitstellen möchten, erstellen Sie eine individuelle Registrierung. Wenn Sie mehrere Geräte bereitstellen müssen, führen Sie die Schritte zum Erstellen einer DPS-Gruppenregistrierung aus.
Wenn Sie eine Registrierung im DPS erstellen, haben Sie die Möglichkeit, einen Anfangszustand des Gerätezwillings zu deklarieren. Im Gerätezwilling können Sie Tags zum Gruppieren von Geräten nach jeder beliebigen Metrik, z.B. Region, Umgebung, Speicherort oder Geräte, festlegen, die Sie in Ihrer Projektmappe benötigen. Diese Tags werden zum Erstellen von automatischen Bereitstellungen verwendet.
Weitere Informationen zu Registrierungen im Device Provisioning Service finden Sie unter Verwalten von Geräteregistrierungen.
Erstellen einer individuellen DPS-Registrierung
Tipp
Die Schritte in diesem Artikel gelten für das Azure-Portal. Sie können individuelle Registrierungen aber auch mithilfe der Azure CLI erstellen. Weitere Informationen finden Sie unter az iot dps-Registrierung. Verwenden Sie als Teil des CLI-Befehls das Flag edge-enabled (Edge-fähig), um anzugeben, dass die Registrierung für ein IoT Edge-Gerät gilt.
Navigieren Sie im Azure-Portal zu Ihrer Instanz des IoT Hub Device Provisioning Service.
Klicken Sie in Einstellungen auf Registrierungen verwalten.
Klicken Sie auf Individuelle Registrierung hinzufügen, und führen Sie dann die folgenden Schritte aus, um die Registrierung zu konfigurieren:
Wählen Sie unter Mechanismus die Option Symmetrischer Schlüssel aus.
Geben Sie eine eindeutige Registrierungs-ID für Ihr Gerät an.
Optional können Sie eine IoT Hub-Geräte-ID für Ihr Gerät angeben. Sie können mithilfe von Geräte-IDs ein einzelnes Gerät als Ziel für die Modulbereitstellung festlegen. Wenn Sie keine Geräte-ID angeben, wird die Registrierungs-ID verwendet.
Wählen Sie True aus, um anzugeben, dass die Registrierung für ein IoT Edge-Gerät erfolgt.
Fügen Sie optional einen Tagwert zu Anfänglicher Status von Gerätezwilling hinzu. Sie können mithilfe von Tags Gruppen von Geräten als Ziel für die Modulbereitstellung festlegen. Beispiel:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
Wählen Sie Speichern aus.
Kopieren Sie den Wert Primärschlüssel der individuellen Registrierung, der beim Installieren der IoT Edge-Runtime verwendet werden soll.
Nachdem nun eine Registrierung für dieses Gerät vorhanden ist, kann die IoT Edge-Runtime das Gerät während der Installation automatisch bereitstellen.
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.
Für unterstützte Plattformbetriebssysteme der Ebene 2 werden Installationspakete in Azure IoT Edge-Releases zur Verfügung gestellt. Weitere Informationen finden Sie in den Installationsschritten unter Offlineinstallation oder Installation einer bestimmten Version.
Die Installation kann mit einigen wenigen Befehlen erledigt werden. Öffnen Sie ein Terminal, und führen Sie die folgenden Befehle aus:
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
Weitere Informationen zu den Betriebssystemversionen finden Sie unter Unterstützte Plattformen für Azure IoT Edge.
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 Container-Engine, die offiziell von IoT Edge unterstützt wird. Docker CE/EE-Containerimages sind mit der Moby-Runtime kompatibel. Wenn Sie Ubuntu Core-Snaps verwenden, wird der Docker-Snap von Canonical gewartet und für Produktionsszenarien unterstützt.
Installieren Sie die Moby-Engine.
sudo apt-get update; \
sudo apt-get install moby-engine
Standardmäßig legt die Containerengine 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, allerdings ist dies optional. Weitere Informationen zur Protokollierungskonfiguration finden Sie in der Prüfliste zur Produktionsbereitstellung.
Die folgenden Schritte zeigen Ihnen, wie Sie Ihren Container so konfigurieren, dass der Protokollierungstreiber local
als Protokollierungsmechanismus verwendet wird.
Erstellen oder Bearbeiten der Konfigurationsdatei des vorhandenen Docker-Daemons
sudo nano /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
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 übernimmt 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 zur Installation der neuesten IoT Edge-Version auf einem Gerät mit Internetverbindung dar. 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-Identitätsdienstpaket (falls Sie nicht bereits auf dem neuesten Stand sind):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge defender-iot-micro-agent-edge
Das optionale Paket defender-iot-micro-agent-edge
enthält den Microsoft Defender for IoT-Sicherheitsmikroagenten, der an den Endpunkten Einblicke in das Sicherheitsmanagement, Sicherheitslücken, die Erkennung von Bedrohungen, das Flottenmanagement und vieles mehr bietet, damit Sie Ihre IoT Edge-Geräte schützen können. 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
Konfigurieren Sie Ihr Gerät mit den Informationen, die es zum Herstellen einer Verbindung mit dem Gerätebereitstellungsdienst und IoT Hub verwendet, sobald die Runtime auf Ihrem Gerät installiert ist.
Halten Sie die folgenden Informationen bereit:
- Den Wert für den DPS-ID-Bereich
- Die von Ihnen erstellte Registrierungs-ID für das Gerät
- Entweder der Primärschlüssel aus einer individuellen Registrierung oder ein abgeleiteter Schlüssel für Geräte, die eine Gruppenregistrierung verwenden.
Erstellen Sie eine Konfigurationsdatei für Ihr Gerät basierend auf einer Vorlagendatei, die im Rahmen der IoT Edge-Installation bereitgestellt wird.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
Öffnen Sie die Konfigurationsdatei auf dem IoT Edge-Gerät.
sudo nano /etc/aziot/config.toml
Suchen Sie den Abschnitt Provisioning (Bereitstellung) der Datei. Heben Sie die Auskommentierung der Zeilen für die DPS-Bereitstellung mit symmetrischem Schlüssel auf, und vergewissern Sie sich, dass alle anderen Bereitstellungszeilen auskommentiert sind.
# DPS provisioning with symmetric key [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "PASTE_YOUR_SCOPE_ID_HERE" # Uncomment to send a custom payload during DPS registration # payload = { uri = "PATH_TO_JSON_FILE" } [provisioning.attestation] method = "symmetric_key" registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE" symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" } # auto_reprovisioning_mode = Dynamic
Aktualisieren Sie die Werte
id_scope
,registration_id
undsymmetric_key
mit Ihren DPS- und Geräteinformationen.Der symmetrische Schlüsselparameter kann einen Wert eines Inline-Schlüssels, eines Datei-URIs oder eines PKCS#11-URIs akzeptieren. Heben Sie die Auskommentierung nur einer symmetrischen Schlüsselzeile auf, basierend auf dem von Ihnen verwendeten Format. Nutzen Sie bei Verwendung eines Inlineschlüssels einen base64-codierten Schlüssel wie im Beispiel. Wenn Sie einen Datei-URI verwenden, muss die Datei die unformatierten Bytes des Schlüssels enthalten.
Wenn Sie PKCS#11-URIs verwenden, suchen Sie in der Konfigurationsdatei den Abschnitt PKCS#11, und stellen Sie Informationen zu Ihrer PKCS#11-Konfiguration bereit.
Weitere Informationen zur Bereitstellung von Konfigurationseinstellungen finden Sie unter Konfigurieren von IoT Edge-Geräteeinstellungen.
Suchen Sie optional in der Datei nach dem Abschnitt zum „Modus für die automatische erneute Bereitstellung“. Verwenden Sie den Parameter
auto_reprovisioning_mode
, um das Verhalten bei der erneuten Bereitstellung Ihres Geräts zu konfigurieren. Dynamic – Erneute Bereitstellung, wenn das Gerät erkennt, dass es möglicherweise von einem IoT Hub zu einem anderen verschoben wurde. Dies ist die Standardeinstellung. AlwaysOnStartup – Erneute Bereitstellung, wenn das Gerät neu gestartet wird oder ein Absturz dazu führt, dass die Daemons neu gestartet werden. OnErrorOnly – Löst niemals automatisch die erneute Bereitstellung des Geräts aus. Bei jedem Modus gibt es eine implizite erneute Bereitstellung des Geräts, wenn es während der Identitätsbereitstellung aufgrund von Verbindungsfehlern keine Verbindung mit IoT Hub herstellen kann. Weitere Informationen finden Sie unter IoT Hub Device-Konzepte für die erneute Bereitstellung.Optional können Sie die Auskommentierung des Parameters
payload
aufheben, um den Pfad zu einer lokalen JSON-Datei anzugeben. Der Inhalt der Datei wird als zusätzliche Daten an DPS gesendet, wenn das Gerät registriert wird. Dies ist nützlich für die benutzerdefinierte Zuordnung. Beispiel: Sie möchten Ihre Geräte basierend auf der ID des IoT Plug & Play-Modells ohne menschliches Eingreifen zuordnen.Speichern und schließen Sie die Datei.
Wenden Sie die am Gerät vorgenommenen Konfigurationsänderungen an.
sudo iotedge config apply
Bestätigen einer erfolgreichen Installation
Wenn die Runtime erfolgreich gestartet wurde, können Sie zu Ihrem IoT Hub navigieren und mit dem Bereitstellen von IoT Edge-Modulen auf Ihrem Gerät beginnen.
Sie können überprüfen, ob die individuelle Registrierung, die Sie im Gerätebereitstellungsdienst erstellt haben, verwendet wurde. Navigieren Sie im Azure-Portal zu Ihrer Instanz für den Gerätebereitstellungsdienst. Öffnen Sie die Registrierungsdetails für die von Ihnen erstellte individuelle Registrierung. Beachten Sie, dass der Status der Registrierung Zugewiesen lautet und die Geräte-ID aufgeführt ist.
Mit den folgenden Befehlen können Sie auf Ihrem Gerät überprüfen, ob IoT Edge erfolgreich installiert und gestartet wurde.
Überprüfen Sie den Status des IoT Edge-Diensts.
sudo iotedge system status
Untersuchen Sie die Dienstprotokolle.
sudo iotedge system logs
Führen Sie ausgeführte Module auf.
sudo iotedge list
Nächste Schritte
Der Registrierungsprozess des Device Provisioning Service ermöglicht es Ihnen, die Geräte-ID und die Tags von Gerätezwillingen beim Bereitstellen des neuen Geräts festzulegen. Sie können diese Werte verwenden, um einzelne Geräte oder Gruppen von Geräten über die automatische Geräteverwaltung als Ziel festzulegen. Weitere Informationen finden Sie unter Bedarfsgerechtes Bereitstellen und Überwachen von IoT Edge-Modulen mithilfe des Azure-Portals oder Verwenden der Azure CLI.