Creare ed effettuare il provisioning di un dispositivo IoT Edge in Linux usando chiavi simmetriche

Si applica a: Icona Sì IoT Edge 1.1

Importante

La data di fine del supporto di IoT Edge 1.1 è stata il 13 dicembre 2022. Controlla il ciclo di vita dei prodotti Microsoft per ottenere informazioni sul modo in cui viene supportato questo prodotto, servizio, tecnologia o API. Per altre informazioni sull'aggiornamento alla versione più recente di IoT Edge, vedere Aggiornare IoT Edge.

Questo articolo fornisce istruzioni end-to-end per la registrazione e il provisioning di un dispositivo IoT Edge in Linux, inclusa l'installazione di IoT Edge.

Ogni dispositivo che si connette a un hub IoT è dotato di un ID dispositivo, che viene usato per tenere traccia delle comunicazioni da cloud a dispositivo o da dispositivo a cloud. Configurare un dispositivo con le relative informazioni di connessione, che includono il nome host dell'hub IoT, l'ID dispositivo e le informazioni utilizzate dal dispositivo per l'autenticazione nell'hub IoT.

I passaggi descritti nel presente articolo illustrano un processo denominato provisioning manuale, in cui si connette un singolo dispositivo all'hub IoT. Per il provisioning manuale sono disponibili due opzioni per l'autenticazione dei dispositivi IoT Edge:

  • Chiavi simmetriche: quando si crea una nuova identità del dispositivo nell'hub IoT, il servizio crea due chiavi. Si inserisce una delle chiavi nel dispositivo e questa viene presentata all'hub IoT in fase di autenticazione.

    Questo metodo di autenticazione risulta più rapido per iniziare, ma non è il più sicuro.

  • X.509 autofirmato: creare due certificati di identità X.509 e inserirli nel dispositivo. Quando si crea una nuova identità del dispositivo nell'hub IoT, si forniscono le identificazioni personali di entrambi i certificati. Quando il dispositivo esegue l'autenticazione nell'hub IoT, presenta un certificato e l'hub IoT verifica che tale certificato corrisponda all'identificazione personale.

    Questo metodo di autenticazione è più sicuro ed è consigliato per gli scenari di produzione.

Questo articolo illustra l'uso di chiavi simmetriche come metodo di autenticazione. Se si desidera utilizzare certificati X.509, vedere Creare ed effettuare il provisioning di un dispositivo IoT Edge in Linux usando certificati X.509.

Nota

Se i dispositivi da configurare sono numerosi e non si desidera eseguire manualmente il provisioning di ognuno, consultare uno degli articoli seguenti riguardanti il funzionamento di IoT Edge con il servizio Device Provisioning in hub IoT:

Prerequisiti

Questo articolo illustra la registrazione del dispositivo IoT Edge e l'installazione di IoT Edge nel dispositivo. Queste attività presentano prerequisiti differenti e sono richieste utilità diverse per eseguirle. Prima di procedere, assicurarsi di avere soddisfatto tutti i prerequisiti.

Strumenti di gestione dei dispositivi

È possibile usare il portale di Azure, Visual Studio Code o l'interfaccia della riga di comando di Azure per la procedura di registrazione del dispositivo. Ogni utilità ha i propri prerequisiti:

Un hub IoT gratuito o standard nella sottoscrizione di Azure.

Requisiti dei dispositivi

Un dispositivo Linux X64, ARM32 o ARM64.

Microsoft pubblica pacchetti di installazione per un'ampia gamma di sistemi operativi.

Per informazioni aggiornate sui sistemi operativi attualmente supportati per scenari di produzione, vedere Sistemi supportati da Azure IoT Edge.

Registrare il dispositivo

È possibile usare il portale di Azure, Visual Studio Code o l'l'interfaccia della riga di comando di Azure per la registrazione del dispositivo, a seconda delle preferenze.

Nell'hub IoT sul portale di Azure, i dispositivi IoT Edge vengono creati e gestiti separatamente dai dispositivi IoT non abilitati per Edge.

  1. Accedere al portale di Azure e passare all'hub IoT.

  2. Nel riquadro sinistro selezionare Dispositivi dal menu e quindi scegliere Aggiungi dispositivo.

  3. Nella pagina Crea un dispositivo specificare le informazioni seguenti:

    • Creare un ID dispositivo descrittivo. Prendere nota di questo ID dispositivo, perché verrà usato in un secondo momento.
    • Selezionare la casella di controllo Dispositivo IoT Edge.
    • Selezionare Chiave simmetrica come tipo di autenticazione.
    • Usare le impostazioni predefinite per la generazione automatica delle chiavi di autenticazione e la connessione del nuovo dispositivo all'hub.
  4. Seleziona Salva.

Dopo aver registrato un dispositivo nell'hub IoT, recuperare le informazioni utilizzate per completare l'installazione e il provisioning del runtime IoT Edge.

Visualizzare i dispositivi registrati e recuperare le informazioni di provisioning

I dispositivi che utilizzano l'autenticazione con chiave simmetrica necessitano delle stringhe di connessione per completare l'installazione e per effettuare il provisioning del runtime IoT Edge.

I dispositivi abilitati per Edge che si connettono all'hub IoT sono elencati nella pagina Dispositivi. È possibile filtrare l'elenco in base al tipo dispositivo Iot Edge.

Screenshot di come visualizzare i dispositivi nel portale di Azure hub IoT.

Quando si è pronti per configurare il dispositivo, è necessaria la stringa di connessione che collega il dispositivo fisico alla relativa identità nell'hub IoT.

I dispositivi che eseguono l'autenticazione con chiavi simmetriche hanno le stringhe di connessione disponibili per la copia nel portale.

  1. Nella pagina Dispositivi del portale selezionare l'ID dispositivo IoT Edge dall'elenco.
  2. Copiare il valore Stringa di connessione primaria o Stringa di connessione secondaria.

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.

L'installazione può essere eseguita con pochi comandi. Aprire un terminale ed eseguire i comandi seguenti:

  • 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
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

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 è l'unico motore di contenitori ufficialmente supportato con IoT Edge. Le immagini del contenitore Docker CE/EE sono compatibili con il runtime di Moby.

Installare il motore Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

Dopo aver installato correttamente il motore Moby, configurarlo per l'uso local del driver di registrazione come meccanismo di registrazione. Per altre informazioni sulla configurazione della registrazione, vedere Elenco di controllo della distribuzione di produzione.

  • Creare o aprire il file di configurazione del daemon Docker in /etc/docker/daemon.json.

  • Impostare il driver di registrazione predefinito sul local driver di registrazione, come illustrato nell'esempio seguente.

       {
          "log-driver": "local"
       }
    
  • Riavviare il motore di contenitore per applicare le modifiche.

    sudo systemctl restart docker
    

    Suggerimento

    Se si verificano errori durante l'installazione del motore di contenitore Moby, verificare la compatibilità del kernel Linux con Moby. Alcuni produttori di dispositivi incorporati commercializzano immagini di dispositivo che contengono kernel Linux personalizzati senza le funzionalità necessarie per la compatibilità con il motore di contenitore. Eseguire il comando seguente, che usa lo script check-config fornito da Moby, per controllare la configurazione del kernel:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Nell'output dello script controllare che tutti gli elementi in Generally Necessary e Network Drivers siano abilitati. Se mancano funzionalità, abilitarle ricompilando il kernel dall'origine e selezionando i moduli associati per l'inclusione nel file .config del kernel appropriato. Analogamente, se si usa un generatore di configurazione del kernel come defconfig o menuconfig, trovare e abilitare le rispettive funzionalità e ricompilare il kernel. Dopo aver distribuito il kernel appena modificato, eseguire nuovamente lo script check-config per verificare che tutte le funzionalità necessarie siano state abilitate correttamente.

Installare il runtime IoT Edge.

Il daemon di sicurezza di IoT Edge fornisce e gestisce gli standard di sicurezza nel dispositivo IoT Edge. Il daemon viene avviato a ogni avvio del dispositivo e ne esegue il bootstrap avviando la parte restante del runtime IoT Edge.

I passaggi descritti in questa sezione rappresentano il processo tipico per installare la versione più recente in un dispositivo con 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.

Installare IoT Edge versione 1.1.* insieme al pacchetto libiothsm-std :

sudo apt-get update; \
  sudo apt-get install iotedge

Nota

IoT Edge versione 1.1 è il ramo di supporto a lungo termine di IoT Edge. Se si esegue una versione precedente, è consigliabile installare o eseguire l'aggiornamento alla patch più recente perché le versioni precedenti non sono più supportate.

Effettuare il provisioning del dispositivo con la relativa identità cloud

Ora che il motore del contenitore e il runtime di IoT Edge sono installati nel dispositivo, si è pronti per il passaggio successivo, ovvero configurare il dispositivo con le relative informazioni di autenticazione e identità cloud.

Nel dispositivo IoT Edge aprire il file di configurazione.

sudo nano /etc/iotedge/config.yaml

Individuare le configurazioni di provisioning del file e rimuovere il commento dalla sezione Manual provisioning configuration using a connection string, se non è già stato fatto.

# Manual provisioning configuration using a connection string
provisioning:
source: "manual"
device_connection_string: "ADD_DEVICE_CONNECTION_STRING_HERE"

Aggiornare il valore di device_connection_string con la stringa di connessione del dispositivo IoT Edge. Assicurarsi che tutte le altre sezioni di provisioning siano impostate come commento. Assicurarsi che il provisioning: la riga non abbia spazi vuoti precedenti e che gli elementi annidati siano rientrati da due spazi.

Per incollare il contenuto degli Appunti in Nano, premere Shift+Right Click o Shift+Insert.

Salva e chiude il file .

CTRL + X, Y, Enter

Dopo aver immesso le informazioni di provisioning nel file di configurazione, riavviare il daemon:

sudo systemctl restart iotedge

Verificare la corretta configurazione

Verificare che il runtime sia stato installato e configurato correttamente nel dispositivo IoT Edge.

Suggerimento

Per eseguire comandi iotedge sono necessari privilegi elevati. Quando ci si disconnette dal computer e si accede di nuovo per la prima volta dopo l'installazione del runtime IoT Edge, le autorizzazioni vengono aggiornate automaticamente. Fino ad allora, usare sudo davanti ai comandi.

Verificare che il servizio di sistema IoT Edge sia in esecuzione.

sudo systemctl status iotedge

Se è necessario risolvere problemi del servizio, recuperare i log di servizio.

journalctl -u iotedge

Usare lo strumento check per verificare lo stato di configurazione e connessione del dispositivo.

sudo iotedge check

Suggerimento

Usare sempre sudo per eseguire lo strumento di controllo, anche dopo l'aggiornamento delle autorizzazioni. Lo strumento richiede privilegi elevati per accedere al file di configurazione per la verifica dello stato di configurazione.

Nota

In un dispositivo di cui è stato appena effettuato il provisioning potrebbe essere visualizzato un errore correlato all'hub di IoT Edge:

× idoneità alla produzione: la directory di archiviazione dell'hub di Edge è persistente nel file system host - Errore

Non è stati possibile controllare lo stato corrente del contenitore edgeHub

Questo errore è previsto in un dispositivo di cui è stato appena effettuato il provisioning, perché il modulo hub di IoT Edge non è in esecuzione. Per risolvere l'errore, nell'hub IoT impostare i moduli per il dispositivo e creare una distribuzione. La creazione di una distribuzione per il dispositivo avvia i moduli al suo interno, incluso il modulo hub di IoT Edge.

Visualizzare tutti i moduli in esecuzione nel dispositivo IoT Edge. Quando il servizio viene avviato per la prima volta, verrà visualizzato solo il modulo edgeAgent in esecuzione. Il modulo edgeAgent viene eseguito per impostazione predefinita e permette di installare e avviare tutti i moduli aggiuntivi distribuiti nel dispositivo.

sudo iotedge list

Quando si crea un nuovo dispositivo IoT Edge, verrà visualizzato il codice di stato 417 -- The device's deployment configuration is not set nel portale di Azure. Questo stato è normale e significa che il dispositivo è pronto per ricevere una distribuzione del modulo.

Installazione offline o di una versione specifica (facoltativo)

I passaggi in questa sezione riguardano scenari non coperti dalla procedura di installazione standard. Possono includere:

  • Installare IoT Edge offline
  • Installare di una versione finale candidata

Seguire la procedura in questa sezione se si vuole installare una versione specifica del runtime Azure IoT Edge non disponibile tramite la gestione pacchetti. L'elenco dei pacchetti Microsoft contiene solo un set limitato di versioni recenti e delle relative versioni secondarie, quindi questi passaggi sono destinati a chi desidera installare una versione precedente o una versione finale candidata.

Tramite comandi curl è possibile specificare come destinazione i file dei componenti direttamente dal repository GitHub di IoT Edge.

  1. Passare alle versioni di Azure IoT Edgee trovare la versione di rilascio desiderata come destinazione.

  2. Espandere la sezione Asset per tale versione.

  3. Ogni versione deve avere nuovi file per il daemon di sicurezza di IoT Edge e hsmlib. Se si intende installare IoT Edge in un dispositivo offline, scaricare questi file in anticipo. In alternativa, usare i comandi seguenti per aggiornare tali componenti.

    1. Trovare il file libiothsm-std che corrisponde all'architettura del dispositivo IoT Edge. Fare doppio clic sul collegamento del file e copiare l'indirizzo del collegamento.

    2. Usare il collegamento copiato nel comando seguente per installare tale versione di hsmlib:

      curl -L <libiothsm-std_link> -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. Trovare il file iotedge corrispondente all'architettura del dispositivo IoT Edge. Fare doppio clic sul collegamento del file e copiare l'indirizzo del collegamento.

    4. Usare il collegamento copiato nel comando seguente per installare tale versione del daemon di sicurezza di IoT Edge.

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

Ora che il motore del contenitore e il runtime di IoT Edge sono installati nel dispositivo, si è pronti per il passaggio successivo, ovvero effettuare il provisioning del dispositivo con la relativa identità cloud.

Disinstallare IoT Edge

Se si vuole rimuovere l'installazione di IoT Edge dal dispositivo, usare i comandi seguenti.

Rimuovere il runtime IoT Edge.

sudo apt-get autoremove iotedge

Quando il runtime IoT Edge viene rimosso, i contenitori creati vengono arrestati, ma rimangono sul dispositivo. Verificare tutti i contenitori per vedere quali vengono conservati.

sudo docker ps -a

Eliminare i contenitori dal dispositivo, inclusi i due contenitori di runtime.

sudo docker rm -f <container name>

Infine, rimuovere il runtime del contenitore dal dispositivo.

sudo apt-get autoremove --purge moby-engine