Steuern des Zugriffs auf den Azure IoT Hub Gerätebereitstellungsdienst (DPS) mithilfe der Microsoft Entra-ID (Vorschau)

Sie können Microsoft Entra ID verwenden, um Anfragen an die APIs des Azure IoT Hub Device Provisioning Service (DPS) zu authentifizieren, wie etwa das Erstellen einer Geräteidentität und das Aufrufen einer direkten Methode. 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 die APIs des Azure IoT Hub Device Provisioning Service (DPS) gewähren. Dieser Sicherheitsprinzipal kann ein Benutzer, eine Gruppe oder ein Dienstprinzipal einer Anwendung 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 mögliche Sicherheitsprobleme im Zusammenhang mit Sicherheitstokens zu minimieren, wird empfohlen, wann immer möglich Microsoft Entra mit Ihrem Azure IoT Hub Gerätebereitstellungsdienst (DPS) zu verwenden.

Hinweis

Die Authentifizierung mit Microsoft Entra wird für die Geräte-APIs des Azure IoT Hub Gerätebereitstellungsdienst (DPS) (z. B. Gerät registrieren oder Status der Geräteregistrierung abfragen) nicht unterstützt. Verwenden Sie symmetrische Schlüssel, X.509 oder TPM, um Geräte beim Azure IoT Hub Device Provisioning Service (DPS) zu authentifizieren.

Authentifizierung und Autorisierung

Wenn ein Microsoft Entra-Sicherheitsprinzipal Zugriff auf eine Azure IoT Hub Gerätebereitstellungsdienst (DPS) 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://azure-devices-provisioning.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 Azure IoT Hub Gerätebereitstellungsdienst (DPS) den Microsoft Entra-Rollenzuweisungsdienst, um festzustellen, welche Berechtigungen der Prinzipal hat. Wenn die Berechtigungen des Prinzipals mit der angeforderten Ressource oder API übereinstimmen, autorisiert Azure IoT Hub Device Provisioning Service (DPS) die Anfrage. Dieser Schritt erfordert also, dass dem Sicherheitsprinzipal eine oder mehrere Azure-Rollen zugewiesen werden. Azure IoT Hub Device Provisioning Service (DPS) bietet einige integrierte Rollen, die allgemeine Berechtigungsgruppen umfassen.

Verwalten des Zugriffs auf Azure IoT Hub Device Provisioning Service (DPS) mithilfe einer Azure RBAC-Rollenzuweisung

Mit Microsoft Entra ID und RBAC erfordert der Azure IoT Hub-Gerätebereitstellungsdienst (DPS), dass der Prinzipal, der die API anfordert, über die entsprechende Berechtigungsstufe 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 IoT Hub Device Provisioning Service (DPS) Bereich ist.

Azure IoT Hub Device Provisioning Service (DPS) bietet die folgenden in Azure integrierten Rollen zum Autorisieren des Zugriffs auf DPS-APIs mithilfe von Microsoft Entra ID und RBAC:

Rolle Beschreibung
Mitwirkender an Daten des Device Provisioning-Diensts Ermöglicht Vollzugriff auf Vorgänge auf Datenebene des Device Provisioning-Diensts.
Device Provisioning Service-Datenleser Ermöglicht den vollständigen Lesezugriff auf die Eigenschaften der Device Provisioning Service-Datenebene.

Sie können auch benutzerdefinierte Rollen zur Verwendung mit Azure IoT Hub Device Provisioning Service (DPS) definieren, indem Sie die benötigten Berechtigungen kombinieren. Weitere Informationen finden Sie unter Erstellen von benutzerdefinierten Rollen für die rollenbasierte Zugriffskontrolle in Azure.

Schlüssel für die Richtlinien für Schreib- und gemeinsamen Zugriff auf der Steuerungsebene

Die Aktion Microsoft.Devices/provisioningServices/write erlaubt es einem Prinzipal, jede Eigenschaft der DPS-Ressource, einschließlich der Sammlung authorizationPolicies , zu erstellen oder zu aktualisieren. Da der Azure Resource Manager (ARM)-Vertrag für CreateOrUpdate bei jeder Richtlinie von Aufrufern bereitgestellte Werte für primaryKey und secondaryKey akzeptiert, kann ein Prinzipal, der über write für eine DPS-Ressource verfügt, Folgendes tun:

  • Setze den Primär- oder Sekundärschlüssel jeder Shared-Access-Policy (einschließlich der Root-Policy provisioningserviceowner ) auf einen von ihnen gewählten Wert und authentifiziere dich dann als diese Policy.
  • Rotieren Sie die Schlüssel jeder Shared-Access-Richtlinie, die bestehende Nutzer ungültig macht.
  • Fügen Sie eine neue benannte Shared-Access-Richtlinie mit einem gewählten Schlüsselwert hinzu.

Aus diesem Grund ist Microsoft.Devices/provisioningServices/write funktional gleichbedeutend mit der vollständigen Verwaltung der Anmeldeinformationen der Shared-Access-Richtlinie der Ressource, unabhängig davon, ob der Prinzipal auch Microsoft.Devices/provisioningServices/listkey/action oder Microsoft.Devices/provisioningServices/listkeys/action besitzt.

Important

Eine benutzerdefinierte Rolle, mit der Microsoft.Devices/provisioningServices/write für eine DPS-Ressource gewährt wird, ohne listkeys/action zu gewähren, isoliert die Verwaltung von Anmeldeinformationen nicht von der Ressourcenkonfiguration. Der Prinzipal hat weiterhin die volle Kontrolle über das Schlüsselmaterial der SAS-Richtlinien über den Schreibpfad. Verlasse dich nicht auf dieses Muster für die Least-Privileg-Konfiguration.

Wenn Sie die Ressourcenkonfiguration von der Verwaltung der Shared-Access-Richtlinien trennen müssen, verwenden Sie stattdessen eines der folgenden Muster:

  • Bevorzuge Microsoft Entra ID-Authentifizierung für die Datenebene. Weisen Sie den integrierten Rollen Device Provisioning Service Data Contributor oder Device Provisioning Service Data Reader für das Einschreibungsmanagement zu und deaktivieren, wo möglich, den Zugriff auf die Shared-Access-Signatur auf der Ressource.
  • write auf Ressourcenebene beschränken. Da write die Kontrolle über Schlüssel ermöglicht, gewähren Sie diese nur Sicherheitsprinzipalen, denen Sie die Anmeldeinformationen für SAS-Richtlinien anvertrauen.
  • Aktivitäten der Steuerungsebene überprüfen. Änderungen an authorizationPolicies, die über den Control-Plane-PUT vorgenommen werden, werden im Azure Activity Log unter dem Vorgang Microsoft.Devices/provisioningServices/write erfasst. Überprüfen Sie diese Ereignisse zusammen mit listkeys/action-Ereignissen bei der Überwachung des Zugriffs auf Anmeldeinformationen.

Die gleichen Überlegungen gelten für Azure IoT Hub. Details finden Sie unter Zugriff auf den IoT Hub mit Microsoft Entra ID kontrollieren.

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 engstmöglichen Berechtigungsumfang zu gewähren. Azure RBAC-Rollen, die in einem übergeordneten Bereich definiert sind, werden an die darunterliegenden Ressourcen vererbt.

Diese Liste beschreibt die Ebenen, auf denen Sie den Zugriff auf Azure IoT Hub festlegen können, beginnend mit dem engsten Geltungsbereich:

  • Der Azure IoT Hub Device Provisioning Service (DPS). In diesem Bereich gilt eine Rollenzuweisung für den Azure IoT Hub Device Provisioning Service (DPS). Die Rollenzuweisung in kleineren Bereichen, wie z.B. bei der Registrierung von Gruppen oder Einzelpersonen, 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 IoT Hubs in allen Ressourcengruppen in allen Abonnements in der Verwaltungsgruppe.

Berechtigungen für Azure IoT Hub Device Provisioning Service (DPS) APIs

Die folgende Tabelle beschreibt die verfügbaren Berechtigungen für Azure IoT Hub Device Provisioning Service (DPS) API-Vorgänge. 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/provisioningServices/attestationmechanism/details/action Details zum Attestierungsmechanismus abrufen
Microsoft.Devices/provisioningServices/enrollmentGroups/read Lesen von Registrierungsgruppen
Microsoft.Devices/provisioningServices/enrollmentGroups/write Schreiben von Registrierungsgruppen
Microsoft.Devices/provisioningServices/enrollmentGroups/delete Löschen von Registrierungsgruppen
Microsoft.Devices/provisioningServices/enrollments/read Registrierungen lesen
Microsoft.Devices/provisioningServices/enrollments/write Registrierungen schreiben
Microsoft.Devices/provisioningServices/enrollments/delete Löschen von Registrierungen
Microsoft.Devices/provisioningServices/registrationStates/read Registrierungszustände lesen
Microsoft.Devices/provisioningServices/registrationStates/delete Löschen von Registrierungszustände

Azure IoT-Erweiterung für die Azure CLI

Die meisten Befehle für Azure IoT Hub Gerätebereitstellungsdienst (DPS) 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 (CLI) automatisch eine passende Richtlinie, wenn sie mit dem Azure IoT Hub Device Provisioning Service (DPS) interagiert.

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

  • Die folgenden Befehle unterstützen derzeit --auth-type:

    • az iot dps enrollment
    • az iot dps enrollment-group
    • az iot dps registration

Weitere Informationen finden Sie auf der Release-Seite der Azure IoT-Erweiterung für Azure CLI.

SDKs und Beispiele

Microsoft Entra ID-Zugriff über das Azure-Portal

Hinweis

Der Zugriff auf Microsoft Entra ID über das Azure-Portal ist während der Vorschau derzeit nicht verfügbar.

Nächste Schritte