Omówienie rejestru tożsamości w centrum IoT
Każde centrum IoT ma rejestr tożsamości, który przechowuje informacje o urządzeniach i modułach, które mogą łączyć się z tym centrum IoT. Aby urządzenie lub moduł mógł nawiązać połączenie z centrum IoT Hub, musi istnieć wpis dla tego urządzenia lub modułu w rejestrze tożsamości centrum IoT. Urządzenie lub moduł uwierzytelnia się w centrum IoT na podstawie poświadczeń przechowywanych w rejestrze tożsamości.
Identyfikator urządzenia lub identyfikator modułu przechowywany w rejestrze tożsamości uwzględnia wielkość liter.
Rejestr tożsamości jest kolekcją zasobów tożsamości obsługujących architekturę REST. Po dodaniu wpisu w rejestrze tożsamości usługa IoT Hub tworzy zestaw zasobów dla poszczególnych urządzeń, takich jak kolejka zawierająca komunikaty z chmury do urządzenia w locie.
Użyj rejestru tożsamości, aby:
- Aprowizuj urządzenia lub moduły łączące się z centrum IoT Hub.
- Kontrolowanie dostępu poszczególnych urządzeń/modułów do punktów końcowych centrum.
Operacje rejestru tożsamości
Rejestr tożsamości usługi IoT Hub uwidacznia następujące operacje:
- Tworzenie tożsamości
- Aktualizowanie tożsamości
- Pobieranie tożsamości według identyfikatora
- Usuwanie tożsamości
- Wyświetlanie listy do 1000 tożsamości
- Eksportowanie tożsamości do usługi Azure Blob Storage
- Importowanie tożsamości z usługi Azure Blob Storage
Wszystkie te operacje mogą używać optymistycznej współbieżności, jak określono w RFC7232.
Rejestr tożsamości usługi IoT Hub nie zawiera żadnych metadanych aplikacji.
Ważne
Rejestru tożsamości należy używać tylko do zarządzania urządzeniami i aprowizacji operacji. Operacje o wysokiej przepływności w czasie wykonywania nie powinny zależeć od wykonywania operacji w rejestrze tożsamości. Na przykład sprawdzenie stanu połączenia urządzenia przed wysłaniem polecenia nie jest obsługiwanym wzorcem. Upewnij się, że sprawdzanie szybkości ograniczania dla rejestru tożsamości.
Uwaga
Pobranie tożsamości urządzenia lub modułu może potrwać kilka sekund. Spróbuj ponownie wykonać get
operację tożsamości urządzenia lub modułu w przypadku awarii.
Wyłączanie urządzeń
Urządzenia można wyłączyć, aktualizując właściwość stanu tożsamości w rejestrze tożsamości. Zazwyczaj ta właściwość jest używana w dwóch scenariuszach:
Podczas procesu aranżacji aprowizacji. Aby uzyskać więcej informacji, zobacz Device Provisioning (Aprowizowanie urządzeń).
Jeśli uważasz, że urządzenie zostało naruszone lub nieautoryzowane z jakiegokolwiek powodu.
Ważne
Usługa IoT Hub nie sprawdza list odwołania certyfikatów podczas uwierzytelniania urządzeń przy użyciu uwierzytelniania opartego na certyfikatach. Jeśli masz urządzenie, które musi zostać zablokowane z połączeniem z usługą IoT Hub z powodu potencjalnie naruszonego certyfikatu, należy wyłączyć urządzenie w rejestrze tożsamości.
Ta funkcja nie jest dostępna dla modułów.
Aby uzyskać więcej informacji, zobacz Wyłączanie lub usuwanie urządzenia w centrum IoT.
Importowanie i eksportowanie tożsamości urządzeń
Jedynym sposobem pobrania wszystkich tożsamości w rejestrze tożsamości centrum IoT jest użycie funkcji eksportowania.
Użyj operacji asynchronicznych w punkcie końcowym dostawcy zasobów usługi IoT Hub, aby zaimportować lub wyeksportować tożsamości urządzeń zbiorczo z rejestru tożsamości centrum IoT Hub. Importy i eksporty to długotrwałe zadania, które używają kontenera obiektów blob dostarczonych przez klienta.
Aby uzyskać więcej informacji na temat interfejsów API importowania i eksportowania, zobacz Interfejsy API REST dostawcy zasobów usługi IoT Hub. Aby dowiedzieć się więcej na temat uruchamiania zadań importowania i eksportowania, zobacz Zbiorcze zarządzanie tożsamościami urządzeń usługi IoT Hub.
Tożsamości urządzeń można również eksportować i importować z centrum IoT Hub przy użyciu interfejsu API usługi za pośrednictwem interfejsu API REST lub jednego z zestawów SDK usługi IoT Hub.
Aprowizowanie urządzeń
Dane urządzenia, które są przechowywane w danym rozwiązaniu IoT, zależą od konkretnych wymagań tego rozwiązania. Jednak co najmniej rozwiązanie musi przechowywać tożsamości urządzeń i klucze uwierzytelniania. Rejestr tożsamości usługi IoT Hub może przechowywać wartości dla każdego urządzenia, takiego jak identyfikatory, klucze uwierzytelniania i kody stanu. Rozwiązanie może używać innych usług platformy Azure, takich jak Table Storage, Blob Storage lub Azure Cosmos DB do przechowywania innych danych urządzenia.
Aprowizowanie urządzeń to proces dodawania początkowych danych urządzenia do magazynów w rozwiązaniu. Aby umożliwić nowemu urządzeniu łączenie się z centrum, należy dodać identyfikator urządzenia i klucze do rejestru tożsamości usługi IoT Hub. W ramach procesu aprowizacji może być konieczne zainicjowanie danych specyficznych dla urządzenia w innych magazynach rozwiązań. Możesz również użyć usługi Azure IoT Hub Device Provisioning, aby umożliwić bezobsługową aprowizację just in time w co najmniej jednym centrum IoT. Aby dowiedzieć się więcej, zobacz dokumentację usługi Device Provisioning Service.
Powiadomienia dotyczące cyklu życia urządzenia i modułu
Usługa IoT Hub może powiadamiać rozwiązanie IoT po utworzeniu lub usunięciu tożsamości urządzenia, wysyłając powiadomienia dotyczące cyklu życia. Aby to zrobić, rozwiązanie IoT musi utworzyć trasę i ustawić źródło danych równe DeviceLifecycleEvents. Domyślnie nie są wysyłane żadne powiadomienia o cyklu życia, czyli nie istnieją żadne takie trasy. Tworząc trasę ze źródłem danych równym DeviceLifecycleEvents, zdarzenia cyklu życia są wysyłane zarówno dla tożsamości urządzeń, jak i tożsamości modułów. Zawartość komunikatu różni się w zależności od tego, czy zdarzenia są generowane dla tożsamości modułu, czy tożsamości urządzeń. Aby dowiedzieć się więcej o właściwościach i treści zwracanych w komunikacie powiadomienia, zobacz Schematy zdarzeń nie telemetrii.
Powiadomienia dotyczące tworzenia tożsamości modułu różnią się w przypadku modułów usługi IoT Edge niż w przypadku innych modułów. W przypadku modułów usługi IoT Edge powiadomienie tworzenia jest wysyłane tylko wtedy, gdy odpowiednie urządzenie usługi IoT Edge jest uruchomione. W przypadku wszystkich innych modułów powiadomienia o cyklu życia są wysyłane za każdym razem, gdy tożsamość modułu zostanie zaktualizowana po stronie usługi IoT Hub.
Właściwości tożsamości urządzenia
Tożsamości urządzeń są reprezentowane jako dokumenty JSON z następującymi właściwościami:
Właściwości | Opcje | opis |
---|---|---|
deviceId | wymagane, tylko do odczytu dotyczące aktualizacji | Ciąg uwzględniający wielkość liter (maksymalnie 128 znaków) znaków alfanumerycznych ASCII 7-bitowych oraz niektóre znaki specjalne: - . % _ * ? ! ( ) , : = @ $ ' . Znaki + # specjalne nie są obsługiwane. |
generationId | wymagane, tylko do odczytu | Wygenerowany ciąg z uwzględnieniem wielkości liter w usłudze IoT Hub o długości do 128 znaków. Ta wartość służy do rozróżniania urządzeń o tym samym identyfikatorze deviceId, gdy zostały usunięte i utworzone ponownie. |
etag | wymagane, tylko do odczytu | Ciąg reprezentujący słaby element ETag dla tożsamości urządzenia zgodnie z RFC7232. |
uwierzytelnianie | optional | Obiekt złożony zawierający informacje o uwierzytelnianiu i materiały zabezpieczające. Aby uzyskać więcej informacji, zobacz Mechanizm uwierzytelniania w dokumentacji interfejsu API REST. |
możliwości | optional | Zestaw możliwości urządzenia. Na przykład niezależnie od tego, czy urządzenie jest urządzeniem brzegowym, czy nie. Aby uzyskać więcej informacji, zobacz Możliwości urządzeń w dokumentacji interfejsu API REST. |
deviceScope | optional | Zakres urządzenia. Na urządzeniach brzegowych generowane automatycznie i niezmienne. Przestarzałe w urządzeniach innych niż brzegowe. Jednak w urządzeniach podrzędnych (liścia) ustaw tę właściwość na taką samą wartość jak właściwość parentScopes ( deviceScope urządzenia nadrzędnego) w celu zapewnienia zgodności z poprzednimi wersjami interfejsu API. Aby uzyskać więcej informacji, zobacz Usługa IoT Edge jako brama: relacje nadrzędne i podrzędne. |
parentScopes | optional | Zakres bezpośredniego elementu nadrzędnego urządzenia podrzędnego (wartość właściwości deviceScope urządzenia nadrzędnego). Na urządzeniach brzegowych wartość jest pusta, jeśli urządzenie nie ma elementu nadrzędnego. Na urządzeniach innych niż brzegowe właściwość nie jest obecna, jeśli urządzenie nie ma elementu nadrzędnego. Aby uzyskać więcej informacji, zobacz Usługa IoT Edge jako brama: relacje nadrzędne i podrzędne. |
status | wymagane | Wskaźnik dostępu. Możliwe wartości to Enabled i Disabled . Jeśli Enabled urządzenie może nawiązać połączenie. Jeśli Disabled urządzenie nie może uzyskać dostępu do żadnego punktu końcowego dostępnego na urządzeniu. |
statusReason | optional | 128-znakowy ciąg, który przechowuje przyczynę stanu tożsamości urządzenia. Dozwolone są wszystkie znaki UTF-8. |
statusUpdateTime | tylko do odczytu | Wskaźnik czasowy przedstawiający datę i godzinę ostatniej aktualizacji stanu. |
connectionState | tylko do odczytu | Pole wskazujące stan połączenia: Connected lub Disconnected . To pole reprezentuje widok usługi IoT Hub stanu połączenia urządzenia. Ważne: to pole powinno być używane tylko w celach programistycznych/debugowania. Stan połączenia jest aktualizowany tylko dla urządzeń korzystających z protokołu MQTT lub AMQP. Ponadto jest on oparty na poleceniach ping na poziomie protokołu (pingi MQTT lub pingi AMQP) i może mieć maksymalne opóźnienie tylko 5 minut. Z tych powodów mogą występować wyniki fałszywie dodatnie, takie jak urządzenia rozłączone zgłoszone jako połączone. |
connectionStateUpdatedTime | tylko do odczytu | Wskaźnik czasowy pokazujący datę i godzinę ostatniej aktualizacji stanu połączenia. |
lastActivityTime | tylko do odczytu | Wskaźnik czasowy pokazujący datę i godzinę ostatniego połączenia, odebrania lub wysłania komunikatu. Ta właściwość jest ostatecznie spójna, ale może być opóźniona do 5 do 10 minut. Z tego powodu nie należy jej używać w scenariuszach produkcyjnych. |
Uwaga
Stan połączenia może reprezentować tylko widok usługi IoT Hub stanu połączenia. Aktualizacje tego stanu mogą być opóźnione w zależności od warunków sieciowych i konfiguracji.
Właściwości tożsamości modułu
Tożsamości modułów są reprezentowane jako dokumenty JSON z następującymi właściwościami:
Właściwości | Opcje | opis |
---|---|---|
deviceId | wymagane, tylko do odczytu dotyczące aktualizacji | Ciąg uwzględniający wielkość liter (maksymalnie 128 znaków) znaków alfanumerycznych ASCII 7-bitowych oraz niektóre znaki specjalne: - . % _ * ? ! ( ) , : = @ $ ' . |
moduleId | wymagane, tylko do odczytu dotyczące aktualizacji | Ciąg uwzględniający wielkość liter (maksymalnie 128 znaków) znaków alfanumerycznych ASCII 7-bitowych oraz niektóre znaki specjalne: - . % _ * ? ! ( ) , : = @ $ ' . Znaki + # specjalne nie są obsługiwane. |
generationId | wymagane, tylko do odczytu | Wygenerowany przez centrum IoT ciąg z uwzględnieniem wielkości liter do 128 znaków. Ta wartość służy do rozróżniania urządzeń przy użyciu tego samego identyfikatora deviceId, gdy zostały usunięte i ponownie utworzone. |
etag | wymagane, tylko do odczytu | Ciąg reprezentujący słaby element ETag dla tożsamości urządzenia zgodnie z RFC7232. |
uwierzytelnianie | optional | Obiekt złożony zawierający informacje o uwierzytelnianiu i materiały zabezpieczające. Aby uzyskać więcej informacji, zobacz Mechanizm uwierzytelniania w dokumentacji interfejsu API REST. |
managedBy | optional | Określa, kto zarządza tym modułem. Na przykład ta wartość jest IoT Edge taka, jeśli środowisko uruchomieniowe brzegowe jest właścicielem tego modułu. |
cloudToDeviceMessageCount | tylko do odczytu | Liczba komunikatów z chmury do modułu, które mają być obecnie wysyłane do modułu. |
connectionState | tylko do odczytu | Pole wskazujące stan połączenia: Connected lub Disconnected . To pole reprezentuje widok usługi IoT Hub stanu połączenia urządzenia. Ważne: to pole powinno być używane tylko w celach programistycznych/debugowania. Stan połączenia jest aktualizowany tylko dla urządzeń korzystających z protokołu MQTT lub AMQP. Ponadto jest on oparty na poleceniach ping na poziomie protokołu (pingi MQTT lub pingi AMQP) i może mieć maksymalne opóźnienie tylko 5 minut. Z tych powodów mogą występować wyniki fałszywie dodatnie, takie jak urządzenia rozłączone zgłoszone jako połączone. |
connectionStateUpdatedTime | tylko do odczytu | Wskaźnik czasowy pokazujący datę i godzinę ostatniej aktualizacji stanu połączenia. |
lastActivityTime | tylko do odczytu | Wskaźnik czasowy pokazujący datę i godzinę ostatniego połączenia, odebrania lub wysłania komunikatu. |
Powiązana zawartość
Punkty końcowe usługi IoT Hub opisują różne punkty końcowe udostępniane przez każde centrum IoT na potrzeby operacji w czasie wykonywania i zarządzania.
Zestawy SDK urządzeń i usług azure IoT zawiera listę różnych zestawów SDK języka, których można używać podczas tworzenia aplikacji urządzeń i usług, które współdziałają z usługą IoT Hub.
Język zapytań usługi IoT Hub opisuje język zapytań, którego można użyć do pobierania informacji z usługi IoT Hub na temat bliźniaczych reprezentacji urządzeń i zadań.
Synchronizowanie stanu i konfiguracji za pomocą bliźniaczych reprezentacji urządzeń
Aby zapoznać się z używaniem usługi IoT Hub Device Provisioning w celu włączenia bezobsługowej aprowizacji just in time, zobacz: