Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med åtkomstkontroll kan du hantera auktoriseringen av klienter för att publicera eller prenumerera på ämnen med hjälp av en rollbaserad åtkomstkontrollmodell. Med tanke på den enorma omfattningen av IoT-miljöer är det otroligt tråkigt att tilldela behörighet för varje klient till varje ämne. Azure Event Grids MQTT-koordinatorfunktion hanterar den här skalningsutmaningen genom att gruppera klienter och ämnen i klientgrupper och ämnesutrymmen.
Huvudkomponenterna i åtkomstkontrollmodellen är:
En klient representerar den enhet eller det program som behöver publicera och/eller prenumerera på MQTT-ämnen.
En klientgrupp är en uppsättning klienter som behöver samma åtkomst för att publicera och/eller prenumerera på samma uppsättning MQTT-ämnen. Klientgruppen representerar huvudnamnet i RBAC-modellen.
Ett ämnesutrymme representerar flera ämnen via en uppsättning ämnesmallar. Ämnesmallar är ett tillägg av MQTT-filter som stöder variabler, tillsammans med MQTT-jokertecken. Varje ämnesutrymme representerar de ämnen som samma uppsättning klienter behöver använda för att kommunicera. Ämnesutrymmet representerar resursen i RBAC-modellen.
En behörighetsbindning ger åtkomst till en specifik klientgrupp för att publicera eller prenumerera på ämnen som representeras av ett visst ämnesutrymme. Behörighetsbindningen representerar rollen i RBAC-modellen.
 
Exempel:
I följande exempel beskrivs hur du konfigurerar åtkomstkontrollmodellen baserat på följande krav.
Exempel 1:
En fabrik har flera områden med varje område, inklusive datorer som behöver kommunicera med varandra. Datorer från andra delar av fabriken får dock inte kommunicera med dem.
| Client | Roll | Ämnes-/ämnesfilter | 
|---|---|---|
| Area1_Machine1 | Publisher | area1/machines/machine1 | 
| Area1_Machine2 | Prenumerant | area1/machines/ # | 
| Area2_Machine1 | Publisher | area2/machines/machine1 | 
| Area2_Machine2 | Prenumerant | area2/machines/ # | 
Konfiguration
- Skapa en klientresurs för varje dator.
- Skapa en klientgrupp för varje fabriksområdes datorer.
- Skapa ett ämnesutrymme för varje område som representerar de ämnen som områdets datorer kommunicerar över.
- Skapa två behörighetsbindningar för varje områdes klientgrupp för att publicera och prenumerera på motsvarande områdes ämnesutrymme.
| Client | Klientgrupp | Behörighetsbindning | Ämnesutrymme | 
|---|---|---|---|
| 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 | Area2-Sub | Area2Messages -Topic Template: areas/area2/machines/ # | 
Exempel 2:
Vi antar ett extra krav för föregående exempel: varje område har hanteringsklienter tillsammans med datorerna och datorerna får inte ha åtkomst till publicering om någon av dem skulle komprometteras. Å andra sidan behöver hanteringsklienterna publiceringsåtkomst för att skicka kommandon till datorerna och prenumerera på åtkomst för att ta emot telemetri från datorerna.
| Client | Roll | Ämnes-/ämnesfilter | 
|---|---|---|
| Area1_Machine1 | Publisher | area1/machines/machine1 | 
| Prenumerant | area1/mgmt/ # | |
| Area1_Mgmt1 | Publisher | area1/mgmt/machine1 | 
| Prenumerant | area1/machines/ # | |
| Area2_Machine1 | Publisher | area2/machines/machine1 | 
| Prenumerant | area2/mgmt/ # | |
| Area2_ Mgmt1 | Publisher | area2/mgmt/machine1 | 
| Prenumerant | area2/machines/ # | 
Konfiguration:
- Skapa klientresurser för varje dator och hanteringsklient.
- Skapa två klientgrupper per område: en för hanteringsklienten och en annan för datorerna.
- Skapa två ämnesutrymmen för varje område: ett som representerar telemetriämnen och ett annat som representerar kommandoämnen.
- Skapa två behörighetsbindningar för varje områdes hanteringsklienter för att publicera till kommandona Ämnesutrymme och prenumerera på telemetriämnesutrymmet.
- Skapa två behörighetsbindningar för varje områdes datorer för att prenumerera på kommandona Ämnesutrymme och publicera till telemetriämnesutrymmet.
| Client | Klientgrupp | Behörighetsbindning | Ämnes-/ämnesfilter | 
|---|---|---|---|
| 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/ # | 
Detaljerad åtkomstkontroll
Med detaljerad åtkomstkontroll kan du styra auktoriseringen för varje klient i en klientgrupp för att publicera eller prenumerera på ett eget ämne. Den här detaljerade åtkomstkontrollen uppnås med hjälp av variabler i ämnesmallar.
Även om en klientgrupp kan ha åtkomst till ett visst ämnesutrymme med alla dess ämnesmallar kan du med variabler i ämnesmallar styra auktoriseringen av varje klient i klientgruppen för att publicera eller prenumerera på ett eget ämne. Om klientgruppen "datorer" till exempel innehåller två klienter: "machine1" och "machine2". Med hjälp av variabler kan du endast tillåta att machine1 publicerar sin telemetri på MQTT-ämnet "machines/machine1/telemetry" och "machine2" för att publicera meddelanden i MQTT-ämnet "machines/machine2/telemetry".
Variablerna representerar antingen klientautentiseringsnamn eller klientattribut. Under kommunikationen med MQTT-asynkron meddelandekö ersätter varje klient variabeln i MQTT-ämnet med ett ersatt värde. Variabeln ${client.authenticationName} skulle till exempel ersättas med autentiseringsnamnet för varje klient: machine1, machine2 osv. MQTT-koordinatorn skulle endast tillåta åtkomst till klienter som har ett ersatt värde som matchar antingen deras autentiseringsnamn eller värdet för det angivna attributet.
Tänk till exempel på följande konfiguration:
- Klientgrupp: Datorer
- Ämnesutrymme: MachinesTelemetry - Ämnesmallen "machines/${client.authenticationName}/telemetri".
 
- Behörighetsbindning: klientgrupp: datorer; topic space: machinesTelemetry; Behörighet: utgivare
Med den här konfigurationen kan endast klienten med klientautentiseringsnamnet "machine1" publicera på ämnet "machines/machine1/telemetry", och endast datorn med klientautentiseringsnamnet "machine 2" kan publicera i ämnet "datorer/maskin2/telemetri" och så vidare. Därför kan machine2 inte publicera falsk information på uppdrag av machine1, även om den har åtkomst till samma ämnesutrymme och vice versa.
 
Nästa steg:
Läs mer om auktorisering och autentisering: