Ří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.

Diagram of the access control model.

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.

Diagram of the granular access control example.

Další kroky:

Další informace o autorizaci a ověřování: