Freigeben über


Grundlegendes zur Identitätsregistrierung in Ihrer IoT Hub-Instanz

Jeder IoT-Hub verfügt über eine Identitätsregistrierung, in der Informationen zu den Geräten und Modulen gespeichert werden, die eine Verbindung mit dem IoT-Hub 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 authentifiziert sich beim IoT-Hub zudem mit Anmeldeinformationen, die in der Identitätsregistrierung gespeichert sind.

Bei der in der Identitätsregistrierung gespeicherten Geräte- oder Modul-ID wird die Groß-/Kleinschreibung beachtet.

Bei der Identitätsregistrierung handelt es sich um eine REST-fähige Sammlung von Identitätsressourcen. 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 Endpunkte Ihres Hubs

Identitätsregistrierungsvorgänge

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

  • Identität erstellen
  • Update-Identität
  • Abrufen der Identität nach ID
  • Identität löschen
  • Auflisten von bis zu 1.000 Identitäten
  • Exportieren von Identitäten in Azure Blob Storage
  • Importieren von Identitäten aus Azure Blob Storage

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

Eine IoT Hub-Identitätsregistrierung 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

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

Verwenden Sie asynchrone Vorgänge für den Endpunkt des IoT Hub-Ressourcenanbieters, um einen Massenimport oder -export von Geräteidentitäten aus der Identitätsregistrierung eines IoT-Hubs durchzuführen. Importe und Exporte sind zeitintensive Aufträge, die einen vom Kunden bereitgestellten Blobcontainer verwenden.

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. Die IoT Hub-Instanz kann Werte für jedes Gerät speichern, 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, fügen Sie der IoT Hub-Identitätsregistrierung eine neue Geräte-ID und Schlüssel hinzu. Im Rahmen des Bereitstellungsprozesses müssen Sie unter Umständen gerätespezifische Daten in anderen Lösungsspeichern initialisieren. Sie können den Azure IoT Hub Device Provisioning-Dienst auch dazu verwenden, um eine Just-in-Time-Bereitstellung auf einem oder mehreren IoT-Hubs ohne Benutzereingriff (Zero Touch) zu ermöglichen. Weitere Informationen finden Sie in der Dokumentation zum Device Provisioning-Dienst.

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 von der IoT Hub-Instanz 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 Enabled oder Disabled sein. Sofern der Status Enabled lautet, kann das Gerät eine Verbindung herstellen. Wenn der Wert Disabled 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 Connected oder Disconnected. 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.

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. 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 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. Dieser Wert ist beispielsweise IoT Edge, wenn die Edge-Runtime dieses Modul besitzt.
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 Connected oder Disconnected. 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.

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: