Řízení přístupu pro klienty MQTT
Řízení přístupu umožňuje spravovat autorizaci klientů k publikování nebo přihlášení k odběru témat pomocí modelu řízení přístupu na základě role. Vzhledem k obrovskému měřítku prostředí IoT je přiřazování oprávnění každému klientovi k jednotlivým tématům neuvěřitelně zdlouhavé. Funkce zprostředkovatele MQTT v Azure Event Gridu řeší tuto výzvu škálování prostřednictvím seskupování klientů a témat do skupin klientů a témat.
Hlavní komponenty modelu řízení přístupu jsou:
Klient představuje zařízení nebo aplikaci, která potřebuje publikovat nebo přihlásit k odběru témat MQTT.
Klientská skupina je sada klientů, kteří potřebují stejný přístup k publikování nebo přihlášení k odběru stejné sady témat MQTT. Skupina klientů představuje objekt zabezpečení v modelu RBAC.
Prostor tématu představuje více témat prostřednictvím sady šablon témat. Šablony témat jsou rozšířením filtrů MQTT, které podporují proměnné spolu se zástupnými cardy MQTT. Každý prostor tématu představuje témata, která musí ke komunikaci použít stejná sada klientů. Prostor tématu představuje prostředek v modelu RBAC.
Vazba oprávnění uděluje přístup ke konkrétní skupině klientů k publikování nebo přihlášení k odběru témat reprezentovaných konkrétním tématovým prostorem. Vazba oprávnění představuje roli v modelu RBAC.
Příklady:
Následující příklady podrobně uvádějí, jak nakonfigurovat model řízení přístupu na základě následujících požadavků.
Příklad 1:
Továrna má několik oblastí s každou oblastí, včetně počítačů, které spolu potřebují komunikovat. Stroje z jiných oblastí továrny s nimi ale nesmí komunikovat.
Klient | Role | Filtr témat/témat |
---|---|---|
Area1_Machine1 | Vydavatel | oblasti/oblast1/stroje/stroj1 |
Area1_Machine2 | Odběratel | plochy/oblast1/stroje/ # |
Area2_Machine1 | Vydavatel | oblasti/oblast2/stroje/stroj1 |
Area2_Machine2 | Odběratel | plochy/oblast2/stroje/ # |
Konfigurace
- Vytvořte klientský prostředek pro každý počítač.
- Vytvořte skupinu klientů pro počítače každé oblasti továrny.
- Vytvořte prostor tématu pro každou oblast představující témata, která počítače oblasti komunikují.
- Vytvořte dvě vazby oprávnění pro každou skupinu klientů pro publikování a přihlášení k odběru odpovídajícího prostoru témat dané oblasti.
Klient | Skupina klientů | Vazba oprávnění | Tematický prostor |
---|---|---|---|
Area1_Machine1 | Area1Machines | Area1-Pub | Area1Messages -Topic Template: areas/area1/machines/ # |
Area1_Machine2 | Area1Machines | Area1-Sub | Area1Messages -Topic Template: areas/area1/machines/ # |
Area2_Machine1 | Area2Machines | Area2-Pub | Area2Messages -Topic Template: areas/area2/machines/ # |
Area2_Machine2 | Area2Machines | Oblast2–dílčí | Area2Messages -Topic Template: areas/area2/machines/ # |
Příklad 2:
Předpokládejme další požadavek pro předchozí příklad: každá oblast má klienty pro správu spolu s počítači a počítače nesmí mít přístup k publikování v případě ohrožení zabezpečení některé z nich. Na druhou stranu klienti pro správu potřebují přístup k publikování, aby mohli odesílat příkazy do počítačů a odebírat přístup k příjmu telemetrie z počítačů.
Klient | Role | Filtr témat/témat |
---|---|---|
Area1_Machine1 | Vydavatel | oblasti/oblast1/stroje/stroj1 |
Odběratel | plochy/oblast1/mgmt/ # | |
Area1_Mgmt1 | Vydavatel | oblasti/oblast1/mgmt/stroj1 |
Odběratel | plochy/oblast1/stroje/ # | |
Area2_Machine1 | Vydavatel | oblasti/oblast2/stroje/stroj1 |
Odběratel | plochy/oblast2/mgmt/ # | |
Area2_ Mgmt1 | Vydavatel | plochy/oblast2/mgmt/stroj1 |
Odběratel | plochy/oblast2/stroje/ # |
Configuration (Konfigurace):
- Vytvořte klientské prostředky pro každý počítač a klienta pro správu.
- Vytvořte pro každou oblast dvě skupiny klientů: jednu pro klienta pro správu a druhou pro počítače.
- Vytvořte pro každou oblast dva prostory témat: jednu představující témata telemetrie a další témata představující příkazy.
- Vytvořte dvě vazby oprávnění pro klienty pro správu jednotlivých oblastí, které budou publikovat do prostoru témat tématu a přihlásit se k odběru prostoru témat telemetrie.
- Vytvořte dvě vazby oprávnění pro počítače jednotlivých oblastí, abyste se přihlásili k odběru příkazů Topic Space a publikovali je do prostoru témat telemetrie.
Klient | Skupina klientů | Vazba oprávnění | Filtr témat/témat |
---|---|---|---|
Area1_Machine1 | Area1Machines | Area1Machines-Pub | Area1Telemetry -Topic Template: areas/area1/machines/ # |
Area1Machines-Sub | Area1Commands -Topic Template: areas/area1/mgmt/ # | ||
Area1_MgmtClient1 | Area1Mgmt | Area1Mgmt-Pub | Area1Commands -Topic Template: areas/area1/mgmt/ # |
Area1Mgmt-Sub | Area1Telemetry -Topic Template: areas/area1/machines/ # | ||
Area2_Machine1 | Area2Machines | Area2Machines-Pub | Area2Telemetry -Topic Template: areas/area2/machines/ # |
Area2Machines-Sub | Area2Commands -Topic Template: areas/area2/mgmt/ # | ||
Area2_ MgmtClient1 | Area2Mgmt | Area2Mgmt-Pub | Area2Commands -Topic Template: areas/area2/mgmt/ # |
Area2Mgmt-Sub | Area2Telemetry -Topic Template: areas/area2/machines/ # |
Podrobné řízení přístupu
Podrobné řízení přístupu umožňuje řídit autorizaci jednotlivých klientů v rámci skupiny klientů k publikování nebo přihlášení k odběru vlastního tématu. Toto podrobné řízení přístupu se dosahuje pomocí proměnných v šablonách témat.
I když může mít skupina klientů přístup k určitému prostoru témat se všemi šablonami témat, proměnné v šablonách témat umožňují řídit autorizaci jednotlivých klientů v rámci této skupiny klientů k publikování nebo přihlášení k odběru vlastního tématu. Pokud například skupina klientů "machines" obsahuje dva klienty: "machine1" a "machine2". Pomocíproměnnýchm proměnným můžete povolit publikování telemetrie pouze na počítači1.
Proměnné představují buď názvy ověřování klientů, nebo atributy klienta. Během komunikace s zprostředkovatelem MQTT by každý klient nahradil proměnnou v tématu MQTT nahrazenou hodnotou. Například proměnná ${client.authenticationName} by byla nahrazena názvem ověřování každého klienta: machine1, machine2 atd. Zprostředkovatel MQTT by umožnil přístup pouze klientům, kteří mají náhradní hodnotu, která odpovídá jejich ověřovacímu názvu nebo hodnotě zadaného atributu.
Představte si například následující konfiguraci:
- Skupina klientů: Počítače
- Tématický prostor: MachinesTelemetry
- Šablona tématu "machines/${client.authenticationName}/telemetry".
- Vazba oprávnění: skupina klientů: počítače; tématický prostor: machinesTelemetry; Oprávnění: vydavatel
V této konfiguraci může publikovat pouze klient s názvem ověřování klienta "machine1" na téma "machines/machine1/telemetry" a pouze počítač s názvem ověřování klienta "machine 2" může publikovat v tématu počítače/počítač2/telemetrie atd. Proto počítač machine2 nemůže publikovat nepravdivé informace jménem počítače 1, i když má přístup ke stejnému prostoru témat a naopak.
Další kroky:
Další informace o autorizaci a ověřování: