Steuerung des Zugriffs auf IoT Hub mithilfe der Microsoft Entra-ID

Sie können Microsoft Entra ID verwenden, um Anforderungen an Azure loT Hub Service-APIs zu authentifizieren, z.B. Geräteidentität erstellen und direkte Methode aufrufen. Sie können auch Azure rollenbasierte Zugriffskontrolle (Azure RBAC) verwenden, um dieselben Service-APIs zu autorisieren. Wenn Sie diese Technologien zusammen verwenden, können Sie einem Microsoft Entra-Sicherheitsprinzipal Berechtigungen für den Zugriff auf loT Hub-Service-APIs erteilen. Dieser Sicherheitsprinzipal kann ein Benutzer, eine Gruppe oder ein Anwendungsdienstprinzipal sein.

Die Authentifizierung des Zugriffs mithilfe von Microsoft Entra ID und die Kontrolle der Berechtigungen mithilfe von Azure RBAC bieten eine verbesserte Sicherheit und Benutzerfreundlichkeit im Vergleich zu Sicherheitstokens. Um potenzielle Sicherheitsprobleme zu minimieren, die Sicherheitstoken-inhärent sind, empfehlen wir, die Microsoft Entra-Authentifizierung nach Möglichkeit zu erzwingen.

Hinweis

Die Authentifizierung mit Microsoft Entra wird für die Geräte-APIs des loT-Hubs (wie Geräte-zu-Cloud-Nachrichten und Aktualisierung gemeldeter Eigenschaften) nicht unterstützt. Verwenden Sie symmetrische Schlüssel oder X.509, um Geräte am loT Hub zu authentifizieren.

Authentifizierung und Autorisierung

Bei der Authentifizierung weisen Sie nach, dass Sie die Person sind, als die Sie sich ausgeben. Die Authentifizierung überprüft die Identität eines Benutzers oder Geräts auf IoT Hub. Dies wird manchmal auch kurz als AuthN bezeichnet. Die Autorisierung ist der Prozess der Bestätigung von Berechtigungen für einen authentifizierten Benutzer oder ein Gerät auf IoT Hub. Es gibt an, auf welche Ressourcen und Befehle Sie zugreifen dürfen, und was Sie mit diesen Ressourcen und Befehlen tun können. Die Autorisierung wird auch kurz als AuthZ bezeichnet.

Wenn ein Microsoft Entra-Sicherheitsprinzipal den Zugriff auf eine loT Hub-Service-API anfordert, wird die Identität des Prinzipals zunächst authentifiziert. Zur Authentifizierung muss die Anforderung zur Ausführung ein OAuth 2.0-Zugangs-Token enthalten. Der Ressourcenname zum Anfordern des Tokens lautet https://iothubs.azure.net. Wenn die Anwendung in einer Azure-Ressource wie einer Azure-VM, einer Azure Functions App oder einer Azure App Service App ausgeführt wird, kann sie als verwaltete Identität dargestellt werden.

Nachdem der Microsoft Entra-Prinzipal authentifiziert wurde, ist der nächste Schritt die Autorisierung. In diesem Schritt verwendet loT Hub den Microsoft Entra Rollenzuweisungsdienst, um festzustellen, welche Berechtigungen der Prinzipal hat. Wenn die Berechtigungen des Prinzipals für die angeforderte Ressource oder API ausreichen, autorisiert IoT Hub die Anforderung. Dieser Schritt erfordert also, dass dem Sicherheitsprinzipal eine oder mehrere Azure-Rollen zugewiesen werden. IoT Hub bietet einige integrierte Rollen, die allgemeine Berechtigungsgruppen umfassen.

Verwalten des Zugriffs auf Azure IoT Hub mithilfe der Azure RBAC-Rollenzuweisung

Bei Microsoft Entra ID und Azure RBAC erfordert IoT Hub, dass der Prinzipal, der die API anfordert, über eine ausreichende Berechtigungsebene für die Autorisierung verfügt. Um dem Prinzipal die Berechtigung zu erteilen, weisen Sie ihm eine Rolle zu.

Um das geringste Privileg zu gewährleisten, weisen Sie die entsprechende Rolle immer dem niedrigstmöglichen Ressourcenbereich zu, der wahrscheinlich der Azure loT Hub Bereich ist.

loT Hub bietet die folgenden in Azure integrierten Rollen für die Autorisierung des Zugriffs auf loT Hub-Service-APIs unter Verwendung von Microsoft Entra ID und RBAC:

Rolle BESCHREIBUNG
Mitwirkender an IoT Hub-Daten Ermöglicht den vollen Zugriff auf Azure loT Hub Datenebenen-Vorgänge.
IoT Hub-Datenleser Ermöglicht vollen Lesezugriff auf Eigenschaften der Azure loT Hub-Datenebene.
Mitwirkender an IoT Hub-Registrierung Ermöglicht vollen Zugriff auf die Azure loT Hub-Geräteregistrierung.
Mitwirkender an IoT Hub-Zwillingen Erlaubt Lese- und Schreibzugriff auf alle Azure loT Hub-Geräte- und -Modulzwillinge.

Sie können auch benutzerdefinierte Rollen für die Verwendung mit Azure loT Hub definieren, indem Sie die benötigten Berechtigungen kombinieren. Weitere Informationen finden Sie unter Erstellen von benutzerdefinierten Rollen für die rollenbasierte Zugriffskontrolle in Azure.

Ressourcenumfang

Bevor Sie einem Sicherheitsprinzipal eine Azure RBAC-Rolle zuweisen, legen Sie den Zugriffsbereich fest, den der Sicherheitsprinzipal haben soll. Es ist immer am besten, nur den kleinstmöglichen Bereich zu gewähren. Azure RBAC-Rollen, die in einem umfassenderen Bereich definiert sind, werden von den darunterliegenden Ressourcen geerbt.

Diese Liste beschreibt die Ebenen, auf denen Sie den Zugriff auf Azure loT Hub einschränken können, angefangen mit dem engsten Bereich:

  • Der IoT-Hub: In diesem Bereich gilt eine Rollenzuweisung für den Azure loT Hub. Es gibt keinen kleineren Bereich als einen einzelnen IoT-Hub. Rollenzuweisung in kleineren Bereichen, wie individuelle Geräteidentität oder Zwillingsabschnitt, wird nicht unterstützt.
  • Die Ressourcengruppe. In diesem Bereich gilt eine Rollenzuweisung für alle IoT Hubs in der Ressourcengruppe.
  • Das Abonnement. In diesem Bereich gilt eine Rollenzuweisung für alle IoT Hubs in allen Ressourcengruppen im Abonnement.
  • Eine Verwaltungsgruppe. In diesem Umfang gilt eine Rollenzuweisung für alle loT Hubs in allen Ressourcengruppen in allen Abonnements in der Verwaltungsgruppe.

Berechtigungen für Azure loT Hub-Service-APIs

Die folgende Tabelle beschreibt die Berechtigungen, die für Azure loT Hub-Service-API-Vorgänge verfügbar sind. Um einem Client den Aufruf eines bestimmten Vorgangs zu ermöglichen, stellen Sie sicher, dass die zugewiesene RBAC-Rolle des Clients ausreichende Berechtigungen für den Vorgang bietet.

RBAC-Aktion BESCHREIBUNG
Microsoft.Devices/IotHubs/devices/read Lesen einer beliebigen Geräte- oder Modulidentität.
Microsoft.Devices/IotHubs/devices/write Erstellen oder Aktualisieren einer beliebigen Geräte- oder Modulidentität.
Microsoft.Devices/IotHubs/devices/delete Löschen einer beliebigen Geräte- oder Modulidentität.
Microsoft.Devices/IotHubs/twins/read Lesen eines beliebigen Geräte- oder Modulzwillings.
Microsoft.Devices/IotHubs/twins/write Schreiben in alle Geräte oder Modulzwillinge.
Microsoft.Devices/IotHubs/jobs/read Zurückgeben von einer Liste von Aufträgen.
Microsoft.Devices/IotHubs/jobs/write Erstellen oder aktualisieren von allen Aufträgen.
Microsoft.Devices/IotHubs/jobs/delete Löschen vom irgendeinem Auftrag.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/send/action Senden einer Cloud-to-Gerät-Nachricht an ein beliebiges Gerät.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/feedback/action Empfangen, abschließen oder abbrechen von einer Rückmeldung über eine Cloud-to-Gerät-Nachricht.
Microsoft.Devices/IotHubs/cloudToDeviceMessages/queue/purge/action Löschen von allen ausstehenden Befehlen für ein Gerät.
Microsoft.Devices/IotHubs/directMethods/invoke/action Aufrufen von einer direkten Methode auf einem beliebigen Gerät oder Modul.
Microsoft.Devices/IotHubs/fileUpload/notifications/action Erhalten, Abschließen oder Abbrechen von Datei-Upload-Benachrichtigungen.
Microsoft.Devices/IotHubs/statistics/read Lesen von Geräte- und Dienststatistiken.
Microsoft.Devices/IotHubs/configurations/read Lesen von Geräteverwaltungskonfigurationen.
Microsoft.Devices/IotHubs/configurations/write Erstellen oder Aktualisieren von Geräteverwaltungskonfigurationen.
Microsoft.Devices/IotHubs/configurations/delete Löschen von beliebigen Geräteverwaltungskonfigurationen.
Microsoft.Devices/IotHubs/configurations/applyToEdgeDevice/action Anwenden des Konfigurationsinhalts auf ein Edgegerät.
Microsoft.Devices/IotHubs/configurations/testQueries/action Validieren der Zielbedingung und der benutzerdefinierten Metrikabfragen für eine Konfiguration.

Tipp

Hinweis

Um Daten von loT Hub über Microsoft Entra ID abzurufen, richten Sie ein Routing zu einem benutzerdefinierten Event Hub-Endpunkt ein. Für den Zugriff auf den eingebauten Azure Event Hubs kompatiblen Endpunkt verwenden Sie die Methode der Verbindungszeichenfolge (gemeinsamer Zugriffsschlüssel) wie zuvor.

Microsoft Entra-Authentifizierung erzwingen

Standardmäßig unterstützt loT Hub den Service-API-Zugriff sowohl über Microsoft Entra ID als auch über freigegebene Zugriffsrichtlinien und Sicherheitstoken. Deaktivieren Sie den Zugriff über freigegebene Zugriffsrichtlinien, um die potenziellen Sicherheitsrisiken bei Sicherheitstoken zu minimieren.

Warnung

Durch das Verweigern von Verbindungen mithilfe von SAS-Richtlinien verlieren alle Benutzer und Dienste, die eine Verbindung mithilfe dieser Methode herstellen, sofort den Zugriff. Da Device Provisioning Service (DPS) nur das Verknüpfen von IoT-Hubs mithilfe von SAS-Richtlinien unterstützt, tritt bei allen Gerätebereitstellungsflows der Fehler „Nicht autorisiert“ auf. Gehen Sie sorgfältig vor, und planen Sie, den Zugriff durch rollenbasierten Microsoft Entra-Zugriff zu ersetzen. Fahren Sie nicht fort, wenn Sie DPS verwenden.

  1. Stellen Sie sicher, dass Ihre Dienstclients und Benutzer ausreichenden Zugang zu Ihrem loT Hub haben. Befolgen Sie das Prinzip der geringsten Privilegien.
  2. Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.
  3. Wählen Sie im linken Bereich freigegebene Zugriffsrichtlinien.
  4. Wählen Sie unter Herstellen einer Verbindung mithilfe von SAS-Richtlinien die Option Verweigern aus, und sehen Sie sich die Warnung an. Screenshot that shows how to turn off IoT Hub shared access policies.

Auf Ihre loT Hub-Service-APIs kann jetzt nur noch über Microsoft Entra ID und RBAC zugegriffen werden.

Microsoft Entra ID-Zugriff über das Azure-Portal

Sie können den Zugriff auf IoT Hub über das Azure-Portal mit entweder freigegebenen Zugriffsberechtigungen oder Microsoft Entra-Berechtigungen bereitstellen.

Wenn Sie versuchen, auf loT Hub aus dem Azure-Portal zuzugreifen, prüft das Azure-Portal zunächst, ob Ihnen eine Azure-Rolle mit Microsoft.Devices/iotHubs/listkeys/action zugewiesen wurde. Wenn ja, verwendet das Azure-Portal die Schlüssel aus den freigegebenen Zugriffsrichtlinien, um auf loT Hub zuzugreifen. Wenn nicht, versucht das Azure-Portal, über Ihr Microsoft Entra-Konto auf die Daten zuzugreifen.

Um über Ihr Microsoft Entra-Konto vom Azure-Portal aus auf loT Hub zuzugreifen, benötigen Sie Berechtigungen für den Zugriff auf loT Hub-Datenressourcen (wie Geräte und Zwillinge). Sie benötigen auch Berechtigungen, um die loT Hub-Ressource im Azure-Portal aufzurufen. Die von IoT Hub bereitgestellten integrierten Rollen gewähren Zugriff auf Ressourcen wie Geräte und Zwillinge, aber nicht auf die IoT Hub-Ressource. Der Zugriff auf das Portal erfordert daher auch die Zuweisung einer Azure Resource Manager-Rolle wie Leser. Die Leser-Rolle ist eine gute Wahl, da sie die am meisten eingeschränkte Rolle ist, mit der Sie im Portal navigieren können. Sie beinhaltet nicht die Berechtigung Microsoft.Devices/iotHubs/listkeys/action (die den Zugriff auf alle Azure loT Hub-Datenressourcen über geteilte Zugriffsrichtlinien ermöglicht).

Um sicherzustellen, dass ein Konto keinen Zugriff außerhalb der zugewiesenen Berechtigungen hat, sollten Sie die Berechtigung Microsoft.Devices/iotHubs/listkeys/action nicht einschließen, wenn Sie eine benutzerdefinierte Rolle erstellen. Um beispielsweise eine benutzerdefinierte Rolle zu erstellen, die Geräteidentitäten lesen, aber keine Geräte erstellen oder löschen kann, erstellen Sie eine benutzerdefinierte Rolle, die:

  • Über die Datenaktion Microsoft.Devices/IotHubs/devices/read verfügt.
  • Nicht über die Datenaktion Microsoft.Devices/IotHubs/devices/write verfügt.
  • Nicht über die Datenaktion Microsoft.Devices/IotHubs/devices/delete verfügt.
  • Nicht über die Aktion Microsoft.Devices/iotHubs/listkeys/action verfügt.

Vergewissern Sie sich dann, dass das Konto keine anderen Rollen mit der Berechtigung Microsoft.Devices/iotHubs/listkeys/action hat, z. B. Eigentümer oder Mitwirkender. Um dem Konto den Ressourcenzugriff zu ermöglichen und im Portal zu navigieren, weisen Sie Leser zu.

Microsoft Entra ID-Zugriff über Azure CLI

Die meisten Befehle für IoT Hub unterstützen die Microsoft Entra-Authentifizierung. Sie können die Art der Authentifizierung, die für die Ausführung von Befehlen verwendet wird, mit dem Parameter --auth-type steuern, der die Werte key oder login akzeptiert. Der Wert key ist der standardmäßige Wert.

  • Wenn --auth-type den Wert key hat, findet die Befehlszeilenschnittstelle wie zuvor automatisch eine geeignete Richtlinie, wenn sie mit Azure loTHub interagiert.

  • Wenn --auth-type den Wert login hat, wird ein Zugriffstoken von der im Prinzipal angemeldeten Azure CLI für den Vorgang verwendet.

Weitere Informationen finden Sie in der Azure loT Erweiterung für Azure CLI Release Seite.

SDK-Beispiele

Nächste Schritte

Verwenden Sie den Device Provisioning Service zum Bereitstellen mehrerer X.509-Geräte mithilfe von Registrierungsgruppen.