Förstå identitetsregistret i din IoT-hubb
Varje IoT-hubb har ett identitetsregister som lagrar information om de enheter och moduler som tillåts ansluta till den IoT-hubben. Innan en enhet eller modul kan ansluta till en IoT-hubb måste det finnas en post för enheten eller modulen i IoT-hubbens identitetsregister. En enhet eller modul autentiserar med IoT-hubben baserat på autentiseringsuppgifter som lagras i identitetsregistret.
Enhets-ID:t eller modul-ID:t som lagras i identitetsregistret är skiftlägeskänsligt.
Identitetsregistret är en REST-kompatibel samling identitetsresurser. När du lägger till en post i identitetsregistret skapar IoT Hub en uppsättning resurser per enhet, till exempel kön som innehåller meddelanden från molnet till enheten under flygning.
Använd identitetsregistret för att:
- Etablera enheter eller moduler som ansluter till din IoT-hubb.
- Kontrollera åtkomsten per enhet/per modul till hubbens slutpunkter.
Identitetsregisteråtgärder
IoT Hub-identitetsregistret exponerar följande åtgärder:
- Skapa identitet
- Uppdatera identitet
- Hämta identitet efter ID
- Ta bort identitet
- Lista upp till 1 000 identiteter
- Exportera identiteter till Azure Blob Storage
- Importera identiteter från Azure Blob Storage
Alla dessa åtgärder kan använda optimistisk samtidighet enligt RFC7232.
Ett IoT Hub-identitetsregister innehåller inga programmetadata.
Viktigt!
Använd endast identitetsregistret för enhetshantering och etableringsåtgärder. Åtgärder med högt dataflöde vid körning bör inte vara beroende av att utföra åtgärder i identitetsregistret. Att till exempel kontrollera anslutningstillståndet för en enhet innan du skickar ett kommando är inte ett mönster som stöds. Kontrollera begränsningsfrekvensen för identitetsregistret.
Kommentar
Det kan ta några sekunder innan en enhets- eller modulidentitet är tillgänglig för hämtning när den har skapats. Försök att get
utföra enhets- eller modulidentiteter igen vid fel.
Inaktivera enheter
Du kan inaktivera enheter genom att uppdatera statusegenskapen för en identitet i identitetsregistret. Vanligtvis använder du den här egenskapen i två scenarier:
Under en etableringsorkestreringsprocess. Mer information finns i Enhetsetablering.
Om du tror att en enhet har komprometterats eller har blivit obehörig av någon anledning.
Viktigt!
IoT Hub kontrollerar inte listan över återkallade certifikat när enheter med certifikatbaserad autentisering autentiseras. Om du har en enhet som måste blockeras från att ansluta till IoT Hub på grund av ett potentiellt komprometterat certifikat bör du inaktivera enheten i identitetsregistret.
Den här funktionen är inte tillgänglig för moduler.
Mer information finns i Inaktivera eller ta bort en enhet i en IoT-hubb.
Importera och exportera enhetsidentiteter
Det enda sättet att hämta alla identiteter i en IoT-hubbs identitetsregister är att använda exportfunktionen.
Använd asynkrona åtgärder på IoT Hub-resursproviderns slutpunkt för att importera eller exportera enhetsidentiteter i bulk från en IoT-hubbs identitetsregister. Importer och exporter är långvariga jobb som använder en blobcontainer som levereras av kunden.
Mer information om API:er för import och export finns i REST-API:er för IoT Hub-resursprovider. Mer information om hur du kör import- och exportjobb finns i Masshantering av IoT Hub-enhetsidentiteter.
Enhetsidentiteter kan också exporteras och importeras från en IoT-hubb med hjälp av tjänst-API:et via rest-API:et eller någon av IoT Hub-tjänst-SDK:erna.
Enhetsetablering
De enhetsdata som en viss IoT-lösning lagrar beror på de specifika kraven för lösningen. Men som ett minimum måste en lösning lagra enhetsidentiteter och autentiseringsnycklar. IoT Hub-identitetsregistret kan lagra värden för varje enhet, till exempel ID:n, autentiseringsnycklar och statuskoder. En lösning kan använda andra Azure-tjänster, till exempel Table Storage, Blob Storage eller Azure Cosmos DB för att lagra andra enhetsdata.
Enhetsetablering är processen att lägga till initiala enhetsdata i butikerna i din lösning. Om du vill aktivera en ny enhet för att ansluta till din hubb lägger du till ett enhets-ID och nycklar till IoT Hub-identitetsregistret. Som en del av etableringsprocessen kan du behöva initiera enhetsspecifika data i andra lösningslager. Du kan också använda Azure IoT Hub Device Provisioning Service för att aktivera zero-touch- och just-in-time-etablering till en eller flera IoT-hubbar. Mer information finns i dokumentationen om Enhetsetableringstjänsten.
Meddelanden om enhets- och modullivscykel
IoT Hub kan meddela din IoT-lösning när en enhetsidentitet skapas eller tas bort genom att skicka livscykelmeddelanden. För att göra det måste din IoT-lösning skapa en väg och ange datakällan lika med DeviceLifecycleEvents. Som standard skickas inga livscykelmeddelanden, d.v.s. inga sådana vägar finns i förväg. Genom att skapa en väg med en datakälla som är lika med DeviceLifecycleEvents skickas livscykelhändelser för både enhetsidentiteter och modulidentiteter. Meddelandeinnehållet varierar beroende på om händelserna genereras för modulidentiteter eller enhetsidentiteter. Mer information om egenskaper och brödtext som returneras i meddelandemeddelandet finns i Händelsescheman som inte är telemetri.
Meddelanden för att skapa modulidentiteter skiljer sig åt för IoT Edge-moduler än för andra moduler. För IoT Edge-moduler skickas skapa-meddelandet endast om motsvarande IoT Edge-enhet körs. För alla andra moduler skickas livscykelmeddelanden när modulidentiteten uppdateras på IoT Hub-sidan.
Egenskaper för enhetsidentitet
Enhetsidentiteter representeras som JSON-dokument med följande egenskaper:
Property | Alternativ | Description |
---|---|---|
deviceId | nödvändiga, skrivskyddade uppdateringar | En skiftlägeskänslig sträng (upp till 128 tecken lång) med 7-bitars alfanumeriska ASCII-tecken plus vissa specialtecken: - . % _ * ? ! ( ) , : = @ $ ' . Specialtecken + # stöds inte. |
generationId | obligatoriskt, skrivskyddat | En IoT Hub-genererad, skiftlägeskänslig sträng upp till 128 tecken lång. Det här värdet används för att särskilja enheter med samma deviceId när de har tagits bort och återskapats. |
etag | obligatoriskt, skrivskyddat | En sträng som representerar en svag ETag för enhetsidentiteten enligt RFC7232. |
autentisering | valfri | Ett sammansatt objekt som innehåller autentiseringsinformation och säkerhetsmaterial. Mer information finns i autentiseringsmekanismen i REST API-dokumentationen. |
funktioner | valfri | Enhetens uppsättning funktioner. Till exempel om enheten är en gränsenhet eller inte. Mer information finns i Enhetsfunktioner i REST API-dokumentationen. |
deviceScope | valfri | Enhetens omfång. I edge-enheter genereras automatiskt och oföränderliga. Inaktuell i icke-edge-enheter. I underordnade (löv)-enheter anger du dock den här egenskapen till samma värde som egenskapen parentScopes (deviceScope för den överordnade enheten) för bakåtkompatibilitet med tidigare versioner av API:et. Mer information finns i IoT Edge som en gateway: Överordnade och underordnade relationer. |
parentScopes | valfri | Omfånget för en underordnad enhets direkta överordnade enhet (värdet för egenskapen deviceScope för den överordnade enheten). I gränsenheter är värdet tomt om enheten inte har någon överordnad. I icke-gränsenheter finns inte egenskapen om enheten inte har någon överordnad. Mer information finns i IoT Edge som en gateway: Överordnade och underordnade relationer. |
status | required | En åtkomstindikator. Det kan vara Enabled eller Disabled . Om Enabled tillåts enheten att ansluta. Om Disabled kan enheten inte komma åt någon enhetsuppkopplad slutpunkt. |
statusReason | valfri | En 128 tecken lång sträng som lagrar orsaken till enhetens identitetsstatus. Alla UTF-8 tecken tillåts. |
statusUpdateTime | skrivskyddad | En tidsindikator som visar datum och tid för den senaste statusuppdateringen. |
connectionState | skrivskyddad | Ett fält som anger anslutningsstatus: antingen Connected eller Disconnected . Det här fältet representerar IoT Hub-vyn för enhetens anslutningsstatus. Viktigt: Det här fältet bör endast användas i utvecklings-/felsökningssyfte. Anslutningstillståndet uppdateras endast för enheter som använder MQTT eller AMQP. Dessutom baseras den på ping på protokollnivå (MQTT-ping eller AMQP-ping) och kan ha en maximal fördröjning på bara 5 minuter. Av dessa skäl kan det finnas falska positiva identifieringar, till exempel frånkopplade enheter som rapporteras som anslutna. |
connectionStateUpdatedTime | skrivskyddad | En tidsindikator som visar datum och senaste gång anslutningstillståndet uppdaterades. |
lastActivityTime | skrivskyddad | En tidsindikator som visar datum och sista gången enheten anslöt, tog emot eller skickade ett meddelande. Den här egenskapen är så småningom konsekvent, men kan fördröjas upp till 5 till 10 minuter. Därför bör den inte användas i produktionsscenarier. |
Kommentar
Anslutningstillståndet kan bara representera IoT Hub-vyn för anslutningens status. Uppdateringar av det här tillståndet kan fördröjas, beroende på nätverksförhållanden och konfigurationer.
Egenskaper för modulidentitet
Modulidentiteter representeras som JSON-dokument med följande egenskaper:
Property | Alternativ | Description |
---|---|---|
deviceId | nödvändiga, skrivskyddade uppdateringar | En skiftlägeskänslig sträng (upp till 128 tecken lång) med 7-bitars alfanumeriska ASCII-tecken plus vissa specialtecken: - . % _ * ? ! ( ) , : = @ $ ' . |
moduleId | nödvändiga, skrivskyddade uppdateringar | En skiftlägeskänslig sträng (upp till 128 tecken lång) med 7-bitars alfanumeriska ASCII-tecken plus vissa specialtecken: - . % _ * ? ! ( ) , : = @ $ ' . Specialtecken + # stöds inte. |
generationId | obligatoriskt, skrivskyddat | En IoT Hub-genererad, skiftlägeskänslig sträng upp till 128 tecken lång. Det här värdet används för att särskilja enheter med samma deviceId när de har tagits bort och skapats på nytt. |
etag | obligatoriskt, skrivskyddat | En sträng som representerar en svag ETag för enhetsidentiteten enligt RFC7232. |
autentisering | valfri | Ett sammansatt objekt som innehåller autentiseringsinformation och säkerhetsmaterial. Mer information finns i autentiseringsmekanismen i REST API-dokumentationen. |
managedBy | valfri | Identifierar vem som hanterar den här modulen. Det här värdet är IoT Edge till exempel om edge-körningen äger den här modulen. |
cloudToDeviceMessageCount | skrivskyddad | Antalet moln-till-modul-meddelanden som för närvarande placeras i kö för att skickas till modulen. |
connectionState | skrivskyddad | Ett fält som anger anslutningsstatus: antingen Connected eller Disconnected . Det här fältet representerar IoT Hub-vyn för enhetens anslutningsstatus. Viktigt: Det här fältet bör endast användas i utvecklings-/felsökningssyfte. Anslutningstillståndet uppdateras endast för enheter som använder MQTT eller AMQP. Dessutom baseras den på ping på protokollnivå (MQTT-ping eller AMQP-ping) och kan ha en maximal fördröjning på bara 5 minuter. Av dessa skäl kan det finnas falska positiva identifieringar, till exempel frånkopplade enheter som rapporteras som anslutna. |
connectionStateUpdatedTime | skrivskyddad | En tidsindikator som visar datum och senaste gång anslutningstillståndet uppdaterades. |
lastActivityTime | skrivskyddad | En tidsindikator som visar datum och sista gången enheten anslöt, tog emot eller skickade ett meddelande. |
Relaterat innehåll
IoT Hub-slutpunkter beskriver de olika slutpunkter som varje IoT-hubb exponerar för körnings- och hanteringsåtgärder.
Azure IoT-enhets- och tjänst-SDK:er visar de olika språk-SDK:er som du kan använda när du utvecklar både enhets- och tjänstappar som interagerar med IoT Hub.
IoT Hub-frågespråket beskriver det frågespråk som du kan använda för att hämta information från IoT Hub om dina enhetstvillingar och jobb.
Använda enhetstvillingar för att synkronisera tillstånd och konfigurationer
Information om hur du använder IoT Hub Device Provisioning-tjänsten för att aktivera nolltouch- och just-in-time-etablering finns i: