Hozzáférés-vezérlés MQTT-ügyfelek számára

A hozzáférés-vezérlés lehetővé teszi, hogy szerepköralapú hozzáférés-vezérlési modell használatával kezelje az ügyfelek engedélyét a témakörök közzétételére vagy előfizetésére. Az IoT-környezetek hatalmas mérete miatt az egyes ügyfelek engedélyeinek hozzárendelése az egyes témakörökhöz hihetetlenül fárasztó. Az Azure Event Grid MQTT-közvetítő funkciója ezt a skálázási kihívást az ügyfelek és témakörök ügyfélcsoportokba és témakörterekbe való csoportosításával oldja meg.

A hozzáférés-vezérlési modell fő összetevői a következők:

Az ügyfél az MQTT-témakörök közzétételéhez és/vagy előfizetéséhez szükséges eszközt vagy alkalmazást jelöli.

Az ügyfélcsoportok olyan ügyfelek, amelyeknek ugyanolyan hozzáférésre van szükségük az MQTT-témakörök közzétételéhez és/vagy előfizetéséhez. A kliens csoport az RBAC-modellben a főszereplőt képviseli.

A témakörtér több témakört jelöl egy témakörsablonok halmazán keresztül. A témakörsablonok olyan MQTT-szűrők bővítményei, amelyek támogatják a változókat, valamint az MQTT helyettesítő karaktereket. Minden témakörterület azokat a témaköröket jelöli, amelyeket ugyanazoknak az ügyfeleknek kell használniuk a kommunikációhoz. A témakörterület az RBAC-modell erőforrását jelöli.

Egy engedélykötés hozzáférést biztosít egy adott ügyfélcsoporthoz, hogy közzétegye vagy feliratkozzon egy adott témakörtér által képviselt témakörökre. Az engedélykötés az RBAC-modell szerepkörét jelöli.

A hozzáférés-vezérlési modell ábrája.

Példák:

Az alábbi példák bemutatja, hogyan konfigurálható a hozzáférés-vezérlési modell az alábbi követelmények alapján.

1. példa:

A gyárak több területtel is rendelkeznek, beleértve azokat a gépeket is, amelyeknek kommunikálniuk kell egymással. A gyár más területeiről származó gépek azonban nem kommunikálhatnak velük.

Ügyfél szerepkör Téma/témaszűrő
Area1_Machine1 Publisher területek/terület1/gépek/gép1
Area1_Machine2 Subscriber területek/terület1/gépek/#
Area2_Machine1 Publisher területek/terület2/gépek/gép1
Area2_Machine2 Subscriber területek/terület2/gépek/ #

Konfiguráció

  • Hozzon létre egy ügyfélerőforrást minden géphez.
  • Hozzon létre egy ügyfélcsoportot az egyes gyárterületek gépeihez.
  • Hozzon létre egy témakörteret minden olyan területhez, amely azokat a témaköröket jelöli, amelyeket a terület gépei kommunikálnak.
  • Hozzon létre két jogosultsági kötést minden terület ügyfélcsoportjához, hogy azok közzé tudják tenni és előfizetni tudjanak a saját területük témakörére.
Ügyfél Ügyfélcsoport Engedélykötés Témakörterület
Area1_Machine1 Area1Machines Area1-Pub Area1Messages -Topic Sablon: areas/area1/machines/#
Area1_Machine2 Area1Machines Area1-Sub Area1Messages - Téma sablon: areas/area1/machines/#
Area2_Machine1 Area2Machines Area2-Pub Area2Messages -Téma sablon: areas/area2/machines/#
Area2_Machine2 Area2Machines Area2-Sub Area2Messages -Téma Sablon: areas/area2/machines/#

2. példa:

Tegyük fel, hogy az előző példához egy további követelmény is szükséges: minden terület rendelkezik felügyeleti ügyfelekkel a gépekkel együtt, és a gépeknek nem szabad hozzáférniük a közzétételhez, ha bármelyikük veszélybe kerül. Másrészt a felügyeleti ügyfeleknek közzétételi hozzáférésre van szükségük ahhoz, hogy parancsokat küldjenek a gépekre, és feliratkozzanak a hozzáférésre, hogy telemetriát kapjanak a gépekről.

Ügyfél szerepkör Téma/témaszűrő
Area1_Machine1 Publisher területek/terület1/gépek/gép1
Subscriber területek/terület1/mgmt/#
Area1_Mgmt1 Publisher területek/terület1/menedzsment/gép1
Subscriber területek/terület1/gépek/#
Area2_Machine1 Publisher területek/terület2/gépek/gép1
Subscriber területek/terület2/kezelés/ #
Area2_ Mgmt1 Publisher területek/terület2/mgmt/gép1
Subscriber területek/terület2/gépek/ #

Konfiguráció:

  • Hozzon létre ügyfélerőforrásokat minden egyes géphez és felügyeleti ügyfélhez.
  • Területenként két ügyfélcsoportot hozhat létre: egyet a felügyeleti ügyfélhez, a másikat a gépekhez.
  • Hozzon létre két témakörteret minden területhez: az egyik telemetriai témaköröket, a másik pedig parancstémaköröket jelöl.
  • Hozzon létre két engedélykötést az egyes területek felügyeleti ügyfelei számára, hogy közzétegye a témakörterület parancsait, és feliratkozzon a telemetriai témakörterületre.
  • Hozzon létre két engedélykötést az egyes területek gépei számára, hogy feliratkozhassanak a parancsok tématerületére és közzétegyenek a telemetria tématerületén.
Ügyfél Ügyfélcsoport Engedélykötés Téma/témaszűrő
Area1_Machine1 Area1Machines Area1Machines-Pub Area1Telemetry -Topic Sablon: areas/area1/machines/#
Area1Machines-Sub Area1Commands - Téma Sablon: areas/area1/mgmt/#
Area1_MgmtClient1 Terület1Menedzsment Area1Mgmt-Pub Area1Commands -Téma Sablon: areas/area1/mgmt/#
Area1Mgmt-Sub Area1Telemetry -Topic Sablon: területek/area1/gépek/#
Area2_Machine1 Area2Machines Area2Machines-Pub Area2Telemetry -Topic Sablon: areas/area2/machines/#
Area2Machines-Sub Area2Commands - Topic Sablon: areas/area2/mgmt/#
Area2_ MgmtClient1 Area2Mgmt Area2Mgmt-Pub Area2Commands -Téma Sablon: areas/area2/mgmt/#
Area2Mgmt-Sub Area2Telemetry - Téma sablon: areas/area2/machines/#

Finomhangolt hozzáférés-szabályozás

A részletes hozzáférés-vezérléssel szabályozhatja az ügyfélcsoporton belüli összes ügyfél engedélyezését a saját témakörének közzétételére vagy előfizetésére. Ez a részletes hozzáférés-vezérlés a témakörsablonok változóinak használatával érhető el.

Annak ellenére, hogy az ügyfélcsoportok hozzáférhetnek egy adott témakörterülethez az összes témakörsablonjával, a témakörsablonokon belüli változók lehetővé teszik annak szabályozását, hogy az ügyfélcsoporton belüli egyes ügyfelek közzétehessék vagy előfizethessenek a saját témakörére. Ha például a "gépek" ügyfélcsoport két ügyfelet tartalmaz: "machine1" és "machine2". Változók használatával lehetővé teheti, hogy csak a machine1 tegye közzé telemetriáját az MQTT "machines/machine1/telemetry" témakörében, míg a machine2 az MQTT "machines/machine2/telemetry" témakörében tud üzeneteket közzétenni.

A változók ügyfélhitelesítési neveket vagy ügyfélattribútumokat jelölnek. Az MQTT-közvetítővel folytatott kommunikáció során minden ügyfél lecseréli az MQTT-témakörben szereplő változót egy helyettesítő értékre. A ${client.authenticationName} változót például az egyes ügyfelek hitelesítési nevére cserélik: machine1, machine2 stb. Az MQTT-közvetítő csak azokhoz az ügyfelekhez engedélyezi a hozzáférést, amelyek a hitelesítési nevüknek vagy a megadott attribútum értékének megfelelő helyettesítő értékkel rendelkeznek.

Vegyük például a következő konfigurációt:

  • Ügyfélcsoport: Gépek
  • Témakörterület: Gépek Telemetria
    • Témakörsablon: "machines/${client.authenticationName}/telemetria".
  • Engedélykötés: ügyfélcsoport: gépek; témakörterület: machinesTelemetry; Engedély: közzétevő

Ezzel a konfigurációval csak a "machine1" ügyfél-hitelesítéssel rendelkező ügyfél tehet közzé a "machines/machine1/telemetry" témakört, és csak a "2. gép" ügyfél-hitelesítéssel rendelkező gép tehet közzé a "machines/machine2/telemetry" témakört, és így tovább. Ennek megfelelően a Machine2 nem tehet közzé hamis információkat az 1. gép nevében, annak ellenére, hogy ugyanahhoz a témakörterülethez fér hozzá, és fordítva.

A részletes hozzáférés-vezérlési példa ábrája.

Következő lépések:

További információ az engedélyezésről és a hitelesítésről: