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.
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.
Next steps:
További információ az engedélyezésről és a hitelesítésről: