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

Si applica a:IoT Edge 1.4 checkmark IoT Edge 1.4

Importante

IoT Edge 1.4 è la versione supportata. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

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

Ogni dispositivo che si connette a un hub IoT ha un ID dispositivo usato per tenere traccia delle comunicazioni da cloud a dispositivo o da dispositivo a cloud. Configurare un dispositivo con le relative informazioni di connessione, tra cui:

  • Nome host dell'hub IoT
  • ID dispositivo
  • Dettagli di autenticazione per la connessione a hub IoT

I passaggi descritti in questo 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 in hub IoT, il servizio crea due chiavi. Posizionare una delle chiavi nel dispositivo e presenta la chiave per hub IoT durante l'autenticazione.

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

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

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

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

Nota

Se sono disponibili molti dispositivi da configurare e non si vuole eseguire manualmente il provisioning di ognuno di essi, usare uno degli articoli seguenti per informazioni sul funzionamento di IoT Edge con il servizio di provisioning di dispositivi hub IoT:

Prerequisiti

Questo articolo illustra come registrare il dispositivo IoT Edge e installare IoT Edge (detto anche runtime di IoT Edge) nel dispositivo. Assicurarsi di avere lo strumento di gestione dei dispositivi preferito, ad esempio l'interfaccia della riga di comando di Azure e i requisiti dei dispositivi prima di registrare e installare il dispositivo.

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 per registrare il dispositivo. Ogni utilità ha i propri prerequisiti o potrebbe essere necessario installare:

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 le informazioni più recenti sui sistemi operativi attualmente supportati per gli scenari di produzione, vedere Sistemi supportati da Azure IoT Edge.

Estensioni di Visual Studio Code

Se si usa Visual Studio Code, sono disponibili estensioni Azure IoT utili che semplificano la creazione e il processo di gestione dei dispositivi.

Installare le estensioni Azure IoT Edge e hub IoT di Azure:

Registrare il dispositivo

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

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

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

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

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

    • Creare un ID dispositivo descrittivo, ad esempio my-edge-device-1 (tutte minuscole). Copiare 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 generare automaticamente le chiavi di autenticazione, che connettono il nuovo dispositivo all'hub.
  4. Seleziona Salva.

Il nuovo dispositivo dovrebbe essere elencato nell'hub IoT.

Dopo aver registrato un dispositivo in hub IoT, è possibile recuperare le informazioni di provisioning usate per completare l'installazione e il provisioning del runtime di IoT Edge nel passaggio successivo.

Visualizzare i dispositivi registrati e recuperare le informazioni di provisioning

I dispositivi che usano l'autenticazione con chiave simmetrica necessitano dei propri stringa di connessione per completare l'installazione e il provisioning del runtime di IoT Edge. Il stringa di connessione viene generato per il dispositivo IoT Edge quando si crea il dispositivo. Per Visual Studio Code e l'interfaccia della riga di comando di Azure, il stringa di connessione si trova nell'output JSON. Se si usa il portale di Azure per creare il dispositivo, è possibile trovare il stringa di connessione dal dispositivo stesso. Quando si seleziona il dispositivo nell'hub IoT, questo viene elencato come Primary connection string nella pagina del dispositivo.

I dispositivi abilitati per i dispositivi perimetrali che si connettono all'hub IoT sono elencati nella pagina Dispositivi dell'hub IoT. Se sono presenti più dispositivi, è possibile filtrare l'elenco selezionando il tipo Dispositivi Iot Edge, quindi selezionare Applica.

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 stringa di connessione disponibili per la copia nel portale. Per trovare il stringa di connessione nel portale:

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

Installare IoT Edge

In questa sezione si prepara la macchina virtuale Linux o il dispositivo fisico per IoT Edge. Installare quindi IoT Edge.

Eseguire i comandi seguenti per aggiungere il repository dei pacchetti e quindi aggiungere la chiave di firma del pacchetto Microsoft all'elenco di chiavi attendibili.

Importante

Il 30 giugno 2022 Raspberry Pi OS Stretch è stato ritirato dall'elenco di supporto del sistema operativo di livello 1. Per evitare potenziali vulnerabilità di sicurezza, aggiornare il sistema operativo host a Bullseye.

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

  • 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 (usr/share/doc/{package-name} o nella LICENSE directory). Leggere le condizioni di licenza prima di usare un pacchetto. L'installazione e l'uso di un pacchetto costituiscono l'accettazione di queste condizioni. Se non si accettano le condizioni di licenza, non usare tale 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

Per impostazione predefinita, il motore del contenitore non imposta i limiti delle dimensioni del log del contenitore. Nel corso del tempo questo può causare il riempimento del dispositivo con i log e l'esaurimento dello spazio su disco. Tuttavia, è possibile configurare il log per visualizzare localmente, anche se è facoltativo. Per altre informazioni sulla configurazione della registrazione, vedere Elenco di controllo per la distribuzione di produzione.

I passaggi seguenti illustrano come configurare il contenitore per l'uso local del driver di registrazione come meccanismo di registrazione.

  1. Creare o modificare il file di configurazione del daemon Docker esistente

    sudo nano /etc/docker/daemon.json
    
  2. Impostare il driver di registrazione predefinito sul local driver di registrazione, come illustrato nell'esempio.

       {
          "log-driver": "local"
       }
    
  3. Riavviare il motore del contenitore per rendere effettive 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 e avvia il dispositivo avviando il resto del runtime di IoT Edge.

Nota

A partire dalla versione 1.2, il servizio di gestione delle identità IoT gestisce il provisioning e la gestione delle identità per IoT Edge e per altri componenti del dispositivo che devono comunicare con hub IoT.

I passaggi descritti in questa sezione rappresentano il processo tipico per installare la versione più recente di IoT Edge 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 della versione offline o specifici più avanti in questo articolo.

Suggerimento

Se si dispone già di un dispositivo IoT Edge che esegue una versione precedente e si vuole eseguire l'aggiornamento alla versione più recente, usare la procedura descritta in Aggiornare il daemon di sicurezza e il runtime di IoT Edge. Le versioni successive sono sufficientemente diverse dalle versioni precedenti di IoT Edge che sono necessari passaggi specifici per l'aggiornamento.

Installare la versione più recente di IoT Edge e il pacchetto del servizio di gestione delle 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 facoltativo defender-iot-micro-agent-edge include il micro-agente di sicurezza di Microsoft Defender per IoT che fornisce visibilità sugli endpoint sulla gestione del comportamento di sicurezza, sulle vulnerabilità, sul rilevamento delle minacce, sulla gestione della flotta e altro ancora per proteggere i dispositivi IoT Edge. È consigliabile installare il micro agente con l'agente Edge per abilitare il monitoraggio della sicurezza e la protezione avanzata dei dispositivi Perimetrali. 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

Ora che il motore del contenitore e il runtime di IoT Edge sono installati nel dispositivo, è possibile configurare il dispositivo con le relative informazioni di autenticazione e identità cloud.

È possibile configurare il dispositivo IoT Edge con l'autenticazione con chiave simmetrica usando il comando seguente:

sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE'

Questo iotedge config mp comando crea un file di configurazione nel dispositivo e immette il stringa di connessione nel file di configurazione.

  1. Applicare le modifiche di configurazione.

    sudo iotedge config apply
    
  2. Per visualizzare il file di configurazione, è possibile aprirlo:

    sudo nano /etc/aziot/config.toml
    

Distribuire i moduli

Per distribuire i moduli IoT Edge, passare all'hub IoT nel portale di Azure e quindi:

  1. Selezionare Dispositivi dal menu hub IoT.

  2. Selezionare il dispositivo per aprire la relativa pagina.

  3. Selezionare la scheda Imposta moduli .

  4. Poiché si vogliono distribuire i moduli predefiniti di IoT Edge (edgeAgent e edgeHub), non è necessario aggiungere moduli a questo riquadro, quindi selezionare Rivedi e crea nella parte inferiore.

  5. Viene visualizzata la conferma JSON dei moduli. Selezionare Crea per distribuire i moduli.

Per altre informazioni, vedere Distribuire un modulo.

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.

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

    sudo iotedge system status
    

    Una risposta di stato con esito positivo mostra i aziot servizi come in esecuzione o pronti.

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

    sudo iotedge system logs
    
  3. Usare lo check strumento per verificare lo stato di configurazione e connessione del dispositivo.

    sudo iotedge check
    

    È possibile prevedere un intervallo di risposte che possono includere OK (verde), Avviso (giallo) o Errore (rosso). Per la risoluzione degli errori comuni, vedere Soluzioni ai problemi comuni per Azure IoT Edge.

    Screenshot of sample responses from the check command.

    Suggerimento

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

    Nota

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

    × conformità alla produzione: la directory di archiviazione dell'hub Edge è persistente nel file system host - ErroreNon è stato possibile controllare lo stato corrente del contenitore edgeHub

    Questo errore è previsto in un dispositivo di cui è stato appena effettuato il provisioning perché il modulo dell'hub IoT Edge non è ancora in esecuzione. Assicurarsi che i moduli IoT Edge siano stati distribuiti nei passaggi precedenti. La distribuzione risolve questo errore.

    In alternativa, è possibile che venga visualizzato un codice di stato come 417 -- The device's deployment configuration is not set. Una volta distribuiti i moduli, questo stato cambierà.

  4. Quando il servizio viene avviato per la prima volta, dovrebbe essere 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.

    Verificare che il dispositivo e i moduli siano distribuiti e in esecuzione visualizzando la pagina del dispositivo nel portale di Azure.

    Screenshot of IoT Edge modules deployed and running confirmation in the Azure portal.

    Dopo aver distribuito ed eseguito i moduli, elencarli nel dispositivo o nella macchina virtuale con il comando seguente:

    sudo iotedge list
    

Installazione offline o specifica della versione (facoltativo)

I passaggi descritti in questa sezione sono relativi agli scenari non coperti dai passaggi di installazione standard. Questo può includere:

  • Installazione di IoT Edge durante la modalità offline
  • Installazione di una versione finale candidata

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

Se si usano snap Ubuntu, è possibile scaricare uno snap e installarlo offline. Per altre informazioni, vedere Scaricare snap e installare offline.

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

Nota

Se il dispositivo esegue attualmente IoT Edge versione 1.1 o precedente, disinstallare i pacchetti iotedge e libiothsm-std prima di seguire i passaggi descritti in questa sezione. Per altre informazioni, vedere Aggiornamento dalla versione 1.0 o 1.1 alla versione più recente.

  1. Passare alle versioni di Azure IoT Edge e trovare la versione di rilascio di destinazione.

  2. Espandere la sezione Asset per tale versione.

  3. Ogni versione deve avere nuovi file per IoT Edge e il servizio di gestione delle identità. Se si intende installare IoT Edge in un dispositivo offline, scaricare questi file in anticipo. In caso contrario, usare i comandi seguenti per aggiornare tali componenti.

    1. Trovare il file aziot-identity-service corrispondente all'architettura del dispositivo IoT Edge. Fare clic con il pulsante destro del mouse sul collegamento al file e copiare l'indirizzo del collegamento.

    2. Usare il collegamento copiato nel comando seguente per installare tale versione del servizio identity:

      curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
      

    1. Trovare il file aziot-edge corrispondente all'architettura del dispositivo IoT Edge. Fare clic con il pulsante destro del mouse sul collegamento al file e copiare l'indirizzo del collegamento.

    2. Usare il collegamento copiato nel comando seguente per installare tale versione di IoT Edge.

      curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
      

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 --purge aziot-edge

Lasciare il --purge flag se si prevede di reinstallare IoT Edge e usare le stesse informazioni di configurazione in futuro. Il --purge flag elimina tutti i file associati a IoT Edge, inclusi i file di configurazione.

Quando il runtime di IoT Edge viene rimosso, tutti i contenitori creati vengono arrestati ma ancora presenti nel 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 ID>

Infine, rimuovere il runtime del contenitore dal dispositivo.

sudo apt-get autoremove --purge moby-engine

Passaggi successivi

Continuare a distribuire moduli IoT Edge per informazioni su come distribuire moduli nel dispositivo.