Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe der Zugriffssteuerung können Sie die Autorisierung von Clients zum Veröffentlichen oder Abonnieren von Themen mithilfe eines rollenbasierten Zugriffssteuerungsmodells verwalten. Angesichts des enormen Umfangs von IoT-Umgebungen ist die Zuweisung von Berechtigungen für jeden Client zu jedem Thema unglaublich mühsam. Das MQTT-Brokerfeature von Azure Event Grid behandelt diese Skalierungsaufforderung durch Gruppieren von Clients und Themen in Clientgruppen und Themenbereichen.
Die Hauptkomponenten des Zugriffssteuerungsmodells sind:
Ein Client stellt das Gerät oder die Anwendung dar, das mqTT-Themen veröffentlichen und/oder abonnieren muss.
Eine Clientgruppe ist eine Gruppe von Clients, die denselben Zugriff benötigen, um denselben Satz von MQTT-Themen zu veröffentlichen und/oder zu abonnieren. Die Kundengruppe stellt den Prinzipal im RBAC-Modell dar.
Ein Themenbereich stellt mehrere Themen über eine Reihe von Themenvorlagen dar. Themenvorlagen sind eine Erweiterung von MQTT-Filtern, die Variablen unterstützen, zusammen mit den MQTT-Wildcards. Jeder Themenbereich stellt die Themen dar, die dieselbe Gruppe von Clients für die Kommunikation verwenden müssen. Der Themenbereich stellt die Ressource im RBAC-Modell dar.
Eine Berechtigungsbindung gewährt Zugriff auf eine bestimmte Clientgruppe, um die durch einen bestimmten Themenbereich dargestellten Themen zu veröffentlichen oder zu abonnieren. Die Berechtigungsbindung stellt die Rolle im RBAC-Modell dar.
Beispiele:
In den folgenden Beispielen wird beschrieben, wie Sie das Zugriffssteuerungsmodell basierend auf den folgenden Anforderungen konfigurieren.
Beispiel 1:
Eine Fabrik verfügt über mehrere Bereiche, wobei jeder Bereich Maschinen umfasst, die miteinander kommunizieren müssen. Maschinen aus anderen Fabrikbereichen dürfen jedoch nicht mit ihnen kommunizieren.
| Kunde | Rolle | Thema-/Themenfilter |
|---|---|---|
| Area1_Machine1 | Herausgeber | areas/area1/machines/machine1 |
| Area1_Machine2 | Abonnent | areas/area1/machines/# |
| Area2_Machine1 | Herausgeber | areas/area2/machines/machine1 |
| Area2_Machine2 | Abonnent | Bereiche/Fläche2/Maschinen/ # |
Konfiguration
- Erstellen Sie eine Clientressource für jeden Computer.
- Erstellen Sie eine Clientgruppe für die Computer der einzelnen Werksbereiche.
- Erstellen Sie einen Themenbereich für jeden Bereich, der die Themen darstellt, über die die Computer des Bereichs kommunizieren.
- Erstellen Sie zwei Berechtigungsbindungen für die Clientgruppe jedes Bereichs, um den Themenbereich des entsprechenden Bereichs zu veröffentlichen und zu abonnieren.
| Kunde | Clientgruppe | Berechtigungsbindung | Themenbereich |
|---|---|---|---|
| Area1_Machine1 | Area1Machines | Area1-Pub | Area1Messages -Themenvorlage: Bereiche/Bereich1/Maschinen/# |
| Area1_Machine2 | Area1Machines | Area1-Sub | Area1Messages -Themenvorlage: bereiche/area1/maschinen/# |
| Area2_Machine1 | Area2Machines | Area2-Pub | Area2Messages -Thema Vorlage: Bereiche/Area2/Maschinen/# |
| Area2_Machine2 | Area2Machines | Area2-Sub | Area2Messages - Thema Vorlage: Bereich/Bereich2/Maschinen/# |
Beispiel 2:
Nehmen wir eine zusätzliche Anforderung für das vorherige Beispiel an: Jeder Bereich verfügt über Verwaltungsclients zusammen mit den Computern, und die Computer dürfen keinen Zugriff auf die Veröffentlichung haben, falls eine dieser Bereiche kompromittiert wird. Andererseits benötigen die Verwaltungsclients Veröffentlichungszugriff, um Befehle an die Maschinen zu senden, und Abonnementzugriff, um Telemetriedaten von den Maschinen zu empfangen.
| Kunde | Rolle | Thema-/Themenfilter |
|---|---|---|
| Area1_Machine1 | Herausgeber | areas/area1/machines/machine1 |
| Abonnent | Bereiche/Bereich1/mgmt/# | |
| Area1_Mgmt1 | Herausgeber | areas/area1/mgmt/machine1 |
| Abonnent | areas/area1/machines/# | |
| Area2_Machine1 | Herausgeber | areas/area2/machines/machine1 |
| Abonnent | Bereiche/Bereich2/mgmt/# | |
| Area2_ Mgmt1 | Herausgeber | areas/area2/mgmt/machine1 |
| Abonnent | Bereiche/Fläche2/Maschinen/ # |
Konfiguration:
- Erstellen Sie Clientressourcen für jeden Computer- und Verwaltungsclient.
- Erstellen Sie zwei Clientgruppen pro Bereich: eine für den Verwaltungsclient und eine für die Computer.
- Erstellen Sie zwei Themenräume für jeden Bereich: eine, die Telemetriethemen darstellt, und eine andere, die Befehlsthemen darstellt.
- Erstellen Sie zwei Berechtigungsbindungen für die Verwaltungsclients jedes Bereichs, um im Befehlsthemenbereich zu veröffentlichen und den Telemetriethemabereich zu abonnieren.
- Erstellen Sie zwei Berechtigungsbindungen für die Computer jedes Bereichs, um den Befehlsthemenbereich zu abonnieren und im Telemetriethemabereich zu veröffentlichen.
| Kunde | Clientgruppe | Berechtigungsbindung | Thema-/Themenfilter |
|---|---|---|---|
| Area1_Machine1 | Area1Machines | Area1Machines-Pub | Area1Telemetry, Themenvorlage: areas/area1/machines/# |
| Area1Machines-Sub | Area1Commands, Themenvorlage: areas/area1/mgmt/# | ||
| Area1_MgmtClient1 | Area1Mgmt | Area1Mgmt-Pub | Area1Commands, Themenvorlage: areas/area1/mgmt/# |
| Area1Mgmt-Sub | Area1Telemetry, Themenvorlage: areas/area1/machines/# | ||
| Area2_Machine1 | Area2Machines | Area2Machines-Pub | Area2Telemetry, Themenvorlage: areas/area2/machines/# |
| Area2Machines-Sub | Area2Commands, Themenvorlage: areas/area2/mgmt/# | ||
| Area2_ MgmtClient1 | Area2Mgmt | Area2Mgmt-Pub | Area2Commands -Topic Template: Bereiche/area2/mgmt/# |
| Area2Mgmt-Sub | Area2Telemetry, Themenvorlage: areas/area2/machines/# |
Granulare Zugriffssteuerung
Mit der granularen Zugriffssteuerung können Sie die Autorisierung jedes Clients innerhalb einer Gruppe von Clients kontrollieren, um ihre eigenen Themen zu veröffentlichen oder zu abonnieren. Diese differenzierte Zugriffssteuerung wird durch die Verwendung von Variablen in Themenvorlagen erreicht.
Obwohl eine Clientgruppe Zugriff auf einen bestimmten Themenbereich mit allen Themenvorlagen haben kann, können Sie mithilfe von Variablen innerhalb von Themenvorlagen die Autorisierung jedes Clients innerhalb dieser Clientgruppe steuern, um ein eigenes Thema zu veröffentlichen oder zu abonnieren. Wenn beispielsweise die Clientgruppe "Maschinen" zwei Clients umfasst: "maschine1" und "maschine2". Mithilfe von Variablen können Sie nur Maschine1 erlauben, ihre Telemetrie ausschließlich im MQTT-Thema "machines/machine1/telemetry" zu veröffentlichen, und "machine2" darf Nachrichten ausschließlich im MQTT-Thema "machines/machine2/telemetry" veröffentlichen.
Die Variablen stellen entweder Clientauthentifizierungsnamen oder Clientattribute dar. Während der Kommunikation mit MQTT-Broker würde jeder Kunde die Variable im MQTT-Thema durch einen ersetzten Wert ersetzen. Beispielsweise würde die Variable "${client.authenticationName}" durch den Authentifizierungsnamen jedes Clients ersetzt: Computer1, Computer2 usw. MQTT-Broker würde den Zugriff nur auf die Clients zulassen, die einen ersetzten Wert aufweisen, der entweder ihrem Authentifizierungsnamen oder dem Wert des angegebenen Attributs entspricht.
Betrachten Sie beispielsweise die folgende Konfiguration:
- Clientgruppe: Computer
- Themenbereich: Maschinentelemetrie
- Themenvorlage "machines/${client.authenticationName}/telemetry".
- Berechtigungsbindung: Clientgruppe: Computer; Themenbereich: machinesTelemetry; Berechtigung: Herausgeber
Mit dieser Konfiguration kann nur der Client mit dem Clientauthentifizierungsnamen "machine1" im Thema "computer/machine1/telemetry" veröffentlicht werden, und nur der Computer mit dem Clientauthentifizierungsnamen "Computer 2" kann im Thema "computer/machine2/telemetry" veröffentlicht werden usw. Dementsprechend kann Machine2 keine falschen Informationen im Auftrag von Machine1 veröffentlichen, obwohl sie Zugriff auf denselben Themenbereich hat und umgekehrt.
Nächste Schritte:
Weitere Informationen zur Autorisierung und Authentifizierung: