Creare ed effettuare il provisioning di dispositivi IoT Edge su larga scala con un TPM in Windows

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 per il provisioning automatico di un dispositivo Azure IoT Edge per Windows usando un modulo TPM (Trusted Platform Module). È possibile effettuare automaticamente il provisioning di dispositivi IoT Edge con il servizio Device Provisioning in hub IoT di Azure. Se non si ha familiarità con il processo di provisioning automatico, vedere la panoramica sul provisioning prima di continuare.

Nota

Azure IoT Edge con contenitori Windows non sarà supportato a partire dalla versione 1.2 di Azure IoT Edge.

Prendere in considerazione l'uso del nuovo metodo per l'esecuzione di IoT Edge nei dispositivi Windows, Azure IoT Edge per Linux in Windows.

Se si vuole usare Azure IoT Edge per Linux in Windows, è possibile seguire la procedura descritta nella guida pratica equivalente.

Questo articolo illustra due metodologie. Selezionare la propria preferenza in base all'architettura della soluzione:

  • Provisioning automatico di un dispositivo Windows con hardware TPM fisico.
  • Provisioning automatico di un dispositivo Windows che esegue un TPM simulato. È consigliabile usare questa metodologia solo come scenario di test. Un TPM simulato non offre la stessa sicurezza di un TPM fisico.

Le istruzioni differiscono in base alla metodologia, quindi man mano che si procede assicurarsi di entrare nella scheda corretta.

Le attività sono le seguenti:

  • Recuperare le informazioni di provisioning del dispositivo.
  • Creare una singola registrazione per il dispositivo.
  • Installare il runtime IoT Edge e connettere il dispositivo all'hub IoT.

Prerequisiti

I prerequisiti sono gli stessi per le soluzioni TPM fisiche e TPM virtuali.

Risorse cloud

  • Un hub IoT attivo
  • Un'istanza del servizio Device Provisioning in Hub IoT in Azure, collegata all'hub IoT

Requisiti dei dispositivi

Un computer di sviluppo Windows. In questo articolo viene usato Windows 10.

Nota

TPM 2.0 è necessario quando si usa l'attestazione TPM con il servizio Device Provisioning.

Quando si usa un TPM è possibile creare solo registrazioni del servizio Device Provisioning individuali, non di gruppo.

Configurare il TPM

In questa sezione viene creato uno strumento che è possibile usare per recuperare l'ID di registrazione e la chiave di verifica dell'autenticità per il TPM.

  1. Seguire la procedura descritta in Configurare un ambiente di sviluppo Windows per installare e compilare Azure IoT SDK per dispositivi per C.

  2. Eseguire i comandi seguenti in una sessione di PowerShell con privilegi elevati per compilare lo strumento SDK che recupera le informazioni sul provisioning del dispositivo per il TPM.

    cd azure-iot-sdk-c\cmake
    cmake -Duse_prov_client:BOOL=ON ..
    cd provisioning_client\tools\tpm_device_provision
    make
    .\tpm_device_provision
    
  3. La finestra di output visualizza l'ID registrazione del dispositivo e la chiave di verifica dell'autenticità. Copiare questi valori per usarli in un secondo momento, quando si creerà una registrazione singola per il dispositivo nel servizio Device Provisioning.

Suggerimento

Se non si vuole usare lo strumento SDK per recuperare le informazioni, è necessario trovare un altro modo per ottenere le informazioni di provisioning. La chiave di verifica dell'autenticità, che è univoca per ogni chip TPM, deve essere richiesta al produttore del chip TPM. È possibile derivare un ID di registrazione univoco per il dispositivo TPM. Ad esempio, è possibile creare un hash SHA-256 della chiave di verifica dell'autenticità.

Dopo aver ottenuto l'ID di registrazione e la chiave di verifica dell'autenticità, si è pronti per continuare.

Creare una registrazione del servizio Device Provisioning

Usare le informazioni di provisioning del TPM per creare una registrazione singola nel servizio Device Provisioning.

Quando si crea una registrazione nel servizio Device Provisioning, si ha la possibilità di dichiarare uno Stato iniziale dispositivo gemello. Nel dispositivo gemello è possibile impostare tag per raggruppare i dispositivi in base a una qualsiasi metrica usata nella propria soluzione, come l'area, l'ambiente, la località o il tipo di dispositivo. Questi tag vengono usati per creare distribuzioni automatiche.

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.

  1. Nel portale di Azure passare all'istanza del servizio Device Provisioning in hub IoT.

  2. In le impostazioni selezionare Gestisci registrazioni.

  3. Selezionare Aggiungi registrazione singola e quindi completare la procedura seguente per configurare la registrazione:

    1. In Meccanismo selezionare TPM.

    2. Specificare la Chiave di verifica dell'autenticità e l'ID di registrazione copiati dalla VM o dal dispositivo fisico.

    3. Se si desidera, specificare un ID per il dispositivo. Se non si specifica un ID dispositivo, viene usato l'ID di registrazione.

    4. Selezionare Vero per dichiarare che la macchina virtuale o il dispositivo fisico è un dispositivo IoT Edge.

    5. Scegliere l'hub IoT collegato a cui si vuole connettere il dispositivo oppure selezionare Collega a nuovo hub IoT. È possibile scegliere più hub e il dispositivo verrà assegnato a uno di essi in base al criterio di assegnazione selezionato.

    6. Aggiungere un valore di tag allo Stato iniziale dispositivo gemello, se si desidera. È possibile usare tag per identificare come destinazione gruppi di dispositivi per la distribuzione di moduli. Per altre informazioni, vedere Distribuire moduli IoT Edge su larga scala.

    7. Seleziona Salva.

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 Windows o il dispositivo fisico per IoT Edge. Quindi si installa IoT Edge.

Azure IoT Edge si basa su un runtime del contenitore compatibile con OCI. Moby, un motore basato su Moby, è incluso nello script di installazione, il che significa che non ci sono passaggi aggiuntivi per installare il motore.

Per installare il runtime di IoT Edge:

  1. Esegui PowerShell come amministratore.

    Usare una sessione AMD64 di PowerShell, non PowerShell(x86). Se non si è certi del tipo di sessione in uso, eseguire il comando seguente:

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. Eseguire il comando Deploy-IoTEdge , che esegue le attività seguenti:

    • Verifica che il computer Windows sia in una versione supportata
    • Attiva la funzionalità contenitori
    • Scarica il motore moby e il runtime di IoT Edge
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. Riavviare il dispositivo se richiesto.

Quando si installa IoT Edge in un dispositivo, è possibile usare parametri aggiuntivi per modificare il processo, tra cui:

  • Indirizzare il traffico attraverso un server proxy
  • Puntare il programma di installazione a una directory locale per l'installazione offline

Per altre informazioni su questi parametri aggiuntivi, vedere Script di PowerShell per IoT Edge con contenitori Windows.

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.

  1. Conoscere l'ambito dell'ID servizio di provisioning del dispositivo e l'ID registrazione del dispositivo raccolti nelle sezioni precedenti.

  2. Aprire una finestra di PowerShell in modalità amministratore. Assicurarsi di usare una sessione AMD64 di PowerShell quando si installa IoT Edge, non PowerShell (x86).

  3. Il Initialize-IoTEdge comando configura il runtime di IoT Edge nel computer. L'impostazione predefinita del comando è provisioning manuale con i contenitori di Windows. Usare il -Dps flag per usare il servizio device provisioning anziché il provisioning manuale.

    Sostituire i valori segnaposto per paste_scope_id_here e paste_registration_id_here con i dati raccolti in precedenza.

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -Dps -ScopeId paste_scope_id_here -RegistrationId paste_registration_id_here
    

Verificare l'esito positivo dell'installazione

Se il runtime è stato avviato correttamente, passare all'hub IoT e iniziare a distribuire i moduli IoT Edge nel dispositivo. Usare i comandi seguenti sul dispositivo per verificare che il runtime sia stato installato e avviato correttamente.

  1. Verificare lo stato del servizio IoT Edge.

    Get-Service iotedge
    
  2. Esaminare i log del servizio generati negli ultimi cinque minuti.

    . {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
    
  3. Elencare i moduli in esecuzione.

    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.

Leggere l'articolo 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.