Toegang tot IoT Hub beheren met behulp van Microsoft Entra-id

U kunt De Microsoft Entra-id gebruiken om aanvragen te verifiëren bij Azure IoT Hub-service-API's, zoals apparaatidentiteit maken en directe methode aanroepen. U kunt ook op rollen gebaseerd toegangsbeheer van Azure (Azure RBAC) gebruiken om dezelfde service-API's te autoriseren. Door deze technologieën samen te gebruiken, kunt u machtigingen verlenen voor toegang tot IoT Hub-service-API's naar een Microsoft Entra-beveiligingsprincipaal. Deze beveiligingsprincipaal kan een gebruiker, groep of toepassingsservice-principal zijn.

Het verifiëren van toegang met behulp van Microsoft Entra ID en het beheren van machtigingen met behulp van Azure RBAC biedt verbeterde beveiliging en gebruiksgemak ten opzichte van beveiligingstokens. Om mogelijke beveiligingsproblemen die inherent zijn aan beveiligingstokens te minimaliseren, raden we u aan om waar mogelijk Microsoft Entra-verificatie af te dwingen.

Notitie

Verificatie met Microsoft Entra-id wordt niet ondersteund voor de IoT Hub-apparaat-API's (zoals apparaat-naar-cloud-berichten en gerapporteerde eigenschappen bijwerken). Gebruik symmetrische sleutels of X.509 om apparaten te verifiëren bij IoT Hub.

Verificatie en autorisatie

Verificatie is het proces om aan te tonen dat u bent wie u zegt dat u bent. Verificatie controleert de identiteit van een gebruiker of apparaat naar IoT Hub. Het wordt soms ingekort tot AuthN. Autorisatie is het proces van het bevestigen van machtigingen voor een geverifieerde gebruiker of apparaat in IoT Hub. Hiermee geeft u op welke resources en opdrachten u toegang hebt en wat u kunt doen met deze resources en opdrachten. Autorisatie wordt soms ingekort tot AuthZ.

Wanneer een Microsoft Entra-beveiligingsprincipaal toegang vraagt tot een IoT Hub-service-API, wordt de identiteit van de principal eerst geverifieerd. Voor verificatie moet de aanvraag een OAuth 2.0-toegangstoken bevatten tijdens runtime. De resourcenaam voor het aanvragen van het token is https://iothubs.azure.net. Als de toepassing wordt uitgevoerd in een Azure-resource zoals een Azure-VM, Azure Functions-app of Azure-app Service-app, kan deze worden weergegeven als een beheerde identiteit.

Nadat de Microsoft Entra-principal is geverifieerd, is de volgende stap autorisatie. In deze stap gebruikt IoT Hub de roltoewijzingsservice van Microsoft Entra om te bepalen welke machtigingen de principal heeft. Als de machtigingen van de principal overeenkomen met de aangevraagde resource of API, autoriseert IoT Hub de aanvraag. Voor deze stap moeten dus een of meer Azure-rollen worden toegewezen aan de beveiligingsprincipaal. IoT Hub biedt een aantal ingebouwde rollen met algemene groepen machtigingen.

Toegang tot IoT Hub beheren met behulp van Azure RBAC-roltoewijzing

Met Microsoft Entra ID en RBAC vereist IoT Hub dat de principal die de API aanvraagt, over het juiste machtigingsniveau voor autorisatie beschikt. Als u de principal de machtiging wilt geven, geeft u deze een roltoewijzing.

Wijs altijd de juiste rol toe aan het laagst mogelijke resourcebereik, wat waarschijnlijk het IoT Hub-bereik is om minimale bevoegdheden te garanderen.

IoT Hub biedt de volgende ingebouwde Azure-rollen voor het autoriseren van toegang tot IoT Hub-service-API's met behulp van Microsoft Entra ID en RBAC:

Rol Beschrijving
Inzender voor IoT Hub-gegevens Biedt volledige toegang tot ioT Hub-gegevensvlakbewerkingen.
IoT Hub-gegevenslezer Hiermee heeft u volledige leestoegang tot de eigenschappen van het IoT Hub-gegevensvlak.
Inzender voor IoT Hub-register Hiermee heeft u volledige toegang tot het IoT Hub-apparaatregister.
Inzender voor IoT Hub Twin Hiermee staat u lees- en schrijftoegang toe tot alle IoT Hub-apparaten en moduledubbels.

U kunt ook aangepaste rollen definiëren voor gebruik met IoT Hub door de benodigde machtigingen te combineren. Zie Aangepaste rollen maken voor op rollen gebaseerd toegangsbeheer van Azure voor meer informatie.

Resourcebereik

Voordat u een Azure RBAC-rol toewijst aan een beveiligingsprincipaal, bepaalt u het toegangsbereik dat de beveiligingsprincipaal moet hebben. Het is altijd het beste om alleen het smalst mogelijke bereik te verlenen. Azure RBAC-rollen die zijn gedefinieerd in een breder bereik, worden overgenomen door de onderliggende resources.

In deze lijst worden de niveaus beschreven waarop u toegang tot IoT Hub kunt bereiken, te beginnen met het smalste bereik:

  • De IoT-hub. In dit bereik is een roltoewijzing van toepassing op de IoT-hub. Er is geen bereik kleiner dan een afzonderlijke IoT-hub. Roltoewijzing in kleinere bereiken, zoals afzonderlijke apparaatidentiteit of dubbelsectie, wordt niet ondersteund.
  • De resourcegroep. In dit bereik is een roltoewijzing van toepassing op alle IoT-hubs in de resourcegroep.
  • Het abonnement. In dit bereik is een roltoewijzing van toepassing op alle IoT-hubs in alle resourcegroepen in het abonnement.
  • Een beheergroep. In dit bereik is een roltoewijzing van toepassing op alle IoT-hubs in alle resourcegroepen in alle abonnementen in de beheergroep.

Machtigingen voor IoT Hub-service-API's

In de volgende tabel worden de machtigingen beschreven die beschikbaar zijn voor API-bewerkingen voor IoT Hub-services. Als u wilt dat een client een bepaalde bewerking aanroept, moet u ervoor zorgen dat de toegewezen RBAC-rol van de client voldoende machtigingen biedt voor de bewerking.

RBAC-actie Beschrijving
Microsoft.Devices/IotHubs/devices/read Lees een apparaat- of module-id.
Microsoft.Devices/IotHubs/devices/write Een apparaat- of module-id maken of bijwerken.
Microsoft.Devices/IotHubs/devices/delete Verwijder een apparaat- of module-id.
Microsoft.Devices/IotHubs/twins/read Lees een apparaat of moduledubbel.
Microsoft.Devices/IotHubs/twins/write Schrijf een apparaat of moduledubbel.
Microsoft.Devices/IotHubs/jobs/read Hiermee wordt een lijst met taken geretourneerd.
Microsoft.Devices/IotHubs/jobs/write Een taak maken of bijwerken.
Microsoft.Devices/IotHubs/jobs/delete Verwijder een taak.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/send/action Verzend een cloud-naar-apparaat-bericht naar elk apparaat.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/feedback/action Ontvang, voltooi of laat een feedbackmelding over cloud-naar-apparaat-berichten ontvangen, voltooien of verlaten.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/queue/purge/action Verwijder alle opdrachten die in behandeling zijn voor een apparaat.
Microsoft.Devices/IotHubs/directMethods/invoke/action Roep een directe methode aan op elk apparaat of elke module.
Microsoft.Devices/IotHubs/fileUpload/notifications/action Meldingen voor het uploaden van bestanden ontvangen, voltooien of afbreken.
Microsoft.Devices/IotHubs/statistics/read Apparaat- en servicestatistieken lezen.
Microsoft.Devices/IotHubs/configurations/read Configuraties voor apparaatbeheer lezen.
Microsoft.Devices/IotHubs/configurations/write Apparaatbeheerconfiguraties maken of bijwerken.
Microsoft.Devices/IotHubs/configurations/delete Verwijder een configuratie voor apparaatbeheer.
Microsoft.Devices/IotHubs/configurations/applyToEdgeDevice/action Pas de configuratie-inhoud toe op een edge-apparaat.
Microsoft.Devices/IotHubs/configurations/testQueries/action Valideer de doelvoorwaarde en aangepaste metrische query's voor een configuratie.

Tip

Notitie

Als u gegevens wilt ophalen uit IoT Hub met behulp van Microsoft Entra ID, stelt u routering in naar een aangepast Event Hubs-eindpunt. Als u toegang wilt krijgen tot het ingebouwde eindpunt dat compatibel is met Event Hubs, gebruikt u de methode verbindingsreeks (gedeelde toegangssleutel) zoals voorheen.

Microsoft Entra-verificatie afdwingen

IoT Hub biedt standaard ondersteuning voor service-API-toegang via zowel Microsoft Entra-id als beleid voor gedeelde toegang en beveiligingstokens. Als u potentiële beveiligingsproblemen wilt minimaliseren die inherent zijn aan beveiligingstokens, kunt u de toegang uitschakelen met beleid voor gedeelde toegang.

Waarschuwing

Als u verbindingen weigert met behulp van beleid voor gedeelde toegang, verliezen alle gebruikers en services die verbinding maken met deze methode onmiddellijk de toegang. Met name omdat Device Provisioning Service (DPS) alleen ondersteuning biedt voor het koppelen van IoT-hubs met behulp van beleid voor gedeelde toegang, mislukken alle apparaatinrichtingsstromen met de fout 'niet geautoriseerd'. Ga zorgvuldig door en plan de toegang te vervangen door op rollen gebaseerde toegang van Microsoft Entra. Ga niet verder als u DPS gebruikt.

  1. Zorg ervoor dat uw serviceclients en gebruikers voldoende toegang hebben tot uw IoT-hub. Volg het principe van minimale bevoegdheden.
  2. Ga in Azure Portal naar uw IoT-hub.
  3. Selecteer in het linkerdeelvenster Beleid voor gedeelde toegang.
  4. Selecteer weigeren onder Verbinding maken met behulp van beleid voor gedeelde toegang de optie Weigeren en bekijk de waarschuwing. Screenshot that shows how to turn off IoT Hub shared access policies.

Uw IoT Hub-service-API's kunnen nu alleen worden geopend via Microsoft Entra-id en RBAC.

Toegang tot Microsoft Entra-id vanuit Azure Portal

U kunt toegang bieden tot IoT Hub vanuit Azure Portal met gedeeld toegangsbeleid of Microsoft Entra-machtigingen.

Wanneer u toegang probeert te krijgen tot IoT Hub vanuit Azure Portal, controleert Azure Portal eerst met de Azure-portal of u een Azure-rol hebt toegewezen.Microsoft.Devices/iotHubs/listkeys/action Als u dat hebt, gebruikt Azure Portal de sleutels van beleid voor gedeelde toegang voor toegang tot IoT Hub. Zo niet, dan probeert Azure Portal toegang te krijgen tot gegevens met behulp van uw Microsoft Entra-account.

Voor toegang tot IoT Hub vanuit Azure Portal met behulp van uw Microsoft Entra-account hebt u machtigingen nodig voor toegang tot IoT Hub-gegevensbronnen (zoals apparaten en tweelingen). U hebt ook machtigingen nodig om naar de IoT Hub-resource in Azure Portal te gaan. De ingebouwde rollen van IoT Hub verlenen toegang tot resources zoals apparaten en dubbels, maar ze verlenen geen toegang tot de IoT Hub-resource. Toegang tot de portal vereist dus ook de toewijzing van een Azure Resource Manager-rol, zoals Lezer. De rol van lezer is een goede keuze, omdat dit de meest beperkte rol is waarmee u door de portal kunt navigeren. Het bevat niet de Microsoft.Devices/iotHubs/listkeys/action machtiging (die toegang biedt tot alle IoT Hub-gegevensbronnen via beleid voor gedeelde toegang).

Als u ervoor wilt zorgen dat een account geen toegang heeft buiten de toegewezen machtigingen, neemt u de Microsoft.Devices/iotHubs/listkeys/action machtiging niet op wanneer u een aangepaste rol maakt. Als u bijvoorbeeld een aangepaste rol wilt maken die apparaatidentiteiten kan lezen, maar geen apparaten kan maken of verwijderen, maakt u een aangepaste rol die:

  • Heeft de Microsoft.Devices/IotHubs/devices/read gegevensactie.
  • Heeft de Microsoft.Devices/IotHubs/devices/write gegevensactie niet.
  • Heeft de Microsoft.Devices/IotHubs/devices/delete gegevensactie niet.
  • Heeft de Microsoft.Devices/iotHubs/listkeys/action actie niet.

Controleer vervolgens of het account geen andere rollen heeft met de Microsoft.Devices/iotHubs/listkeys/action machtiging, zoals Eigenaar of Inzender. Als u wilt toestaan dat het account toegang heeft tot resources en door de portal navigeert, wijst u Lezer toe.

Toegang tot Microsoft Entra-id vanuit Azure CLI

De meeste opdrachten voor IoT Hub ondersteunen Microsoft Entra-verificatie. U kunt het type verificatie bepalen dat wordt gebruikt voor het uitvoeren van opdrachten met behulp van de --auth-type parameter, die accepteert of login waarden accepteertkey. De key waarde is de standaardwaarde.

  • Wanneer --auth-type de key waarde is ingesteld, zoals eerder, detecteert de CLI automatisch een geschikt beleid wanneer deze communiceert met IoT Hub.

  • Wanneer --auth-type de login waarde is, wordt een toegangstoken van de Azure CLI die is aangemeld in de principal gebruikt voor de bewerking.

Zie de azure IoT-extensie voor de releasepagina van Azure CLI voor meer informatie.

SDK-voorbeelden

Volgende stappen

Gebruik Device Provisioning Service om meerdere X.509-apparaten in te richten met behulp van inschrijvingsgroepen.