Share via


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. Az ügyfélcsoport az RBAC-modellben szereplő tagot jelöli.

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.

Diagram of the access control model.

Examples:

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.

Client Szerepkör Témakör/témakörszűrő
Area1_Machine1 Publisher területek/terület1/gépek/gép1
Area1_Machine2 Előfizető területek/terület1/gépek/ #
Area2_Machine1 Publisher területek/terület2/gépek/gép1
Area2_Machine2 Előfizető 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 engedélykötést az egyes területek ügyfélcsoportjaihoz a megfelelő terület témakörterületének közzétételéhez és előfizetéséhez.
Client Ügyfélcsoport Engedélykötés Témakörterület
Area1_Machine1 Area1Machines Area1-Pub Area1Messages -Topic Template: areas/area1/machines/ #
Area1_Machine2 Area1Machines Terület1-alterület Area1Messages -Topic Template: areas/area1/machines/ #
Area2_Machine1 Area2Machines Area2-Pub Area2Messages -Topic Template: areas/area2/machines/ #
Area2_Machine2 Area2Machines Terület2-alterület Area2Messages -Topic Template: 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.

Client Szerepkör Témakör/témakörszűrő
Area1_Machine1 Publisher területek/terület1/gépek/gép1
Előfizető területek/terület1/mgmt/ #
Area1_Mgmt1 Publisher területek/terület1/mgmt/gép1
Előfizető területek/terület1/gépek/ #
Area2_Machine1 Publisher területek/terület2/gépek/gép1
Előfizető területek/terület2/mgmt/ #
Area2_ Mgmt1 Publisher területek/terület2/mgmt/gép1
Előfizető területek/terület2/gépek/ #

Configuration:

  • 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épeihez a Témakörterület parancsokra való feliratkozáshoz és a telemetria témakörterületén való közzétételhez.
Client Ügyfélcsoport Engedélykötés Témakör/témakörszűrő
Area1_Machine1 Area1Machines Area1Machines-Pub Area1Telemetry -Topic Template: areas/area1/machines/ #
Area1Machines-Sub Area1Commands -Topic Template: areas/area1/mgmt/ #
Area1_MgmtClient1 Terület1Mgmt 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/ #

Részletes hozzáférés-vezérlé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 a "machines/machine1/telemetry" és a "machine2" MQTT-témakör "machines/machine2/telemetry" témakörében.

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: MachinesTelemetry
    • 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.

Diagram of the granular access control example.

Next steps:

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