Grundlegendes zur Identitätsregistrierung in Ihrer IoT Hub-Instanz

Jede IoT Hub-Instanz verfügt über eine Identitätsregistrierung, in der Informationen zu den Geräten und Modulen gespeichert werden, die eine Verbindung mit der IoT Hub-Instanz herstellen dürfen. Damit ein Gerät oder Modul eine Verbindung mit einem IoT-Hub herstellen kann, muss in der Identitätsregistrierung des IoT-Hubs ein Eintrag für dieses Gerät bzw. Modul vorhanden sein. Das Gerät oder Modul muss sich beim IoT-Hub zudem mit Anmeldeinformationen authentifizieren, die in der Identitätsregistrierung gespeichert sind.

Bei der in der Identitätsregistrierung gespeicherten ID des Geräts oder Moduls wird die Groß-/Kleinschreibung beachtet.

Ganz allgemein handelt es sich bei der Identitätsregistrierung um eine REST-fähige Sammlung von Identitätsressourcen des Geräts oder Moduls. Wenn Sie der Identitätsregistrierung einen Eintrag hinzufügen, erstellt IoT Hub eine Gruppe gerätespezifischer Ressourcen (beispielsweise die Warteschlange mit In-flight-Nachrichten von der Cloud an das Gerät).

Verwenden Sie die Identitätsregistrierung für Folgendes:

  • Bereitstellen von Geräten oder Modulen, die eine Verbindung mit Ihrer IoT Hub-Instanz herstellen
  • Steuern des geräte-/modulspezifischen Zugriffs auf die geräte-/modulseitigen Endpunkte Ihres Hubs

Identitätsregistrierungsvorgänge

Die IoT Hub-Identitätsregistrierung ermöglicht folgende Vorgänge:

  • Erstellen der Identität des Geräts oder Moduls
  • Aktualisieren der Identität des Geräts oder Moduls
  • Abrufen der Identität des Geräts oder Moduls nach ID
  • Löschen der Identität des Geräts oder Moduls
  • Auflisten von bis zu 1.000 Identitäten
  • Exportieren von Geräteidentitäten in Azure Blob Storage
  • Importieren von Geräteidentitäten aus Azure Blob Storage

Alle diese Vorgänge können optimistische Nebenläufigkeit gemäß RFC7232 nutzen.

Wichtig

Die einzige Möglichkeit zum Abrufen aller Identitäten in der Identitätsregistrierung eines IoT Hubs besteht in der Verwendung der Funktion Export.

Für IoT Hub-Identitätsregistrierungen gilt Folgendes:

  • Er enthält keine Anwendungsmetadaten.

Wichtig

Verwenden Sie die Identitätsregistrierung nur für die Geräteverwaltung und -bereitstellung. Vorgänge mit hohem Durchsatz zur Laufzeit dürfen nicht von Vorgängen in der Identitätsregistrierung abhängen. Das Überprüfen des Verbindungsstatus eines Geräts vor dem Senden eines Befehls ist z. B. kein unterstütztes Muster. Überprüfen Sie die Drosselungsraten für die Identitätsregistrierung.

Hinweis

Es kann einige Sekunden dauern, bis eine Geräte- oder Modulidentität nach der Erstellung abgerufen werden kann. Wiederholen Sie bei Fehlern den Vorgang get für Geräte- oder Modulidentitäten.

Deaktivieren von Geräten

Sie können Geräte deaktivieren, indem Sie die status-Eigenschaft für eine Identität in der Identitätsregistrierung aktualisieren. Typischerweise wird diese Eigenschaft in zwei Szenarien verwendet:

  • Während eines Vorgangs zur Bereitstellungsorchestrierung. Weitere Informationen finden Sie unter Gerätebereitstellung.

  • Wenn Sie denken, dass ein Gerät gefährdet ist oder aus irgendeinem Grund nicht autorisiert wurde.

    Wichtig

    IoT Hub überprüft keine Zertifikatsperrlisten, wenn Geräte mit zertifikatbasierter Authentifizierung authentifiziert werden. Wenn Sie über ein Gerät verfügen, das aufgrund eines potenziell kompromittierten Zertifikats daran gehindert werden muss, eine Verbindung mit IoT Hub herzustellen, müssen Sie das Gerät in der Identitätsregistrierung deaktivieren.

Dieses Feature ist bei Modulen nicht verfügbar.

Weitere Informationen finden Sie unter Disable or delete a device in an IoT hub (Deaktivieren oder Löschen eines Geräts in einem IoT-Hub).

Importieren und Exportieren von Geräteidentitäten

Verwenden Sie asynchrone Vorgänge im Endpunkt des IoT Hub-Ressourcenanbieters, um einen Massenexport von Geräteidentitäten aus der Identitätsregistrierung einer IoT Hub-Instanz durchzuführen. Exportvorgänge sind Aufträge mit langer Ausführungszeit, die einen vom Kunden bereitgestellten Blobcontainer zum Speichern von Geräteidentitätsdaten verwenden, die aus der Identitätsregistrierung gelesen werden.

Verwenden Sie asynchrone Vorgänge im Endpunkt des IoT Hub-Ressourcenanbieters, um einen Massenimport von Geräteidentitäten in die Identitätsregistrierung einer IoT Hub-Instanz durchzuführen. Importvorgänge sind Aufträge mit langer Ausführungszeit, die Daten in einem vom Kunden bereitgestellten Blobcontainer verwenden, um Geräteidentitätsdaten in die Identitätsregistrierung zu schreiben.

Weitere Informationen zu den Import- und Export-APIs finden Sie unter REST-APIs für den IoT Hub-Ressourcenanbieter. Weitere Informationen zum Ausführen von Import- und Exportaufträgen finden Sie unter Massenverwaltung von IoT Hub-Geräteidentitäten.

Geräteidentitäten können auch aus einem IoT-Hub exportiert oder importiert werden, indem die Service-API entweder über die REST-API oder über eines der Dienst SDKs der IoT Hub verwendet wird.

Gerätebereitstellung

Die Gerätedaten, die von einer bestimmten IoT-Lösung gespeichert werden, richten sich nach den jeweiligen Anforderungen der Lösung. Von einer Lösung müssen aber mindestens die Geräteidentitäten und Authentifizierungsschlüssel gespeichert werden. Azure IoT Hub enthält eine Identitätsregistrierung, die Werte für jedes Gerät speichern kann, z.B. IDs, Authentifizierungsschlüssel und Statuscodes. Eine Lösung kann andere Azure-Dienste wie Table Storage, Blob Storage oder Azure Cosmos DB zum Speichern anderer Gerätedaten nutzen.

Gerätebereitstellung ist der Prozess des Hinzufügens der ersten Gerätedaten zu den Speichern in Ihrer Lösung. Damit ein neues Gerät eine Verbindung mit Ihrem Hub herstellen kann, müssen Sie der IoT Hub-Identitätsregistrierung eine neue Geräte-ID und Schlüssel hinzufügen. Im Rahmen des Bereitstellungsprozesses müssen Sie unter Umständen gerätespezifische Daten in anderen Lösungsspeichern initialisieren. Ferner können Sie den Azure IoT Hub Device Provisioning-Dienst auch dazu verwenden, eine Just-in-Time-Bereitstellung auf einem oder mehreren IoT-Hubs zu ermöglichen, die keinen menschlichen Eingriff erfordert. Weitere Informationen finden Sie in der Dokumentation zum Bereitstellungsdienst.

Benachrichtigungen zum Lebenszyklus von Geräten und Modulen

IoT Hub kann Ihre IoT-Lösung durch Senden von Lebenszyklusbenachrichtigungen informieren, wenn eine Geräteidentität erstellt oder gelöscht wird. Dazu muss Ihre IoT-Lösung eine Route erstellen und die Datenquelle auf DeviceLifecycleEvents festlegen. Standardmäßig werden keine Lebenszyklusbenachrichtigungen gesendet, da es noch keine solchen Routen gibt. Durch das Erstellen einer Route mit Datenquelle gleich DeviceLifecycleEvents werden Lebenszyklusereignisse sowohl für Geräteidentitäten als auch für Modulidentitäten gesendet. Der Nachrichteninhalt unterscheidet sich je nachdem, ob die Ereignisse für Modulidentitäten oder Geräteidentitäten generiert werden. Weitere Informationen zu den Eigenschaften und den Texten, die in der Benachrichtigungsmeldung zurückgegeben werden, finden Sie unter Schemas für nicht telemetriebezogene Ereignisse.

Benachrichtigungen für die Erstellung von Modulidentitäten unterscheiden sich bei IoT Edge-Modulen von anderen Modulen. Bei IoT Edge-Modulen wird die Erstellungsbenachrichtigung nur gesendet, wenn das entsprechende IoT Edge-Gerät ausgeführt wird. Bei allen anderen Modulen werden Lebenszyklusbenachrichtigungen immer gesendet, wenn die Modulidentität auf der IoT Hub-Seite aktualisiert wird.

Geräteidentitätseigenschaften

Geräteidentitäten werden als JSON-Dokumente mit den folgenden Eigenschaften dargestellt:

Eigenschaft Optionen Beschreibung
deviceId erforderlich, bei Aktualisierungen schreibgeschützt Eine Zeichenfolge (bis zu 128 Zeichen lang) mit Beachtung von Groß-/Kleinschreibung, die aus alphanumerischen 7-Bit-ASCII-Zeichen sowie bestimmten Sonderzeichen (- . % _ * ? ! ( ) , : = @ $ ') besteht. Folgende Sonderzeichen werden nicht unterstützt: + #.
generationId erforderlich, schreibgeschützt Eine vom IoT-Hub generierte Zeichenfolge mit Berücksichtigung der Groß-/Kleinschreibung und einer Länge von bis zu 128 Zeichen. Dieser Wert dient zur Unterscheidung von Geräten mit derselben deviceId, wenn diese gelöscht und neu erstellt wurden.
etag erforderlich, schreibgeschützt Eine Zeichenfolge, die gemäß RFC7232 ein schwaches ETag für die Geräteidentität darstellt.
authentication Optional Ein zusammengesetztes Objekt, das Authentifizierungsinformationen und Sicherheitsdaten enthält. Weitere Informationen finden Sie in der Dokumentation zur REST-API unter Authentifizierungsmechanismus.
capabilities optional Der Satz von Funktionen des Geräts. Beispielsweise, ob das Gerät ein Edgegerät ist oder nicht. Weitere Informationen finden Sie in der Dokumentation zur REST-API unter Gerätefunktionen.
deviceScope optional Der Bereich des Geräts. Auf Edgegeräten automatisch generiert und unveränderlich. Auf Nicht-Edgegeräten veraltet. Legen Sie diese Eigenschaft jedoch bei untergeordneten (Blatt-)Geräten auf denselben Wert fest wie die parentScopes-Eigenschaft (deviceScope des übergeordneten Geräts), um Abwärtskompatibilität mit früheren Versionen der API zu gewährleisten. Weitere Informationen finden Sie unter IoT Edge als Gateway: über- und untergeordnete Beziehungen.
parentScopes optional Der Bereich des direkten übergeordneten Geräts eines untergeordneten Geräts (der Wert der Eigenschaft deviceScope des übergeordneten Geräts). Auf Edgegeräten ist der Wert leer, wenn das Gerät kein übergeordnetes Gerät hat. Auf Nicht-Edgegeräten ist die Eigenschaft nicht vorhanden, wenn es bei einem Gerät kein übergeordnetes Gerät gibt. Weitere Informationen finden Sie unter IoT Edge als Gateway: über- und untergeordnete Beziehungen.
status Erforderlich Zugriffsanzeige. Kann Aktiviert oder Deaktiviert lauten. Sofern der Status Aktiviertlautet, kann das Gerät eine Verbindung herstellen. Wenn der Wert Deaktiviert lautet, kann dieses Gerät auf keinen geräteseitigen Endpunkt zugreifen.
statusReason Optional Eine 128 Zeichen lange Zeichenfolge, die die Ursache des Geräteidentitätsstatus speichert. Alle UTF-8-Zeichen sind zulässig.
statusUpdateTime schreibgeschützt Eine temporale Anzeige, die Datum und Uhrzeit der letzten Statusaktualisierung anzeigt.
connectionState schreibgeschützt Ein Feld, das den Verbindungsstatus anzeigt: entweder Verbunden oder Getrennt. Dieses Feld stellt den Geräteverbindungsstatus aus IoT Hub-Sicht dar. Wichtig: Dieses Feld sollte nur zu Entwicklungs- bzw. Debugzwecken verwendet werden. Der Verbindungszustand wird nur für Geräte aktualisiert, die MQTT oder AMQP verwenden. Er basiert außerdem auf Pings auf Protokollebene (MQTT- oder AMQP-Pings) und kann eine maximale Verzögerung von 5 Minuten haben. Aus diesen Gründen kann es zu False Positives kommen. Ein Beispiel wären etwa getrennte Geräte, die als verbunden gemeldet werden.
connectionStateUpdatedTime schreibgeschützt Eine temporale Anzeige, die Datum und Uhrzeit der letzten Aktualisierung des Verbindungsstatus angezeigt.
lastActivityTime schreibgeschützt Eine temporale Anzeige, die anzeigt, an welchem Datum und zu welcher Uhrzeit das Gerät sich zuletzt verbunden und eine Nachricht empfangen oder gesendet hat. Diese Eigenschaft ist letztendlich konsistent, kann jedoch um 5 bis 10 Minuten verzögert werden. Aus diesem Grund sollte sie in Produktionsszenarien nicht verwendet werden.

Hinweis

Der Verbindungsstatus kann nur den Status der Verbindung aus Sicht von IoT Hub widerspiegeln. Aktualisierungen dieser Statusanzeige können sich je nach Netzwerkbedingungen und -konfigurationen verzögern.

Hinweis

Zurzeit wird die Verwendung der Zeichen + und # in der deviceId von den Geräte-SDKs nicht unterstützt.

Modulidentitätseigenschaften

Modulidentitäten werden als JSON-Dokumente mit den folgenden Eigenschaften dargestellt:

Eigenschaft Optionen Beschreibung
deviceId erforderlich, bei Aktualisierungen schreibgeschützt Eine Zeichenfolge (bis zu 128 Zeichen lang) mit Beachtung von Groß-/Kleinschreibung, die aus alphanumerischen 7-Bit-ASCII-Zeichen sowie bestimmten Sonderzeichen (- . + % _ # * ? ! ( ) , : = @ $ ') besteht.
moduleId erforderlich, bei Aktualisierungen schreibgeschützt Eine Zeichenfolge (bis zu 128 Zeichen lang) mit Beachtung von Groß-/Kleinschreibung, die aus alphanumerischen 7-Bit-ASCII-Zeichen sowie bestimmten Sonderzeichen (- . + % _ # * ? ! ( ) , : = @ $ ') besteht.
generationId erforderlich, schreibgeschützt Eine vom IoT-Hub generierte Zeichenfolge mit Berücksichtigung der Groß-/Kleinschreibung und einer Länge von bis zu 128 Zeichen. Dieser Wert dient zur Unterscheidung von Geräten mit derselben deviceId, wenn sie gelöscht und dann neu erstellt wurden.
etag erforderlich, schreibgeschützt Eine Zeichenfolge, die gemäß RFC7232 ein schwaches ETag für die Geräteidentität darstellt.
authentication Optional Ein zusammengesetztes Objekt, das Authentifizierungsinformationen und Sicherheitsdaten enthält. Weitere Informationen finden Sie in der Dokumentation zur REST-API unter Authentifizierungsmechanismus.
managedBy optional Legt fest, wer dieses Modul verwaltet. Er lautet beispielsweise „IoT Edge“, wenn die Edge-Runtime Besitzer dieses Moduls ist.
cloudToDeviceMessageCount schreibgeschützt Die Anzahl der Cloud-zu-Modul-Nachrichten, die derzeit in der Warteschlange stehen, um an das Modul gesendet zu werden.
connectionState schreibgeschützt Ein Feld, das den Verbindungsstatus anzeigt: entweder Verbunden oder Getrennt. Dieses Feld stellt den Geräteverbindungsstatus aus IoT Hub-Sicht dar. Wichtig: Dieses Feld sollte nur zu Entwicklungs- bzw. Debugzwecken verwendet werden. Der Verbindungszustand wird nur für Geräte aktualisiert, die MQTT oder AMQP verwenden. Er basiert außerdem auf Pings auf Protokollebene (MQTT- oder AMQP-Pings) und kann eine maximale Verzögerung von 5 Minuten haben. Aus diesen Gründen kann es zu False Positives kommen. Ein Beispiel wären etwa getrennte Geräte, die als verbunden gemeldet werden.
connectionStateUpdatedTime schreibgeschützt Eine temporale Anzeige, die Datum und Uhrzeit der letzten Aktualisierung des Verbindungsstatus angezeigt.
lastActivityTime schreibgeschützt Eine temporale Anzeige, die anzeigt, an welchem Datum und zu welcher Uhrzeit das Gerät sich zuletzt verbunden und eine Nachricht empfangen oder gesendet hat.

Hinweis

Zurzeit wird die Verwendung der Zeichen + und # in der deviceId und der moduleId von den Geräte-SDKs nicht unterstützt.

Weiteres Referenzmaterial

Weitere Referenzartikel im IoT Hub-Entwicklerhandbuch:

Nächste Schritte

Nachdem Sie erfahren haben, wie die IoT Hub-Identitätsregistrierung verwendet wird, sind jetzt möglicherweise die folgenden Artikel im IoT Hub-Entwicklerhandbuch für Sie interessant:

Informationen, die Sie beim Erforschen der Verwendung des IoT Hub Device Provisioning-Diensts für die Just-in-Time-Bereitstellung ohne Benutzereingriff unterstützen, finden Sie in: