Condividi tramite


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.

Diagram of the access control model.

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.

Diagram of the granular access control example.

Passaggi successivi:

Altre informazioni sull'autorizzazione e l'autenticazione: