Controllo di accesso per i client MQTT
Il controllo di accesso consente di gestire l'autorizzazione dei client a pubblicare o sottoscrivere argomenti usando un modello di controllo degli accessi in base al ruolo. Data l'enorme scala degli ambienti IoT, l'assegnazione dell'autorizzazione per ogni client a ogni argomento è incredibilmente noiosa. la funzionalità broker MQTT di Griglia di eventi di Azure affronta questa sfida di scalabilità tramite il raggruppamento di client e argomenti in gruppi client e spazi di argomenti.
I componenti principali del modello di controllo di accesso sono:
Un client rappresenta il dispositivo o l'applicazione che deve pubblicare e/o sottoscrivere argomenti MQTT.
Un gruppo client è un set di client che necessitano dello stesso accesso per pubblicare e/o sottoscrivere lo stesso set di argomenti MQTT. Il gruppo client rappresenta l'entità nel modello di controllo degli accessi in base al ruolo.
Uno spazio di argomenti rappresenta più argomenti tramite un set di modelli di argomento. I modelli di argomento sono un'estensione dei filtri MQTT che supportano le variabili, insieme ai caratteri jolly MQTT. Ogni spazio di argomenti rappresenta gli argomenti che devono essere usati dallo stesso set di client per comunicare. Lo spazio degli argomenti rappresenta la risorsa nel modello di controllo degli accessi in base al ruolo.
Un'associazione di autorizzazioni concede l'accesso a un gruppo client specifico per pubblicare o sottoscrivere gli argomenti rappresentati da uno spazio argomento specifico. L'associazione di autorizzazioni rappresenta il ruolo nel modello controllo degli accessi in base al ruolo.
Esempi:
Gli esempi seguenti illustrano in dettaglio come configurare il modello di controllo di accesso in base ai requisiti seguenti.
Esempio 1:
Una fabbrica ha più aree con ogni area, incluse le macchine che devono comunicare tra loro. Tuttavia, i computer di altre aree della fabbrica non sono autorizzati a comunicare con loro.
Client | Ruolo | Filtro argomento/argomento |
---|---|---|
Area1_Machine1 | Autore | aree/area1/computer/machine1 |
Area1_Machine2 | Sottoscrittore | aree/area1/macchine/ # |
Area2_Machine1 | Autore | aree/area2/computer/machine1 |
Area2_Machine2 | Sottoscrittore | aree/area2/macchine/ # |
Configurazione
- Creare una risorsa client per ogni computer.
- Creare un gruppo client per ogni computer dell'area di fabbrica.
- Creare uno spazio degli argomenti per ogni area che rappresenta gli argomenti che le macchine dell'area comunicano.
- Creare due associazioni di autorizzazione per il gruppo client di ogni area per pubblicare e sottoscrivere lo spazio degli argomenti dell'area corrispondente.
Client | Gruppo di client | Associazione di autorizzazioni | Spazio argomenti |
---|---|---|---|
Area1_Machine1 | Area1Machines | Area1-Pub | Area1Messages -Modello di argomento: aree/area1/computer/ # |
Area1_Machine2 | Area1Machines | Area1-Sub | Area1Messages -Modello di argomento: aree/area1/computer/ # |
Area2_Machine1 | Area2Machines | Area2-Pub | Area2Messages -Modello argomento: aree/area2/computer/ # |
Area2_Machine2 | Area2Machines | Area2-Sub | Area2Messages -Modello argomento: aree/area2/computer/ # |
Esempio 2:
Si supponga un requisito aggiuntivo per l'esempio precedente: ogni area dispone di client di gestione insieme ai computer e i computer non devono avere accesso alla pubblicazione in caso di compromissione. D'altra parte, i client di gestione devono pubblicare l'accesso per inviare comandi ai computer e sottoscrivere l'accesso per ricevere i dati di telemetria dai computer.
Client | Ruolo | Filtro argomento/argomento |
---|---|---|
Area1_Machine1 | Autore | aree/area1/computer/machine1 |
Sottoscrittore | aree/area1/mgmt/ # | |
Area1_Mgmt1 | Autore | areas/area1/mgmt/machine1 |
Sottoscrittore | aree/area1/macchine/ # | |
Area2_Machine1 | Autore | aree/area2/computer/machine1 |
Sottoscrittore | aree/area2/mgmt/ # | |
Area2_ Mgmt1 | Autore | areas/area2/mgmt/machine1 |
Sottoscrittore | aree/area2/macchine/ # |
Configuration (Configurazione):
- Creare risorse client per ogni computer e client di gestione.
- Creare due gruppi client per area: uno per il client di gestione e un altro per i computer.
- Creare due spazi argomento per ogni area: uno che rappresenta gli argomenti di telemetria e un altro che rappresenta gli argomenti relativi ai comandi.
- Creare due associazioni di autorizzazione per i client di gestione di ogni area per pubblicare nello spazio argomenti dei comandi e sottoscrivere lo spazio degli argomenti di telemetria.
- Creare due associazioni di autorizzazione per i computer di ogni area per sottoscrivere i comandi Spazio argomenti e pubblicarlo nello spazio degli argomenti di telemetria.
Client | Gruppo di client | Associazione di autorizzazioni | Filtro argomento/argomento |
---|---|---|---|
Area1_Machine1 | Area1Machines | Area1Machines-Pub | Area1Telemetry -Modello di argomento: aree/area1/machines/ # |
Area1Machines-Sub | Area1Commands -Modello di argomento: aree/area1/mgmt/ # | ||
Area1_MgmtClient1 | Area1Mgmt | Area1Mgmt-Pub | Area1Commands -Modello di argomento: aree/area1/mgmt/ # |
Area1Mgmt-Sub | Area1Telemetry -Modello di argomento: aree/area1/machines/ # | ||
Area2_Machine1 | Area2Machines | Area2Machines-Pub | Area2Telemetry -Modello argomento: aree/area2/computer/ # |
Area2Machines-Sub | Area2Commands -Modello di argomento: aree/area2/mgmt/ # | ||
Area2_ MgmtClient1 | Area2Mgmt | Area2Mgmt-Pub | Area2Commands -Modello di argomento: aree/area2/mgmt/ # |
Area2Mgmt-Sub | Area2Telemetry -Modello argomento: aree/area2/computer/ # |
Controllo di accesso granulare
Il controllo di accesso granulare consente di controllare l'autorizzazione di ogni client all'interno di un gruppo client per pubblicare o sottoscrivere il proprio argomento. Questo controllo di accesso granulare viene ottenuto usando le variabili nei modelli di argomento.
Anche se un gruppo client può avere accesso a un determinato spazio di argomenti con tutti i relativi modelli di argomento, le variabili all'interno dei modelli di argomento consentono di controllare l'autorizzazione di ogni client all'interno di tale gruppo client per pubblicare o sottoscrivere il proprio argomento. Ad esempio, se il gruppo client "machines" include due client: "machine1" e "machine2". Usando le variabili, è possibile consentire solo a machine1 di pubblicare i dati di telemetria solo nell'argomento MQTT "machines/machine1/telemetry" e "machine2" per pubblicare messaggi nell'argomento MQTT "machines/machine2/telemetry".
Le variabili rappresentano nomi di autenticazione client o attributi client. Durante la comunicazione con il broker MQTT, ogni client sostituirà la variabile nell'argomento MQTT con un valore sostituito. Ad esempio, la variabile ${client.authenticationName} verrà sostituita con il nome di autenticazione di ogni client: machine1, machine2 e così via. Il broker MQTT consentirà l'accesso solo ai client con un valore sostituito corrispondente al nome di autenticazione o al valore dell'attributo specificato.
Si consideri ad esempio la configurazione seguente:
- Gruppo client: Computer
- Spazio degli argomenti: MachinesTelemetry
- Modello di argomento "machines/${client.authenticationName}/telemetry".
- Associazione di autorizzazioni: gruppo client: computer; spazio argomenti: machinesTelemetry; Autorizzazione: autore
Con questa configurazione, solo il client con nome di autenticazione client "machine1" può pubblicare nell'argomento "machines/machine1/telemetry" e solo il computer con nome di autenticazione client "machine 2" può pubblicare nell'argomento "machines/machine2/telemetry" e così via. Di conseguenza, machine2 non può pubblicare informazioni false per conto di machine1, anche se ha accesso allo stesso spazio degli argomenti e viceversa.
Passaggi successivi:
Altre informazioni sull'autorizzazione e l'autenticazione: