Dela via


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 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 måste också autentiseras med IoT-hubben baserat på autentiseringsuppgifter som lagras i identitetsregistret.

Enhets- eller modul-ID:t som lagras i identitetsregistret är skiftlägeskänsligt.

På hög nivå är identitetsregistret en REST-kompatibel samling av enhets- eller modulidentitetsresurser. 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 när du behöver:

  • Etablera enheter eller moduler som ansluter till din IoT-hubb.
  • Kontrollera åtkomsten per enhet/per modul till hubbens enhets- eller moduluppkopplade slutpunkter.

Identitetsregisteråtgärder

IoT Hub-identitetsregistret exponerar följande åtgärder:

  • Skapa enhets- eller modulidentitet
  • Uppdatera enhets- eller modulidentitet
  • Hämta enhets- eller modulidentitet efter ID
  • Ta bort enhets- eller modulidentitet
  • Lista upp till 1 000 identiteter
  • Exportera enhetsidentiteter till Azure Blob Storage
  • Importera enhetsidentiteter från Azure Blob Storage

Alla dessa åtgärder kan använda optimistisk samtidighet enligt RFC7232.

Viktigt!

Det enda sättet att hämta alla identiteter i en IoT-hubbs identitetsregister är att använda exportfunktionen .

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

Använd asynkrona åtgärder på IoT Hub-resursproviderns slutpunkt för att exportera enhetsidentiteter massvis från en IoT-hubbs identitetsregister. Exporter är långvariga jobb som använder en blobcontainer från kunden för att spara enhetsidentitetsdata som lästs från identitetsregistret.

Använd asynkrona åtgärder på IoT Hub-resursproviderns slutpunkt för att importera enhetsidentiteter i grupp till en IoT-hubbs identitetsregister. Importer är långvariga jobb som använder data i en blobcontainer som tillhandahålls av kunden för att skriva enhetsidentitetsdata till identitetsregistret.

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. Azure IoT Hub innehåller ett identitetsregister som 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 måste du lägga 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 utan att kräva mänsklig inblandning. Mer information finns i dokumentationen för etableringstjä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 datakällan 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. Kan aktiveras eller inaktiveras. Om aktiverad tillåts enheten att ansluta. Om den här enheten är inaktiverad kan den 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 Ansluten eller Frånkopplad. 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.

Kommentar

Enhets-SDK:erna stöder för närvarande inte användning av + tecknen och # i deviceId.

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: - . + % _ # * ? ! ( ) , : = @ $ '.
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 till exempel "IoT Edge" 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 Ansluten eller Frånkopplad. 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.

Kommentar

Enhets-SDK:erna stöder för närvarande inte användning av + tecknen och # i deviceId och moduleId.

Ytterligare referensmaterial

Andra referensartiklar i utvecklarguiden för IoT Hub är:

  • IoT Hub-slutpunkter beskriver de olika slutpunkter som varje IoT-hubb exponerar för körnings- och hanteringsåtgärder.

  • Begränsning och kvoter beskriver de kvoter och begränsningsbeteenden som gäller för IoT Hub-tjänsten.

  • 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.

  • IoT Hub MQTT-stöd ger mer information om IoT Hub-stöd för MQTT-protokollet.

Nästa steg

Nu när du har lärt dig hur du använder IoT Hub-identitetsregistret kan du vara intresserad av följande artiklar i utvecklarguiden för IoT Hub:

Information om hur du använder IoT Hub Device Provisioning-tjänsten för att aktivera nolltouch- och just-in-time-etablering finns i: