Creare ed effettuare il provisioning di dispositivi IoT Edge su larga scala in Linux usando la chiave simmetrica
Si applica a: IoT Edge 1.5 IoT Edge 1.4
Importante
IoT Edge 1.5 LTS e IoT Edge 1.4 LTS sono versioni supportate. IoT Edge 1.4 LTS raggiungerà il fine vita il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.
Questo articolo fornisce istruzioni end-to-end per il provisioning automatico di uno o più dispositivi IoT Edge Linux usando chiavi simmetriche. È possibile effettuare automaticamente il provisioning di dispositivi Azure IoT Edge con servizio Device Provisioning in hub IoT di Azure (DPS). Se non si ha familiarità con il processo di provisioning automatico, vedere la panoramica sul provisioning prima di continuare.
Le attività sono le seguenti:
- Creare una registrazione singola per un singolo dispositivo o una registrazione di gruppo per un set di dispositivi.
- Installare il runtime IoT Edge e connettersi all'hub IoT.
Suggerimento
Per un'esperienza semplificata, provare lo strumento di configurazione di Azure IoT Edge. Questo strumento da riga di comando, attualmente in anteprima pubblica, installa IoT Edge nel dispositivo e ne esegue il provisioning usando il servizio Device Provisioning e l'attestazione con chiave simmetrica.
L'attestazione con chiave simmetrica costituisce un approccio semplice per autenticare un dispositivo con un'istanza del servizio Device Provisioning. Questo metodo di attestazione rappresenta un'esperienza di "Hello World" per gli sviluppatori che non hanno familiarità con il provisioning dei dispositivi o che non possiedono requisiti di sicurezza restrittivi. L'attestazione del dispositivo mediante un TPM o certificati X.509 è più sicura e deve essere usata per requisiti di sicurezza più rigorosi.
Prerequisiti
Risorse cloud
- Un hub IoT attivo
- Un'istanza del servizio Device Provisioning in Hub IoT in Azure, collegata all'hub IoT
- Se non si dispone di un'istanza del servizio Device Provisioning, è possibile seguire le istruzioni riportate nelle sezioni Creare una nuova istanza del servizio Device Provisioning in hub IoT e Collegare l'hub IoT e il servizio Device Provisioning dell'argomento di avvio rapido sul servizio Device Provisioning in hub IoT.
- Con il servizio Device Provisioning in esecuzione, copiare il valore di Ambito ID dalla pagina di panoramica. Questo valore viene usato quando si configura il runtime IoT Edge.
Requisiti dei dispositivi
Un dispositivo Linux fisico o virtuale che fungerà da dispositivo IoT Edge.
Sarà necessario definire un ID di registrazione univoco per identificare ogni dispositivo. È possibile usare l'indirizzo MAC, il numero di serie o informazioni univoche dal dispositivo. Ad esempio, si può usare una combinazione di indirizzo MAC e numero di serie che formano la stringa seguente per un ID di registrazione: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
. I caratteri validi sono i caratteri alfanumerici minuscoli e il trattino (-
).
Creare una registrazione nel servizio Device Provisioning
Creare una registrazione per effettuare il provisioning di uno o più dispositivi tramite il servizio Device Provisioning.
Se si vuole effettuare il provisioning di un singolo dispositivo IoT Edge, creare una registrazione singola. Se è necessario effettuare il provisioning di più dispositivi, seguire la procedura per creare una registrazione di gruppo nel servizio Device Provisioning.
Quando si crea una registrazione nel servizio Device Provisioning, si ha la possibilità di dichiarare un valore di Stato iniziale dispositivo gemello. Nel dispositivo gemello è possibile impostare tag per raggruppare i dispositivi in base a una qualsiasi metrica necessaria nella propria soluzione, come l'area, l'ambiente, la località o il tipo di dispositivo. Questi tag vengono usati per creare distribuzioni automatiche.
Per altre informazioni sulle registrazioni nel servizio Device Provisioning, vedere Come gestire le registrazioni dei dispositivi.
Creare una registrazione singola nel servizio Device Provisioning
Suggerimento
I passaggi descritti in questo articolo sono relativi al portale di Azure, ma è anche possibile creare registrazioni singole usando l'interfaccia della riga di comando di Azure. Per altre informazioni, vedere az iot dps enrollment. Come parte del comando dell'interfaccia della riga di comando, usare il flag edge-enabled per specificare che la registrazione è per un dispositivo IoT Edge.
Nel portale di Azure passare all'istanza del servizio Device Provisioning in hub IoT.
In le impostazioni selezionare Gestisci registrazioni.
Selezionare Aggiungi registrazione singola, quindi completare la procedura seguente per configurare la registrazione:
Per Meccanismo selezionare Chiave simmetrica.
Creare un ID registrazione univoco per il dispositivo.
Facoltativamente, specificare un ID dispositivo hub IoT per il dispositivo. È possibile usare gli ID dispositivo per identificare come destinazione un singolo dispositivo per la distribuzione di moduli. Se non si specifica un ID dispositivo, viene usato l'ID di registrazione.
Selezionare Vero per dichiarare che la registrazione è per un dispositivo IoT Edge.
Facoltativamente, aggiungere un valore di tag allo Stato iniziale dispositivo gemello. È possibile usare tag per identificare come destinazione gruppi di dispositivi per la distribuzione di moduli. Ad esempio:
{ "tags": { "environment": "test" }, "properties": { "desired": {} } }
Seleziona Salva.
Copiare il valore della Chiave primaria della registrazione singola per usarlo durante l'installazione del runtime IoT Edge.
Ora che esiste una registrazione per questo dispositivo, il runtime IoT Edge può effettuare automaticamente il provisioning del dispositivo durante l'installazione.
Installare IoT Edge
In questa sezione si prepara la macchina virtuale Linux o il dispositivo fisico per IoT Edge. Quindi si installa IoT Edge.
Eseguire i comandi seguenti per aggiungere il repository di pacchetti, quindi aggiungere la chiave di firma del pacchetto Microsoft all'elenco di chiavi attendibili.
Importante
Il 30 giugno 2022, il sistema operativo Raspberry Pi OS Stretch è stato ritirato dall'elenco dei sistemi operativi supportati di livello 1. Per evitare potenziali vulnerabilità di sicurezza, aggiornare il sistema operativo host a Bullseye.
Per i sistemi operativi della piattaforma supportati di livello 2, i pacchetti di installazione vengono resi disponibili nelle versioni di Azure IoT Edge. Vedere i passaggi di installazione in Installazione offline o di una versione specifica.
L'installazione può essere eseguita con pochi comandi. Aprire un terminale ed eseguire i comandi seguenti:
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
22.04:
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
20.04:
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
Per altre informazioni sulle versioni del sistema operativo, vedere Piattaforme supportate da Azure IoT Edge.
Nota
I pacchetti software di Azure IoT Edge sono soggetti alle condizioni di licenza disponibili in ogni pacchetto (in usr/share/doc/{package-name}
o nella directory LICENSE
). Prima di usare un pacchetto, leggere le condizioni di licenza. L'installazione e l'uso di un pacchetto implicano l'accettazione di tali condizioni. Se non si accettano le condizioni di licenza, non usare il pacchetto.
Installare un motore di contenitore
Azure IoT Edge si basa su un runtime del contenitore compatibile con OCI. Per gli scenari di produzione è consigliabile usare il motore Moby. Il motore Moby è il motore di contenitore ufficialmente supportato con IoT Edge. Le immagini del contenitore Docker CE/EE sono compatibili con il runtime di Moby. Se si usano pacchetti snap di Ubuntu Core, lo snap di Docker è gestito da Canonical ed è supportato per gli scenari di produzione.
Installare il motore Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
Per impostazione predefinita, il motore di contenitore non imposta limiti di dimensioni per i log dei contenitori. Nel corso del tempo questo può causare il riempimento del dispositivo con i log e l'esaurimento dello spazio su disco. È possibile, tuttavia, configurare il log per la visualizzazione locale, anche se è facoltativo. Per altre informazioni sulla configurazione della registrazione, vedere Elenco di controllo della distribuzione di produzione.
I passaggi seguenti illustrano come configurare il contenitore per l'uso del driver di registrazione local
come meccanismo di registrazione.
Creare o modificare il file di configurazione del daemon Docker esistente
sudo nano /etc/docker/daemon.json
Impostare il driver di registrazione predefinito sul driver di registrazione
local
, come illustrato nell'esempio.{ "log-driver": "local" }
Riavviare il motore di contenitore per applicare le modifiche.
sudo systemctl restart docker
Installare il runtime IoT Edge.
Il servizio IoT Edge fornisce e gestisce gli standard di sicurezza nel dispositivo IoT Edge. Il servizio viene avviato a ogni avvio del dispositivo e ne esegue il bootstrap avviando la parte restante del runtime IoT Edge.
Nota
A partire dalla versione 1.2, il servizio di identità IoT controlla il provisioning e la gestione delle identità per IoT Edge e per altri componenti del dispositivo che devono comunicare con l'hub IoT.
I passaggi in questa sezione rappresentano il processo tipico per l'installazione dell'ultima versione di IoT Edge in un dispositivo dotato di connessione Internet. Se è necessario installare una versione specifica, ad esempio una versione non definitiva, o se è necessario eseguire l'installazione offline, seguire i passaggi di Installazione offline o di una versione specifica riportati più avanti in questo articolo.
Suggerimento
Se già si dispone di un dispositivo IoT Edge che esegue una versione precedente e si desidera eseguire l'aggiornamento all'ultima versione, seguire la procedura descritta in Aggiornare il daemon di sicurezza e il runtime IoT Edge. Le versioni successive sono tanto diverse dalle versioni precedenti di IoT Edge che occorrono passaggi specifici per l'aggiornamento.
Installare l'ultima versione di IoT Edge e il pacchetto del servizio di identità IoT, se non è già aggiornato:
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge defender-iot-micro-agent-edge
Il pacchetto defender-iot-micro-agent-edge
facoltativo include il micro-agente di sicurezza di Microsoft Defender per IoT, che fornisce visibilità dell'endpoint nella gestione della postura di sicurezza, nelle vulnerabilità, nel rilevamento delle minacce, nella gestione della flotta e altro, facilitando la protezione dei dispositivi IoT Edge. È consigliabile installare il micro agente con l'agente Edge per abilitare il monitoraggio della sicurezza e la protezione avanzata dei dispositivi Edge. Per altre informazioni su Microsoft Defender per IoT, vedere Che cos'è Microsoft Defender per IoT per i generatori di dispositivi.
Effettuare il provisioning del dispositivo con la relativa identità cloud
Dopo aver installato il runtime nel dispositivo, configurarlo con le informazioni da usare per connettersi al servizio Device Provisioning e all'hub IoT.
Preparare le informazioni seguenti:
- Valore Ambito ID del servizio Device Provisioning
- ID di registrazione del dispositivo creato
- Chiave primaria per una registrazione singola oppure chiave derivata per i dispositivi che usano una registrazione di gruppo.
Creare un file di configurazione per il dispositivo in base a un file modello fornito come parte dell'installazione di IoT Edge.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
Aprire il file di configurazione nel dispositivo IoT Edge.
sudo nano /etc/aziot/config.toml
Trovare la sezione Provisioning del file. Rimuovere il commento dalle righe per il provisioning DPS con chiave simmetrica e assicurarsi che tutte le altre righe di provisioning siano impostate come commento.
# DPS provisioning with symmetric key [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "PASTE_YOUR_SCOPE_ID_HERE" # Uncomment to send a custom payload during DPS registration # payload = { uri = "PATH_TO_JSON_FILE" } [provisioning.attestation] method = "symmetric_key" registration_id = "PASTE_YOUR_REGISTRATION_ID_HERE" symmetric_key = { value = "PASTE_YOUR_PRIMARY_KEY_OR_DERIVED_KEY_HERE" } # auto_reprovisioning_mode = Dynamic
Aggiornare i valori di
id_scope
,registration_id
esymmetric_key
con le informazioni sul dispositivo e sul servizio Device Provisioning.Il parametro della chiave simmetrica può accettare come valore una chiave inline, un URI di file o un URI PKCS#11. Rimuovere il commento da una sola riga di chiave simmetrica, in base al formato in uso. Quando si usa una chiave inline, usare una chiave con codifica Base64 come l'esempio. Quando si usa un URI di file, il file deve contenere i byte non elaborati della chiave.
Se si usano URI PKCS#11, trovare la sezione PKCS#11 nel file di configurazione e fornire informazioni sulla configurazione PKCS#11.
Per altre informazioni sulle impostazioni di configurazione del provisioning, vedere Configurare le impostazioni del dispositivo IoT Edge.
Facoltativamente, trovare la sezione della modalità di reprovisioning automatico del file. Usare il parametro
auto_reprovisioning_mode
per configurare il comportamento di reprovisioning del dispositivo. Dinamico: effettuare il reprovisioning quando il dispositivo rileva che potrebbe essere stato spostato da un hub IoT a un altro. Si tratta dell'impostazione predefinita. AlwaysOnStartup: effettuare il reprovisioning quando il dispositivo viene riavviato o un arresto anomalo causa il riavvio dei daemon. OnErrorOnly: non attivare mai il provisioning automatico del dispositivo. Ogni modalità ha un fallback implicito di reprovisioning del dispositivo se il dispositivo non è in grado di connettersi all'hub IoT durante il provisioning delle identità a causa di errori di connessione. Per altre informazioni, vedere Concetti di reprovisioning di un dispositivo hub IoT.Facoltativamente, rimuovere il commento dal parametro
payload
per specificare il percorso di un file JSON locale. Il contenuto del file viene inviato al servizio Device Provisioning come dati aggiuntivi al momento della registrazione del dispositivo. Questo è utile per l'allocazione personalizzata. Ad esempio, se si vogliono allocare i dispositivi in base a un ID di modello IoT Plug and Play senza intervento umano.Salva e chiude il file .
Applicare le modifiche di configurazione apportate nel dispositivo.
sudo iotedge config apply
Verificare l'esito positivo dell'installazione
Se il runtime è stato avviato correttamente, è possibile passare all'hub IoT e iniziare la distribuzione di moduli IoT Edge nel dispositivo.
È possibile verificare che sia stata usata la registrazione singola creata nel servizio Device Provisioning. Passare all'istanza del servizio Device Provisioning nel portale di Azure. Aprire i dettagli della registrazione per la registrazione singola creata. Si noti che lo stato della registrazione è assegnata e che l'ID dispositivo è elencato.
Usare i comandi seguenti sul dispositivo per verificare che il runtime IoT Edge sia stato installato e avviato correttamente.
Verificare lo stato del servizio IoT Edge.
sudo iotedge system status
Esaminare i log del servizio.
sudo iotedge system logs
Elencare i moduli in esecuzione.
sudo iotedge list
Passaggi successivi
Il processo di registrazione del servizio Device Provisioning consente di impostare l'ID dispositivo e i tag del dispositivo gemello mentre si effettua il provisioning del nuovo dispositivo. È possibile usare questi valori per identificare come destinazione singoli dispositivi o gruppi di dispositivi usando la gestione automatica dei dispositivi. Informazioni su come Distribuire e monitorare i moduli IoT Edge su larga scala tramite il portale di Azure o usando l'interfaccia della riga di comando di Azure.