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 det huvudnamn som begär API:et har rätt behörighetsnivå för auktorisering. Ge huvudkontot behörighet genom att ge det en rolltilldelning.
- Om huvudnamnet är en användare, grupp eller programtjänsthuvudnamn följer du riktlinjerna i Tilldela Azure-roller med hjälp av Azure-portalen.
- Om huvudkontot är en hanterad identitet följer du anvisningarna i Tilldela en hanterad identitet åtkomst till en resurs.
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-hubb-datadeltagare | Ger fullständig åtkomst till IoT-hubb-dataplansåtgärder. |
IoT-hubb-dataläsare | Tillåter fullständig läsåtkomst till IoT-hubb-dataplansegenskaper. |
IoT-hubb-registerdeltagare | Ger fullständig åtkomst till IoT-hubb-enhetsregistret. |
IoT Hub-tvilling-deltagare | Tillåter läs- och skrivåtkomst till alla IoT-hubb-enheter 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, 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
- Massregistreringsuppdateringen kräver både
Microsoft.Devices/IotHubs/devices/write
ochMicrosoft.Devices/IotHubs/devices/delete
. - Twin Query-åtgärden kräver
Microsoft.Devices/IotHubs/twins/read
. - Hämta Digital Twin kräver
Microsoft.Devices/IotHubs/twins/read
. Uppdatera Digital Twin kräverMicrosoft.Devices/IotHubs/twins/write
. - Både Anropa komponentkommandot och anropa rotnivåkommandot kräver
Microsoft.Devices/IotHubs/directMethods/invoke/action
.
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 niska veze (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 Device Provisioning Service.
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.
Gå till din IoT-hubb i Azure-portalen.
I den vänstra rutan väljer du Principer för delad åtkomst.
Under Anslut med principer för delad åtkomst väljer du Neka och granskar varningen.
Välj Spara.
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-hubb. 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-hubb ger åtkomst till resurser som enheter och tvilling, men de ger inte åtkomst till IoT-hubbresursen. Å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ärdetkey
, som tidigare, identifierar CLI automatiskt en lämplig princip när den interagerar med IoT Hub.När
--auth-type
har värdetlogin
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
- Mer information om fördelarna med att använda Microsoft Entra-ID i ditt program finns i Integrera med Microsoft platforma za identitete.
- Information om hur åtkomsttoken, uppdateringstoken och ID-token används i auktorisering och autentisering finns i Säkerhetstoken.