Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 il principale nel modello RBAC.
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, oltre ai caratteri jolly MQTT. Ogni spazio di argomenti rappresenta gli argomenti che devono essere usati dallo stesso set di client per comunicare. Lo spazio di argomenti rappresenta la risorsa nel modello RBAC.
Un'associazione di autorizzazioni concede l'accesso a un gruppo clienti specifico per pubblicare o sottoscrivere gli argomenti rappresentati da uno spazio di argomenti specifico. Il collegamento delle autorizzazioni rappresenta il ruolo nel modello RBAC (controllo degli accessi basato sul 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, ognuna delle quali include macchine che devono comunicare tra di loro. Tuttavia, i computer di altre aree della fabbrica non sono autorizzati a comunicare con loro.
| Client | Role | Argomento/Filtro Argomento |
|---|---|---|
| Area1_Machine1 | Editore | areas/area1/machines/machine1 |
| Area1_Machine2 | Subscriber | areas/area1/machines/# |
| Area2_Machine1 | Editore | areas/area2/machines/machine1 |
| Area2_Machine2 | Subscriber | areas/area2/machines/# |
Configurazione
- Creare una risorsa client per ogni computer.
- Creare un gruppo client per ogni computer dell'area di fabbrica.
- Creare uno spazio tematico per ogni area in cui le macchine dell'area comunicano.
- Creare due associazioni di autorizzazioni per il gruppo di client di ciascuna area, in modo che possa pubblicare e sottoscrivere lo spazio degli argomenti dell'area corrispondente.
| Client | Gruppo di client | Collegamento di permessi | Spazio dei temi |
|---|---|---|---|
| Area1_Machine1 | Area1Machines | Area1-Pub | Area1Messages -Modello argomento: areas/area1/machines/# |
| Area1_Machine2 | Area1Machines | Area1-Sub | Area1Messages -Modello argomento: areas/area1/machines/# |
| Area2_Machine1 | Area2Machines | Area2-Pub | Area2Messages -Modello argomento: areas/area2/machines/# |
| Area2_Machine2 | Area2Machines | Area2-Sub | Area2Messages -Modello argomento: areas/area2/machines/# |
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 | Role | Argomento/Filtro Argomento |
|---|---|---|
| Area1_Machine1 | Editore | areas/area1/machines/machine1 |
| Subscriber | areas/area1/mgmt/# | |
| Area1_Mgmt1 | Editore | areas/area1/mgmt/machine1 |
| Subscriber | areas/area1/machines/# | |
| Area2_Machine1 | Editore | areas/area2/machines/machine1 |
| Subscriber | areas/area2/mgmt/# | |
| Area2_ Mgmt1 | Editore | areas/area2/mgmt/machine1 |
| Subscriber | areas/area2/machines/# |
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 autorizzazioni per i client di gestione di ciascuna area, in modo che possano pubblicare dati nello spazio dei comandi e sottoscrivere lo spazio dei dati di telemetria.
- Creare due associazioni di autorizzazioni per le macchine di ciascuna area, in modo che possano sottoscrivere lo spazio degli argomenti dei comandi e pubblicare dati nello spazio degli argomenti di telemetria.
| Client | Gruppo di client | Collegamento di permessi | Argomento/Filtro Argomento |
|---|---|---|---|
| Area1_Machine1 | Area1Machines | Area1Machines-Pub | Area1Telemetry -Modello argomento: areas/area1/machines/# |
| Area1Machines-Sub | Area1Commands - Modello argomento: areas/area1/mgmt/# | ||
| Area1_MgmtClient1 | Area1Mgmt | Area1Mgmt-Pub | Area1Commands - Modello del Tema: aree/area1/mgmt/# |
| Area1Mgmt-Sub | Area1Telemetry -Modello argomento: areas/area1/machines/# | ||
| Area2_Machine1 | Area2Machines | Area2Machines-Pub | Area2Telemetry -Modello argomento: areas/area2/machines/# |
| Area2Machines-Sub | Area2Commands -Modello argomento: areas/area2/mgmt/# | ||
| Area2_ MgmtClient1 | Area2Mgmt | Area2Mgmt-Pub | Area2Commands -Modello argomento: areas/area2/mgmt/# |
| Area2Mgmt-Sub | Area2Telemetry -Modello argomento: areas/area2/machines/# |
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: Macchine
- Sezione: MachinesTelemetry
- Modello di argomento "machines/${client.authenticationName}/telemetry".
- Associazione delle autorizzazioni: gruppo di client: macchine; spazio degli argomenti: machinesTelemetry; Autorizzazione: editore
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: