IoT Edge-apparaten op schaal maken en inrichten met een TPM in Linux

Van toepassing op:IoT Edge 1.5-vinkje IoT Edge 1.5 Vinkje voor IoT Edge 1.4 IoT Edge 1.4

Belangrijk

IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.

Dit artikel bevat instructies voor het automatisch inrichten van een Azure IoT Edge voor Linux-apparaat met behulp van een Trusted Platform Module (TPM). U kunt Automatisch IoT Edge-apparaten inrichten met de Azure IoT Hub-apparaatinrichtingsservice. Als u niet bekend bent met het proces van automatische inrichting, raadpleegt u het inrichtingsoverzicht voordat u doorgaat.

In dit artikel worden twee methodologieën beschreven. Selecteer uw voorkeur op basis van de architectuur van uw oplossing:

  • Automatisch inrichten van een Linux-apparaat met fysieke TPM-hardware.
  • Automatische inrichting van een virtuele Linux-machine (VM) met een gesimuleerde TPM die wordt uitgevoerd op een Windows-ontwikkelcomputer waarvoor Hyper-V is ingeschakeld. We raden u aan deze methodologie alleen als testscenario te gebruiken. Een gesimuleerde TPM biedt niet dezelfde beveiliging als een fysieke TPM.

De instructies verschillen op basis van uw methodologie. Zorg er dus voor dat u in de toekomst op het juiste tabblad bent.

De taken zijn als volgt:

  1. Inrichtingsgegevens voor uw TPM ophalen.
  2. Maak een afzonderlijke inschrijving voor uw apparaat in een exemplaar van de IoT Hub Device Provisioning Service.
  3. Installeer de IoT Edge-runtime en verbind het apparaat met de IoT-hub.

Vereisten

Cloudresources

Vereisten voor apparaten

Een fysiek Linux-apparaat dat het IoT Edge-apparaat is.

Als u een apparaatfabrikant bent, raadpleegt u de richtlijnen voor het integreren van een TPM in het productieproces.

Notitie

TPM 2.0 is vereist wanneer u TPM-attestation gebruikt met de device provisioning-service.

U kunt alleen afzonderlijke, niet groeps- en apparaatinrichtingsserviceinschrijvingen maken wanneer u een TPM gebruikt.

Uw apparaat instellen

Als u een fysiek Linux-apparaat met een TPM gebruikt, zijn er geen extra stappen om uw apparaat in te stellen.

U bent klaar om door te gaan.

Inrichtingsgegevens voor uw TPM ophalen

Notitie

In dit artikel is het tpm_device_provision hulpprogramma van de IoT C SDK eerder gebruikt om inrichtingsgegevens te genereren. Als u eerder op dat hulpprogramma hebt vertrouwd, moet u rekening houden met de onderstaande stappen om een andere registratie-id te genereren voor dezelfde openbare goedkeuringssleutel. Als u de registratie-id opnieuw moet maken zoals voorheen, raadpleegt u hoe het tpm_device_provision hulpprogramma van de C SDK deze genereert. Zorg ervoor dat de registratie-id voor de afzonderlijke inschrijving in DPS overeenkomt met de registratie-id die het IoT Edge-apparaat is geconfigureerd voor gebruik.

In deze sectie gebruikt u de TPM2-softwarehulpprogramma's om de goedkeuringssleutel voor uw TPM op te halen en vervolgens een unieke registratie-id te genereren. Deze sectie komt overeen met stap 3: Apparaat heeft firmware en software geïnstalleerd in het proces voor het integreren van een TPM in het productieproces.

De TPM2-hulpprogramma's installeren

Meld u aan bij uw apparaat en installeer het tpm2-tools pakket.

sudo apt-get install tpm2-tools

Voer het volgende script uit om de goedkeuringssleutel te lezen en er een te maken als deze nog niet bestaat.

#!/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

In het uitvoervenster worden de goedkeuringssleutel en een unieke registratie-id van het apparaat weergegeven. Kopieer deze waarden voor later gebruik wanneer u een afzonderlijke inschrijving voor uw apparaat maakt in de device provisioning-service.

Nadat u uw registratie-id en goedkeuringssleutel hebt, kunt u doorgaan.

Tip

Als u de TPM2-softwarehulpprogramma's niet wilt gebruiken om de informatie op te halen, moet u een andere manier vinden om de inrichtingsgegevens op te halen. De goedkeuringssleutel, die uniek is voor elke TPM-chip, wordt verkregen van de fabrikant van de TPM-chip die eraan is gekoppeld. U kunt een unieke registratie-id afleiden voor uw TPM-apparaat. Zoals hierboven wordt weergegeven, kunt u bijvoorbeeld een SHA-256-hash van de goedkeuringssleutel maken.

Een apparaatinrichtingsserviceinschrijving maken

Gebruik de inrichtingsgegevens van uw TPM om een afzonderlijke inschrijving te maken in de device provisioning-service.

Wanneer u een inschrijving in de device provisioning-service maakt, hebt u de mogelijkheid om een eerste apparaatdubbelstatus te declareren. In de apparaatdubbel kunt u tags instellen om apparaten te groeperen op basis van alle metrische gegevens die in uw oplossing worden gebruikt, zoals regio, omgeving, locatie of apparaattype. Deze tags worden gebruikt om automatische implementaties te maken.

Tip

De stappen in dit artikel zijn bedoeld voor Azure Portal, maar u kunt ook afzonderlijke inschrijvingen maken met behulp van de Azure CLI. Zie az iot dps enrollment voor meer informatie. Als onderdeel van de CLI-opdracht gebruikt u de vlag edge om op te geven dat de inschrijving voor een IoT Edge-apparaat is.

  1. Ga in Azure Portal naar uw exemplaar van de IoT Hub-apparaatinrichtingsservice.

  2. Selecteer inschrijvingen beheren onder Instellingen.

  3. Selecteer Afzonderlijke inschrijving toevoegen en voer vervolgens de volgende stappen uit om de inschrijving te configureren:

    1. Selecteer TPM voor Mechanisme.

    2. Geef de goedkeuringssleutel en registratie-id op die u hebt gekopieerd van uw VIRTUELE machine of fysiek apparaat.

    3. Geef desgewenst een id op voor uw apparaat. Als u geen apparaat-id opgeeft, wordt de registratie-id gebruikt.

    4. Selecteer Waar om aan te geven dat uw VIRTUELE machine of fysiek apparaat een IoT Edge-apparaat is.

    5. Kies de gekoppelde IoT-hub waarmee u uw apparaat wilt verbinden of selecteer Koppelen aan nieuwe IoT Hub. U kunt meerdere hubs kiezen en het apparaat wordt toegewezen aan een van deze hubs volgens het geselecteerde toewijzingsbeleid.

    6. Voeg desgewenst een tagwaarde toe aan de eerste apparaatdubbelstatus . U kunt tags gebruiken voor doelgroepen van apparaten voor module-implementatie. Zie IoT Edge-modules op schaal implementeren voor meer informatie.

    7. Selecteer Opslaan.

Nu er een inschrijving voor dit apparaat bestaat, kan de IoT Edge-runtime het apparaat automatisch inrichten tijdens de installatie.

IoT Edge installeren

In deze sectie bereidt u uw virtuele Linux-machine of fysiek apparaat voor op IoT Edge. Vervolgens installeert u IoT Edge.

Voer de volgende opdrachten uit om de pakketopslagplaats toe te voegen en voeg vervolgens de ondertekeningssleutel van het Microsoft-pakket toe aan uw lijst met vertrouwde sleutels.

Belangrijk

Op 30 juni 2022 werd Raspberry Pi OS Stretch buiten gebruik gesteld van de ondersteuningslijst van het laag 1-besturingssysteem. Om potentiële beveiligingsproblemen te voorkomen, werkt u uw hostbesturingssysteem bij naar Bullseye.

Installatie kan worden uitgevoerd met een paar opdrachten. Open een terminal en voer de volgende opdrachten uit:

  • 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
    

Zie ondersteunde platformen van Azure IoT Edge voor meer informatie over besturingssysteemversies.

Notitie

Azure IoT Edge-softwarepakketten zijn onderworpen aan de licentievoorwaarden die zich in elk pakket (usr/share/doc/{package-name} of de LICENSE map) bevinden. Lees de licentievoorwaarden voordat u een pakket gebruikt. Uw installatie en het gebruik van een pakket vormen uw aanvaarding van deze voorwaarden. Als u niet akkoord gaat met de licentievoorwaarden, gebruikt u dat pakket niet.

Een containerengine installeren

Azure IoT Edge is afhankelijk van een OCI-compatibele containerruntime. Voor productiescenario's raden we u aan de Moby-engine te gebruiken. De Moby-engine is de enige containerengine die officieel wordt ondersteund met IoT Edge. Docker CE/EE-containerinstallatiekopieën zijn compatibel met de Moby-runtime.

Installeer de Moby-engine.

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

De containerengine stelt standaard geen limieten voor de grootte van containerlogboeken in. Na verloop van tijd kan dit ertoe leiden dat het apparaat vol raakt met logboeken en onvoldoende schijfruimte heeft. U kunt uw logboek echter zo configureren dat dit lokaal wordt weergegeven, hoewel dit optioneel is. Zie controlelijst voor productie-implementatie voor meer informatie over logboekregistratieconfiguratie.

In de volgende stappen ziet u hoe u uw container configureert voor het gebruik van local het logboekregistratiestuurprogramma als het mechanisme voor logboekregistratie.

  1. Het configuratiebestand van de bestaande Docker-daemon maken of bewerken

    sudo nano /etc/docker/daemon.json
    
  2. Stel het standaardstuurprogramma voor logboekregistratie in op het local logboekregistratiestuurprogramma, zoals wordt weergegeven in het voorbeeld.

       {
          "log-driver": "local"
       }
    
  3. Start de containerengine opnieuw om de wijzigingen van kracht te laten worden.

    sudo systemctl restart docker
    

De IoT Edge-runtime installeren

De IoT Edge-service biedt en onderhoudt beveiligingsstandaarden op het IoT Edge-apparaat. De service wordt gestart bij elke opstartbewerking en bootstrapt het apparaat door de rest van de IoT Edge-runtime te starten.

Notitie

Vanaf versie 1.2 verwerkt de IoT-identiteitsservice identiteitsinrichting en -beheer voor IoT Edge en voor andere apparaatonderdelen die moeten communiceren met IoT Hub.

De stappen in deze sectie vertegenwoordigen het gebruikelijke proces voor het installeren van de nieuwste IoT Edge-versie op een apparaat met internetverbinding. Als u een specifieke versie, zoals een voorlopige versie, moet installeren of offline moet installeren, volgt u de stappen voor offline - of specifieke versie-installatie verderop in dit artikel.

Tip

Als u al een IoT Edge-apparaat met een oudere versie hebt en een upgrade wilt uitvoeren naar de nieuwste versie, gebruikt u de stappen in De IoT Edge-beveiligingsdaemon en -runtime bijwerken. Latere versies verschillen voldoende van eerdere versies van IoT Edge die specifieke stappen nodig zijn om een upgrade uit te voeren.

Installeer de nieuwste versie van IoT Edge en het IoT Identity Service-pakket (als u nog niet up-to-date bent):

  • 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
    

Het optionele defender-iot-micro-agent-edge pakket bevat de microagent voor Microsoft Defender for IoT-beveiliging die inzicht biedt in beveiligingspostuurbeheer, beveiligingsproblemen, detectie van bedreigingen, vlootbeheer en meer om u te helpen uw IoT Edge-apparaten te beveiligen. Het is raadzaam om de microagent te installeren met de Edge-agent om beveiligingsbewaking en beveiliging van uw Edge-apparaten mogelijk te maken. Zie Wat is Microsoft Defender voor IoT voor apparaatbouwers voor meer informatie over Microsoft Defender voor IoT.

Het apparaat inrichten met de cloudidentiteit

Nadat de runtime op uw apparaat is geïnstalleerd, configureert u het apparaat met de informatie die wordt gebruikt om verbinding te maken met de apparaatinrichtingsservice en IoT Hub.

Ken het bereik van de apparaatinrichtingsservice-id en apparaatregistratie-id die eerder zijn verzameld.

Maak een configuratiebestand voor uw apparaat op basis van een sjabloonbestand dat is opgegeven als onderdeel van de IoT Edge-installatie.

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

Open het configuratiebestand op het IoT Edge-apparaat.

sudo nano /etc/aziot/config.toml
  1. Zoek de sectie inrichtingsconfiguraties van het bestand. Verwijder opmerkingen bij de regels voor TPM-inrichting en zorg ervoor dat andere inrichtingslijnen als commentaar worden weergegeven.

    # 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. Werk de waarden van id_scope en registration_id met de apparaatinrichtingsservice en apparaatgegevens bij. De scope_id waarde is het id-bereik van de overzichtspagina van uw device provisioning service-exemplaar.

    Zie IoT Edge-apparaatinstellingen configureren voor meer informatie over het inrichten van configuratie-instellingen.

  3. Zoek desgewenst de sectie voor de automatische herinrichtingsmodus van het bestand. Gebruik de auto_reprovisioning_mode parameter om het herinrichtingsgedrag van uw apparaat te configureren. Dynamisch : opnieuw inrichten wanneer het apparaat detecteert dat het mogelijk is verplaatst van de ene IoT Hub naar het andere. Dit is de standaardinstelling. AlwaysOnStartup : opnieuw inrichten wanneer het apparaat opnieuw wordt opgestart of een crash veroorzaakt dat de daemons opnieuw worden opgestart. OnErrorOnly : het opnieuw inrichten van apparaten wordt nooit automatisch geactiveerd. Elke modus heeft een impliciete terugval van het opnieuw inrichten van apparaten als het apparaat geen verbinding kan maken met IoT Hub tijdens het inrichten van identiteiten vanwege connectiviteitsfouten. Zie concepten voor het opnieuw inrichten van IoT Hub-apparaten voor meer informatie.

  4. Verwijder desgewenst de opmerking bij de payload parameter om het pad naar een lokaal JSON-bestand op te geven. De inhoud van het bestand wordt als extra gegevens verzonden naar DPS wanneer het apparaat wordt geregistreerd. Dit is handig voor aangepaste toewijzing. Als u bijvoorbeeld uw apparaten wilt toewijzen op basis van een IoT-Plug en Play model-id zonder menselijke tussenkomst.

  5. Sla het bestand op en sluit het bestand.

IoT Edge toegang geven tot de TPM

De IoT Edge-runtime is afhankelijk van een TPM-service die toegang tot de TPM van een apparaat afhandelt. Deze service moet toegang krijgen tot de TPM om uw apparaat automatisch in te richten.

U kunt toegang verlenen tot de TPM door de systeeminstellingen te overschrijven, zodat de aziottpm service hoofdbevoegdheden heeft. Als u de servicebevoegdheden niet wilt verhogen, kunt u ook de volgende stappen gebruiken om TPM-toegang handmatig te verlenen.

  1. Maak een nieuwe regel waarmee de IoT Edge-runtime toegang krijgt tot tpm0 en tpmrm0.

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  2. Open het bestand met regels.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  3. Kopieer de volgende toegangsgegevens naar het regelsbestand. Het tpmrm0 is mogelijk niet aanwezig op apparaten die een kernel gebruiken die ouder is dan 4.12. Apparaten die die regel niet hebben tpmrm0 , worden veilig genegeerd.

    # allow aziottpm access to tpm0 and tpmrm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="aziottpm", MODE="0660"
    KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="aziottpm", MODE="0660"
    
  4. Sla het bestand op en sluit het af.

  5. Activeer het udev systeem om de nieuwe regel te evalueren.

    /bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
    
  6. Controleer of de regel is toegepast.

    ls -l /dev/tpm*
    

    Geslaagde uitvoer wordt als volgt weergegeven:

    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
    

    Als u niet ziet dat de juiste machtigingen zijn toegepast, start u de computer opnieuw op om te vernieuwen udev.

  7. Pas de configuratiewijzigingen toe die u op het apparaat hebt aangebracht.

    sudo iotedge config apply
    

Geslaagde installatie controleren

Als u dat nog niet hebt gedaan, past u de configuratiewijzigingen toe die u op het apparaat hebt aangebracht.

sudo iotedge config apply

Controleer of de IoT Edge-runtime wordt uitgevoerd.

sudo iotedge system status

Daemon-logboeken onderzoeken.

sudo iotedge system logs

Als er inrichtingsfouten optreden, kan het zijn dat de configuratiewijzigingen nog niet van kracht zijn. Start de IoT Edge-daemon opnieuw op.

sudo systemctl daemon-reload

U kunt ook proberen uw virtuele machine opnieuw op te starten om te zien of de wijzigingen van kracht worden op een nieuwe start.

Als de runtime is gestart, kunt u naar uw IoT-hub gaan en zien dat uw nieuwe apparaat automatisch is ingericht. Uw apparaat is nu klaar om IoT Edge-modules uit te voeren.

Lijst met actieve modules.

iotedge list

U kunt controleren of de afzonderlijke inschrijving die u in de device provisioning service hebt gemaakt, is gebruikt. Ga naar uw exemplaar van de device provisioning service in Azure Portal. Open de inschrijvingsgegevens voor de afzonderlijke inschrijving die u hebt gemaakt. U ziet dat de status van de inschrijving is toegewezen en dat de apparaat-id wordt vermeld.

Volgende stappen

Met het registratieproces van de device provisioning service kunt u de apparaat-id en apparaatdubbeltags instellen op hetzelfde moment als u het nieuwe apparaat inricht. U kunt deze waarden gebruiken om afzonderlijke apparaten of groepen apparaten te richten met behulp van automatisch apparaatbeheer.

Leer hoe u IoT Edge-modules op schaal implementeert en bewaakt met behulp van Azure Portal of de Azure CLI.