Styra åtkomsten till IoT Hub med hjälp av Microsoft Entra-ID

Du kan använda Microsoft Entra-ID för att autentisera begäranden till Azure IoT Hub-tjänst-API:er, till exempel skapa enhetsidentitet och anropa direktmetod. Du kan också använda rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att auktorisera samma tjänst-API:er. Genom att använda dessa tekniker tillsammans kan du bevilja behörigheter för åtkomst till IoT Hub-tjänst-API:er till ett Microsoft Entra-säkerhetsobjekt. Det här säkerhetsobjektet kan vara en användare, en grupp eller ett huvudnamn för programtjänsten.

Att autentisera åtkomst med hjälp av Microsoft Entra-ID och kontrollera behörigheter med hjälp av Azure RBAC ger bättre säkerhet och användarvänlighet över säkerhetstoken. För att minimera potentiella säkerhetsproblem i säkerhetstoken rekommenderar vi att du tillämpar Microsoft Entra-autentisering när det är möjligt.

Kommentar

Autentisering med Microsoft Entra-ID stöds inte för IoT Hub-enhets-API :er (t.ex. meddelanden från enhet till moln och uppdatering av rapporterade egenskaper). Använd symmetriska nycklar eller X.509 för att autentisera enheter till IoT Hub.

Autentisering och auktorisering

Autentisering är en process för att bevisa att du är den du säger att du är. Autentisering verifierar identiteten för en användare eller enhet till IoT Hub. Det förkortas ibland till AuthN. Auktorisering är processen för att bekräfta behörigheter för en autentiserad användare eller enhet på IoT Hub. Den anger vilka resurser och kommandon du får åtkomst till och vad du kan göra med dessa resurser och kommandon. Auktorisering förkortas ibland till AuthZ.

När ett Microsoft Entra-säkerhetsobjekt begär åtkomst till ett IoT Hub-tjänst-API autentiseras huvudnamnets identitet först. För autentisering måste begäran innehålla en OAuth 2.0-åtkomsttoken vid körning. Resursnamnet för att begära token är https://iothubs.azure.net. Om programmet körs i en Azure-resurs som en virtuell Azure-dator, Azure Functions-app eller Azure App Service-app kan det representeras som en hanterad identitet.

När Microsoft Entra-huvudkontot har autentiserats är nästa steg auktorisering. I det här steget använder IoT Hub rolltilldelningstjänsten Microsoft Entra för att avgöra vilka behörigheter som huvudnamnet har. Om huvudkontots behörigheter matchar den begärda resursen eller API:et godkänner IoT Hub begäran. Det här steget kräver därför att en eller flera Azure-roller tilldelas till säkerhetsobjektet. IoT Hub innehåller några inbyggda roller som har vanliga behörighetsgrupper.

Hantera åtkomst till IoT Hub med hjälp av Rolltilldelning i Azure RBAC

Med Microsoft Entra ID och RBAC kräver IoT Hub att huvudnamnet begär att API:et har rätt behörighetsnivå för auktorisering. Ge huvudkontot behörighet genom att ge det en rolltilldelning.

För att säkerställa minsta möjliga behörighet tilldelar du alltid lämplig roll till lägsta möjliga resursomfång, vilket förmodligen är IoT Hub-omfånget.

IoT Hub tillhandahåller följande inbyggda Azure-roller för att auktorisera åtkomst till IoT Hub-tjänst-API:er med hjälp av Microsoft Entra ID och RBAC:

Roll beskrivning
IoT Hub-datadeltagare Ger fullständig åtkomst till IoT Hub-dataplansåtgärder.
IoT Hub-dataläsare Tillåter fullständig läsåtkomst till IoT Hub-dataplansegenskaper.
IoT Hub Registry-deltagare Ger fullständig åtkomst till IoT Hub-enhetsregistret.
IoT Hub Twin-deltagare Tillåter läs- och skrivåtkomst till alla IoT Hub-enhets- och modultvillingar.

Du kan också definiera anpassade roller som ska användas med IoT Hub genom att kombinera de behörigheter som du behöver. Mer information finns i Skapa anpassade roller för rollbaserad åtkomstkontroll i Azure.

Resursomfång

Innan du tilldelar en Azure RBAC-roll till ett säkerhetsobjekt ska du bestämma vilken omfattning av åtkomst som säkerhetsobjektet ska ha. Det är alltid bäst att endast bevilja minsta möjliga omfång. Azure RBAC-roller som definierats i ett bredare omfång ärvs av resurserna under dem.

I den här listan beskrivs de nivåer där du kan begränsa åtkomsten till IoT Hub, med början med det smalaste omfånget:

  • IoT-hubben. I det här omfånget gäller en rolltilldelning för IoT-hubben. Det finns inget mindre omfång än en enskild IoT-hubb. Rolltilldelning i mindre omfång, till exempel enskilda enhetsidentiteter eller tvillingavsnitt, stöds inte.
  • Resursgruppen. I det här omfånget gäller en rolltilldelning för alla IoT-hubbar i resursgruppen.
  • Prenumerationen. I det här omfånget gäller en rolltilldelning för alla IoT-hubbar i alla resursgrupper i prenumerationen.
  • En hanteringsgrupp. I det här omfånget gäller en rolltilldelning för alla IoT-hubbar i alla resursgrupper i alla prenumerationer i hanteringsgruppen.

Behörigheter för IoT Hub-tjänst-API:er

I följande tabell beskrivs de behörigheter som är tillgängliga för API-åtgärder för IoT Hub-tjänsten. Om du vill göra det möjligt för en klient att anropa en viss åtgärd kontrollerar du att klientens tilldelade RBAC-roll ger tillräcklig behörighet för åtgärden.

RBAC-åtgärd beskrivning
Microsoft.Devices/IotHubs/devices/read Läs valfri enhets- eller modulidentitet.
Microsoft.Devices/IotHubs/devices/write Skapa eller uppdatera valfri enhets- eller modulidentitet.
Microsoft.Devices/IotHubs/devices/delete Ta bort valfri enhets- eller modulidentitet.
Microsoft.Devices/IotHubs/twins/read Läs valfri enhet eller modultvilling.
Microsoft.Devices/IotHubs/twins/write Skriv valfri enhet eller modultvilling.
Microsoft.Devices/IotHubs/jobs/read Returnera en lista över jobb.
Microsoft.Devices/IotHubs/jobs/write Skapa eller uppdatera ett jobb.
Microsoft.Devices/IotHubs/jobs/delete Ta bort alla jobb.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/send/action Skicka ett meddelande från moln till enhet till valfri enhet.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/feedback/action Ta emot, slutföra eller överge ett meddelande om feedback från moln till enhet.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/queue/purge/action Ta bort alla väntande kommandon för en enhet.
Microsoft.Devices/IotHubs/directMethods/invoke/action Anropa en direktmetod på valfri enhet eller modul.
Microsoft.Devices/IotHubs/fileUpload/notifications/action Ta emot, slutföra eller överge meddelanden om filuppladdning.
Microsoft.Devices/IotHubs/statistics/read Läs enhets- och tjänststatistik.
Microsoft.Devices/IotHubs/configurations/read Läs enhetshanteringskonfigurationer.
Microsoft.Devices/IotHubs/configurations/write Skapa eller uppdatera enhetshanteringskonfigurationer.
Microsoft.Devices/IotHubs/configurations/delete Ta bort alla enhetshanteringskonfigurationer.
Microsoft.Devices/IotHubs/configurations/applyToEdgeDevice/action Tillämpa konfigurationsinnehållet på en gränsenhet.
Microsoft.Devices/IotHubs/configurations/testQueries/action Verifiera målvillkoret och anpassade måttfrågor för en konfiguration.

Dricks

Kommentar

Om du vill hämta data från IoT Hub med hjälp av Microsoft Entra-ID konfigurerar du routning till en anpassad Event Hubs-slutpunkt. Om du vill komma åt den inbyggda Event Hubs-kompatibla slutpunkten använder du metoden anslutningssträng (delad åtkomstnyckel) som tidigare.

Framtvinga Microsoft Entra-autentisering

Som standard stöder IoT Hub tjänst-API-åtkomst via både Microsoft Entra-ID och principer för delad åtkomst och säkerhetstoken. För att minimera potentiella säkerhetsrisker i säkerhetstoken kan du inaktivera åtkomst med principer för delad åtkomst.

Varning

Genom att neka anslutningar med principer för delad åtkomst förlorar alla användare och tjänster som ansluter med den här metoden åtkomst omedelbart. Eftersom Device Provisioning Service (DPS) endast stöder länkning av IoT-hubbar med principer för delad åtkomst misslyckas alla enhetsetableringsflöden med "obehöriga" fel. Fortsätt noggrant och planera att ersätta åtkomsten med rollbaserad åtkomst från Microsoft Entra. Fortsätt inte om du använder DPS.

  1. Se till att dina tjänstklienter och användare har tillräcklig åtkomst till din IoT-hubb. Följ principen om lägsta behörighet.
  2. Gå till din IoT-hubb i Azure-portalen.
  3. I den vänstra rutan väljer du Principer för delad åtkomst.
  4. Under Anslut med principer för delad åtkomst väljer du Neka och granskar varningen. Screenshot that shows how to turn off IoT Hub shared access policies.

Dina IoT Hub-tjänst-API:er kan nu endast nås via Microsoft Entra ID och RBAC.

Microsoft Entra-ID-åtkomst från Azure-portalen

Du kan ge åtkomst till IoT Hub från Azure-portalen med antingen principer för delad åtkomst eller Microsoft Entra-behörigheter.

När du försöker komma åt IoT Hub från Azure-portalen kontrollerar Azure-portalen först om du har tilldelats en Azure-roll med Microsoft.Devices/iotHubs/listkeys/action. Om du har det använder Azure-portalen nycklarna från principer för delad åtkomst för att få åtkomst till IoT Hub. Annars försöker Azure-portalen komma åt data med hjälp av ditt Microsoft Entra-konto.

För att få åtkomst till IoT Hub från Azure-portalen med hjälp av ditt Microsoft Entra-konto behöver du behörighet för att få åtkomst till IoT Hub-dataresurser (till exempel enheter och tvillingar). Du behöver också behörigheter för att gå till IoT Hub-resursen i Azure-portalen. De inbyggda rollerna som tillhandahålls av IoT Hub ger åtkomst till resurser som enheter och tvilling, men de ger inte åtkomst till IoT Hub-resursen. Åtkomst till portalen kräver därför även tilldelning av en Azure Resource Manager-roll som Läsare. Läsarrollen är ett bra val eftersom det är den mest begränsade rollen som gör att du kan navigera i portalen. Den innehåller inte behörigheten Microsoft.Devices/iotHubs/listkeys/action (som ger åtkomst till alla IoT Hub-dataresurser via principer för delad åtkomst).

Om du vill säkerställa att ett konto inte har åtkomst utanför de tilldelade behörigheterna ska du inte ta med behörigheten Microsoft.Devices/iotHubs/listkeys/action när du skapar en anpassad roll. Om du till exempel vill skapa en anpassad roll som kan läsa enhetsidentiteter men inte kan skapa eller ta bort enheter skapar du en anpassad roll som:

  • Har dataåtgärden Microsoft.Devices/IotHubs/devices/read .
  • Har inte dataåtgärden Microsoft.Devices/IotHubs/devices/write .
  • Har inte dataåtgärden Microsoft.Devices/IotHubs/devices/delete .
  • Har inte åtgärden Microsoft.Devices/iotHubs/listkeys/action .

Kontrollera sedan att kontot inte har några andra roller som har behörigheten Microsoft.Devices/iotHubs/listkeys/action , till exempel Ägare eller Deltagare. Om du vill tillåta att kontot har resursåtkomst och navigerar i portalen tilldelar du Läsare.

Microsoft Entra ID-åtkomst från Azure CLI

De flesta kommandon mot IoT Hub stöder Microsoft Entra-autentisering. Du kan styra vilken typ av autentisering som används för att köra kommandon med hjälp av parametern --auth-type som accepterar key eller login värden. Värdet key är standardvärdet.

  • När --auth-type har värdet key , som tidigare, identifierar CLI automatiskt en lämplig princip när den interagerar med IoT Hub.

  • När --auth-type har värdet login används en åtkomsttoken från Azure CLI som loggats i huvudkontot för åtgärden.

Mer information finns på versionssidan för Azure IoT-tillägget för Azure CLI.

SDK-exempel

Nästa steg

Använd device provisioning-tjänsten för att etablera flera X.509-enheter med hjälp av registreringsgrupper.