Share via


Skapa och etablera IoT Edge-enheter i stor skala med en TPM i Linux

Gäller för:Bockmarkering för IoT Edge 1.5 IoT Edge 1.5 Bockmarkering för IoT Edge 1.4 IoT Edge 1.4

Viktigt!

IoT Edge 1.5 LTS och IoT Edge 1.4 LTS stöds. IoT Edge 1.4 LTS upphör den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.

Den här artikeln innehåller instruktioner för automatisk avetablering av en Azure IoT Edge för Linux-enhet med hjälp av en TPM (Trusted Platform Module). Du kan automatiskt etablera IoT Edge-enheter med Azure IoT Hub-enhetsetableringstjänsten. Om du inte känner till processen för automatisk avetablering läser du etableringsöversikten innan du fortsätter.

Den här artikeln beskriver två metoder. Välj din inställning baserat på lösningens arkitektur:

  • Autoetablera en Linux-enhet med fysisk TPM-maskinvara.
  • Autoetablera en virtuell Linux-dator (VM) med en simulerad TPM som körs på en Windows-utvecklingsdator med Hyper-V aktiverat. Vi rekommenderar att du endast använder den här metoden som ett testscenario. En simulerad TPM erbjuder inte samma säkerhet som en fysisk TPM.

Instruktionerna skiljer sig åt beroende på din metod, så se till att du är på rätt flik framöver.

Uppgifterna är följande:

  1. Hämta etableringsinformation för din TPM.
  2. Skapa en enskild registrering för enheten i en instans av IoT Hub-enhetsetableringstjänsten.
  3. Installera IoT Edge-körningen och anslut enheten till IoT-hubben.

Förutsättningar

Molnresurser

  • En aktiv IoT-hubb
  • En instans av IoT Hub-enhetsetableringstjänsten i Azure, länkad till din IoT-hubb

Enhetskrav

En fysisk Linux-enhet som ska vara IoT Edge-enheten.

Om du är enhetstillverkare kan du läsa mer om hur du integrerar en TPM i tillverkningsprocessen.

Kommentar

TPM 2.0 krävs när du använder TPM-attestering med enhetsetableringstjänsten.

Du kan bara skapa enskilda, inte grupp- och enhetsetableringstjänstregistreringar när du använder en TPM.

Konfigurera din enhet

Om du använder en fysisk Linux-enhet med en TPM finns det inga extra steg för att konfigurera enheten.

Du är redo att fortsätta.

Hämta etableringsinformation för din TPM

Kommentar

Den här artikeln använde tpm_device_provision tidigare verktyget från IoT C SDK för att generera etableringsinformation. Om du förlitade dig på verktyget tidigare bör du vara medveten om att stegen nedan genererar ett annat registrerings-ID för samma offentliga bekräftelsenyckel. Om du behöver återskapa registrerings-ID:t som tidigare läser du hur C SDK:ts tpm_device_provision verktyg genererar det. Se till att registrerings-ID:t för den enskilda registreringen i DPS matchar regisrations-ID:t som IoT Edge-enheten har konfigurerats att använda.

I det här avsnittet använder du TPM2-programvaruverktygen för att hämta bekräftelsenyckeln för din TPM och sedan generera ett unikt registrerings-ID. Det här avsnittet motsvarar steg 3: Enheten har inbyggd programvara och programvara installerad i processen för att integrera en TPM i tillverkningsprocessen.

Installera TPM2-verktygen

Logga in på enheten och installera tpm2-tools paketet.

sudo apt-get install tpm2-tools

Kör följande skript för att läsa bekräftelsenyckeln och skapa en om den inte redan finns.

#!/bin/sh
if [ "$USER" != "root" ]; then
  SUDO="sudo "
fi

$SUDO tpm2_readpublic -Q -c 0x81010001 -o ek.pub 2> /dev/null
if [ $? -gt 0 ]; then
  # Create the endorsement key (EK)
  $SUDO tpm2_createek -c 0x81010001 -G rsa -u ek.pub

  # Create the storage root key (SRK)
  $SUDO tpm2_createprimary -Q -C o -c srk.ctx > /dev/null

  # make the SRK persistent
  $SUDO tpm2_evictcontrol -c srk.ctx 0x81000001 > /dev/null

  # open transient handle space for the TPM
  $SUDO tpm2_flushcontext -t > /dev/null
fi

printf "Gathering the registration information...\n\nRegistration Id:\n%s\n\nEndorsement Key:\n%s\n" $(sha256sum -b ek.pub | cut -d' ' -f1 | sed -e 's/[^[:alnum:]]//g') $(base64 -w0 ek.pub)
$SUDO rm ek.pub srk.ctx 2> /dev/null

Utdatafönstret visar enhetens bekräftelsenyckel och ett unikt registrerings-ID. Kopiera dessa värden för användning senare när du skapar en enskild registrering för enheten i enhetsetableringstjänsten.

När du har ditt registrerings-ID och bekräftelsenyckel är du redo att fortsätta.

Dricks

Om du inte vill använda TPM2-programvaruverktygen för att hämta informationen måste du hitta ett annat sätt att hämta etableringsinformationen. Bekräftelsenyckeln, som är unik för varje TPM-chip, erhålls från den TPM-chiptillverkare som är associerad med den. Du kan härleda ett unikt registrerings-ID för din TPM-enhet. Som du ser ovan kan du till exempel skapa en SHA-256-hash för bekräftelsenyckeln.

Skapa en enhetsetableringstjänstregistrering

Använd TPM:s etableringsinformation för att skapa en enskild registrering i enhetsetableringstjänsten.

När du skapar en registrering i enhetsetableringstjänsten har du möjlighet att deklarera ett initialt enhetstvillingtillstånd. I enhetstvillingen kan du ange taggar för att gruppera enheter efter mått som används i din lösning, till exempel region, miljö, plats eller enhetstyp. Dessa taggar används för att skapa automatiska distributioner.

Dricks

Stegen i den här artikeln gäller för Azure-portalen, men du kan också skapa enskilda registreringar med hjälp av Azure CLI. Mer information finns i az iot dps-registrering. Som en del av CLI-kommandot använder du flaggan edge-aktiverad för att ange att registreringen är för en IoT Edge-enhet.

  1. I Azure-portalen går du till din instans av IoT Hub-enhetsetableringstjänsten.

  2. Under Inställningar väljer du Hantera registreringar.

  3. Välj Lägg till enskild registrering och slutför sedan följande steg för att konfigurera registreringen:

    1. För Mekanism väljer du TPM.

    2. Ange bekräftelsenyckelnoch registrerings-ID:t som du kopierade från den virtuella datorn eller den fysiska enheten.

    3. Ange ett ID för enheten om du vill. Om du inte anger något enhets-ID används registrerings-ID:t.

    4. Välj Sant för att deklarera att den virtuella datorn eller den fysiska enheten är en IoT Edge-enhet.

    5. Välj den länkade IoT-hubb som du vill ansluta enheten till eller välj Länka till ny IoT Hub. Du kan välja flera hubbar och enheten tilldelas till en av dem enligt den valda tilldelningsprincipen.

    6. Lägg till ett taggvärde i det initiala enhetstvillingtillståndet om du vill. Du kan använda taggar till målgrupper med enheter för moduldistribution. Mer information finns i Distribuera IoT Edge-moduler i stor skala.

    7. Välj Spara.

Nu när det finns en registrering för den här enheten kan IoT Edge-körningen automatiskt etablera enheten under installationen.

Installera IoT Edge

I det här avsnittet förbereder du din virtuella Linux-dator eller fysiska enhet för IoT Edge. Sedan installerar du IoT Edge.

Kör följande kommandon för att lägga till paketlagringsplatsen och lägg sedan till Signeringsnyckeln för Microsoft-paketet i listan över betrodda nycklar.

Viktigt!

Den 30 juni 2022 drogs Raspberry Pi OS Stretch tillbaka från supportlistan för operativsystemet på nivå 1. För att undvika potentiella säkerhetsrisker uppdaterar du värdoperativsystemet till Bullseye.

Installationen kan utföras med några få kommandon. Öppna en terminal och kör följande kommandon:

  • 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
    

Mer information om operativsystemversioner finns i Plattformar som stöds av Azure IoT Edge.

Kommentar

Azure IoT Edge-programvarupaket omfattas av licensvillkoren som finns i varje paket (usr/share/doc/{package-name} eller LICENSE katalogen). Läs licensvillkoren innan du använder ett paket. Din installation och användning av ett paket utgör ditt godkännande av dessa villkor. Om du inte godkänner licensvillkoren ska du inte använda det paketet.

Installera en containermotor

Azure IoT Edge förlitar sig på en OCI-kompatibel containerkörning. För produktionsscenarier rekommenderar vi att du använder Moby-motorn. Moby-motorn är den enda containermotorn som officiellt stöds med IoT Edge. Docker CE/EE-containeravbildningar är kompatibla med Moby-körningen.

Installera Moby-motorn.

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

Som standard anger containermotorn inte storleksbegränsningar för containerloggar. Med tiden kan detta leda till att enheten fylls med loggar och att diskutrymmet börjar ta slut. Du kan dock konfigurera loggen så att den visas lokalt, även om den är valfri. Mer information om loggningskonfiguration finns i Checklista för produktionsdistribution.

Följande steg visar hur du konfigurerar containern så att den använder local loggningsdrivrutinen som loggningsmekanism.

  1. Skapa eller redigera den befintliga Docker-daemonens konfigurationsfil

    sudo nano /etc/docker/daemon.json
    
  2. Ange loggningsdrivrutinen som standard till local loggningsdrivrutinen enligt exemplet.

       {
          "log-driver": "local"
       }
    
  3. Starta om containermotorn för att ändringarna ska börja gälla.

    sudo systemctl restart docker
    

Installera IoT Edge-körningen

IoT Edge-tjänsten tillhandahåller och upprätthåller säkerhetsstandarder på IoT Edge-enheten. Tjänsten startar vid varje start och startar enheten genom att starta resten av IoT Edge-körningen.

Kommentar

Från och med version 1.2 hanterar IoT-identitetstjänsten identitetsetablering och hantering för IoT Edge och för andra enhetskomponenter som behöver kommunicera med IoT Hub.

Stegen i det här avsnittet representerar den typiska processen för att installera den senaste IoT Edge-versionen på en enhet som har internetanslutning. Om du behöver installera en viss version, t.ex. en förhandsversion, eller om du behöver installera offline följer du installationsstegen offline eller specifik version senare i den här artikeln.

Dricks

Om du redan har en IoT Edge-enhet som kör en äldre version och vill uppgradera till den senaste versionen använder du stegen i Uppdatera IoT Edge-säkerhetsdaemonen och körningen. Senare versioner skiljer sig tillräckligt från tidigare versioner av IoT Edge för att specifika steg krävs för att uppgradera.

Installera den senaste versionen av IoT Edge och IoT-identitetstjänstpaketet (om du inte redan är uppdaterad):

  • 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
    

Det valfria defender-iot-micro-agent-edge paketet innehåller Microsoft Defender för IoT-säkerhetsmikroagenten som ger slutpunktssynlighet i hantering av säkerhetsstatus, sårbarheter, hotidentifiering, hantering av flottan med mera för att hjälpa dig att skydda dina IoT Edge-enheter. Vi rekommenderar att du installerar mikroagenten med Edge-agenten för att aktivera säkerhetsövervakning och härdning av dina Edge-enheter. Mer information om Microsoft Defender för IoT finns i Vad är Microsoft Defender för IoT för enhetsbyggare?

Etablera enheten med dess molnidentitet

När körningen har installerats på enheten konfigurerar du enheten med den information den använder för att ansluta till enhetsetableringstjänsten och IoT Hub.

Känna till enhetsetableringstjänstens ID-omfång och enhetsregistrerings-ID som samlats in tidigare.

Skapa en konfigurationsfil för enheten baserat på en mallfil som tillhandahålls som en del av IoT Edge-installationen.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

Öppna konfigurationsfilen på IoT Edge-enheten.

sudo nano /etc/aziot/config.toml
  1. Leta upp avsnittet etableringskonfigurationer i filen. Avkommentera raderna för TPM-etablering och se till att andra etableringsrader kommenteras ut.

    # DPS provisioning with TPM
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "DPS_ID_SCOPE_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "tpm"
    registration_id = "REGISTRATION_ID_HERE"
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Uppdatera värdena id_scope för och registration_id med enhetens etableringstjänst och enhetsinformation. Värdet scope_id är ID-omfånget från enhetsetableringstjänstinstansens översiktssida.

    Mer information om konfigurationsinställningar för etablering finns i Konfigurera IoT Edge-enhetsinställningar.

  3. Du kan också hitta avsnittet för automatisk ometableringsläge i filen. Använd parametern auto_reprovisioning_mode för att konfigurera enhetens återetableringsbeteende. Dynamisk – Återskapa när enheten upptäcker att den kan ha flyttats från en IoT Hub till en annan. Det här är standardinställningen. AlwaysOnStartup – Ometablering när enheten startas om eller en krasch gör att daemonerna startas om. OnErrorOnly – Utlös aldrig enhetens ometablering automatiskt. Varje läge har en implicit återställning av enhetsetablering om enheten inte kan ansluta till IoT Hub under identitetsetablering på grund av anslutningsfel. Mer information finns i Begrepp för ometablering av IoT Hub-enheter.

  4. Du kan också avkommentera parametern payload för att ange sökvägen till en lokal JSON-fil. Innehållet i filen skickas till DPS som ytterligare data när enheten registreras. Detta är användbart för anpassad allokering. Om du till exempel vill allokera dina enheter baserat på ett IoT Plug and Play-modell-ID utan mänsklig inblandning.

  5. Spara och stäng filen.

Ge IoT Edge åtkomst till TPM

IoT Edge-körningen förlitar sig på en TPM-tjänst som förmedlar åtkomst till en enhets TPM. Den här tjänsten måste ha åtkomst till TPM för att automatiskt etablera din enhet.

Du kan ge åtkomst till TPM genom att åsidosätta systeminställningarna så att aziottpm tjänsten har rotbehörighet. Om du inte vill höja tjänstprivilegier kan du också använda följande steg för att manuellt ge TPM-åtkomst.

  1. Skapa en ny regel som ger IoT Edge-körningsåtkomst till tpm0 och tpmrm0.

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  2. Öppna regelfilen.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  3. Kopiera följande åtkomstinformation till regelfilen. Kanske tpmrm0 inte finns på enheter som använder en kernel tidigare än 4.12. Enheter som inte har tpmrm0 kommer att ignorera den regeln på ett säkert sätt.

    # allow aziottpm access to tpm0 and tpmrm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="aziottpm", MODE="0660"
    KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="aziottpm", MODE="0660"
    
  4. Spara och avsluta filen.

  5. Utlös systemet udev för att utvärdera den nya regeln.

    /bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
    
  6. Kontrollera att regeln har tillämpats.

    ls -l /dev/tpm*
    

    Lyckade utdata visas på följande sätt:

    crw-rw---- 1 root aziottpm 10, 224 Jul 20 16:27 /dev/tpm0
    crw-rw---- 1 root aziottpm 10, 224 Jul 20 16:27 /dev/tpmrm0
    

    Om du inte ser att rätt behörigheter har tillämpats kan du prova att starta om datorn för att uppdatera udev.

  7. Tillämpa de konfigurationsändringar som du har gjort på enheten.

    sudo iotedge config apply
    

Kontrollera att installationen har slutförts

Om du inte redan har gjort det tillämpar du de konfigurationsändringar som du har gjort på enheten.

sudo iotedge config apply

Kontrollera att IoT Edge-körningen körs.

sudo iotedge system status

Granska daemonloggar.

sudo iotedge system logs

Om du ser etableringsfel kan det bero på att konfigurationsändringarna inte har börjat gälla än. Prova att starta om IoT Edge-daemonen.

sudo systemctl daemon-reload

Eller prova att starta om den virtuella datorn för att se om ändringarna börjar gälla på nytt.

Om körningen har startats kan du gå till din IoT-hubb och se att den nya enheten har etablerats automatiskt. Nu är enheten redo att köra IoT Edge-moduler.

Visa en lista över moduler som körs.

iotedge list

Du kan kontrollera att den enskilda registreringen som du skapade i enhetsetableringstjänsten användes. Gå till instansen av enhetsetableringstjänsten i Azure-portalen. Öppna registreringsinformationen för den enskilda registrering som du skapade. Observera att statusen för registreringen har tilldelats och att enhets-ID:t visas.

Nästa steg

Med registreringsprocessen för enhetsetableringstjänsten kan du ange taggar för enhets-ID och enhetstvilling samtidigt som du etablerar den nya enheten. Du kan använda dessa värden för att rikta in dig på enskilda enheter eller grupper av enheter med hjälp av automatisk enhetshantering.

Lär dig hur du distribuerar och övervakar IoT Edge-moduler i stor skala med hjälp av Azure-portalen eller Azure CLI.