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 med 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 modulinriktade slutpunkter.

Identitetsregisteråtgärder

Det 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 vad som anges i RFC7232.

Viktigt

Det enda sättet att hämta alla identiteter i IoT-hubbens 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. Det finns till exempel inte stöd för att kontrollera anslutningstillståndet för en enhet innan du skickar ett kommando. Kontrollera begränsningsfrekvensen för identitetsregistret.

Anteckning

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 använda 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 listor ö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 i grupp från en IoT Hubs 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 massimportera enhetsidentiteter 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 IoT Hub REST-API:er för resursprovidern. 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

Vilka enhetsdata som en viss IoT-lösning lagrar beror på lösningens specifika krav. 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 att en ny enhet ska kunna ansluta till din hubb måste du lägga till ett enhets-ID och nycklar i IoT Hub identitetsregister. 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, just-in-time-etablering till en eller flera IoT-hubbar utan 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 att datakällan är lika med DeviceLifecycleEvents. Som standard skickas inga livscykelmeddelanden, d.v.s. inga sådana vägar finns redan. Genom att skapa en väg med datakällan lika med DeviceLifecycleEvents skickas livscykelhändelser för både enhetsidentiteter och modulidentiteter. Innehållet i meddelandet varierar dock beroende på om händelserna genereras för modulidentiteter eller enhetsidentiteter. Det bör noteras att för IoT Edge moduler är flödet för att skapa modulidentitet annorlunda än för andra moduler. Därför skickas skapa-meddelandet endast för IoT Edge moduler om motsvarande IoT Edge-enhet för den uppdaterade IoT Edge modulidentiteten körs. För alla andra moduler skickas livscykelmeddelanden när modulidentiteten uppdateras på IoT Hub sidan. Mer information om egenskaperna och brödtexten som returneras i aviseringsmeddelandet finns i Icke-telemetri händelsescheman.

Egenskaper för enhetsidentitet

Enhetsidentiteter representeras som JSON-dokument med följande egenskaper:

Egenskap 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: - . % _ * ? ! ( ) , : = @ $ '. Specialtecknen: + # stöds inte.
generationId obligatoriskt, skrivskyddat En IoT-hubbgenererad, 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 Autentiseringsmekanism i REST API-dokumentationen.
funktioner valfri Uppsättningen funktioner för enheten. 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 gränsenheter genereras automatiskt och oföränderligt. Inaktuell i icke-gränsenheter. 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 krävs 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 sträng på 128 tecken som lagrar orsaken till enhetens identitetsstatus. Alla UTF-8 tecken tillåts.
statusUpdateTime skrivskyddad En temporal indikator som visar datum och tid för den senaste statusuppdateringen.
connectionState skrivskyddad Ett fält som anger anslutningsstatus : Ansluten ellerFrånkopplad. Det här fältet representerar IoT Hub vy över 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-pingar eller AMQP-pingar) 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 temporal indikator som visar datum och senaste gång anslutningstillståndet uppdaterades.
lastActivityTime skrivskyddad En temporal indikator som visar datum och senaste 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.

Anteckning

Anslutningstillståndet kan bara representera IoT Hub vy över anslutningens status. Uppdateringar till det här tillståndet kan fördröjas, beroende på nätverksförhållanden och konfigurationer.

Anteckning

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:

Egenskap 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-hubbgenererad, 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 Autentiseringsmekanism 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 : Ansluten ellerFrånkopplad. Det här fältet representerar IoT Hub vy över 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-pingar eller AMQP-pingar) 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 temporal indikator som visar datum och senaste gång anslutningstillståndet uppdaterades.
lastActivityTime skrivskyddad En temporal indikator som visar datum och senaste gången enheten anslöt, tog emot eller skickade ett meddelande.

Anteckning

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

Ytterligare referensmaterial

Andra referensartiklar i IoT Hub utvecklarguiden är:

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

  • Begränsningar 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åk 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 innehåller 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 kanske du är intresserad av följande artiklar i IoT Hub utvecklarguide:

Information om hur du använder IoT Hub Device Provisioning Service för att aktivera zero-touch, just-in-time-etablering finns i: