IoT Edge-apparaten op schaal maken en inrichten met een TPM in Linux
Van toepassing op: IoT Edge 1.1
Belangrijk
Het einde van de ondersteuningsdatum voor IoT Edge 1.1 is 13 december 2022. Raadpleeg het levenscyclusbeleid van Microsoft voor informatie over hoe dit product of deze service, technologie of API wordt ondersteund. Zie IoT Edge bijwerken voor meer informatie over het bijwerken naar de nieuwste versie van IoT Edge.
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. Een voorbeeld is de Infineon OPTIGA™ TPM SLB 9670.
- 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:
- Inrichtingsgegevens voor uw TPM ophalen.
- Maak een afzonderlijke inschrijving voor uw apparaat in een exemplaar van de IoT Hub Device Provisioning Service.
- Installeer de IoT Edge-runtime en verbind het apparaat met de IoT-hub.
Vereisten
Cloudresources
- Een actieve IoT-hub
- Een exemplaar van de IoT Hub Device Provisioning Service in Azure, gekoppeld aan uw IoT-hub
- Als u geen exemplaar van de apparaatinrichtingsservice hebt, kunt u de instructies volgen in de quickstart voor het maken van een nieuwe IoT Hub-apparaatinrichtingsservice en de IoT-hub en de secties voor de apparaatinrichtingsservice koppelen aan de IoT Hub-apparaatinrichtingsservice.
- Nadat de apparaatinrichtingsservice wordt uitgevoerd, kopieert u de waarde van het id-bereik op de overzichtspagina. U gebruikt deze waarde wanneer u de IoT Edge-runtime configureert.
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
In deze sectie bouwt u een hulpprogramma dat u kunt gebruiken om de registratie-id en goedkeuringssleutel voor uw TPM op te halen.
Meld u aan bij uw apparaat en volg de stappen in Een Linux-ontwikkelomgeving instellen om de Azure IoT-apparaat-SDK voor C te installeren en te bouwen.
Voer de volgende opdrachten uit om het SDK-hulpprogramma te bouwen waarmee de apparaatinrichtingsgegevens voor uw TPM worden opgehaald.
cd azure-iot-sdk-c/cmake cmake -Duse_prov_client:BOOL=ON .. cd provisioning_client/tools/tpm_device_provision make sudo ./tpm_device_provision
In het uitvoervenster worden de registratie-id en de goedkeuringssleutel 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.
Ga in Azure Portal naar uw exemplaar van de IoT Hub-apparaatinrichtingsservice.
Selecteer Onder Instellingen de optie Inschrijvingen beheren.
Selecteer Afzonderlijke inschrijving toevoegen en voer vervolgens de volgende stappen uit om de inschrijving te configureren:
Selecteer TPM voor Mechanisme.
Geef de goedkeuringssleutel en registratie-id op die u hebt gekopieerd van uw VIRTUELE machine of fysiek apparaat.
Geef desgewenst een id op voor uw apparaat. Als u geen apparaat-id opgeeft, wordt de registratie-id gebruikt.
Selecteer Waar om aan te geven dat uw VIRTUELE machine of fysiek apparaat een IoT Edge-apparaat is.
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.
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.
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:
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
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
Zodra de Moby-engine is geïnstalleerd, configureert u deze om het logboekregistratiestuurprogramma te gebruiken local
als het mechanisme voor logboekregistratie. Zie controlelijst voor productie-implementatie voor meer informatie over logboekregistratieconfiguratie.
Maak of open het configuratiebestand van de Docker-daemon op
/etc/docker/daemon.json
.Stel het standaardstuurprogramma voor logboekregistratie in op het
local
logboekregistratiestuurprogramma, zoals wordt weergegeven in het onderstaande voorbeeld.{ "log-driver": "local" }
Start de containerengine opnieuw om de wijzigingen van kracht te laten worden.
sudo systemctl restart docker
Tip
Als er fouten optreden bij het installeren van de Moby-containerengine, controleert u de Linux-kernel voor Moby-compatibiliteit. Sommige fabrikanten van ingesloten apparaten verzenden apparaatinstallatiekopieën die aangepaste Linux-kernels bevatten zonder de functies die vereist zijn voor compatibiliteit met containerengines. Voer de volgende opdracht uit, die gebruikmaakt van het check-config-script van Moby, om de kernelconfiguratie te controleren:
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
Controleer in de uitvoer van het script of alle items onder
Generally Necessary
enNetwork Drivers
zijn ingeschakeld. Als u functies mist, schakelt u deze in door de kernel opnieuw op te bouwen vanuit de bron en de bijbehorende modules te selecteren voor opname in de juiste kernel .config. Als u ook een kernelconfiguratiegenerator gebruikt zoalsdefconfig
ofmenuconfig
, zoekt en schakelt u de betreffende functies in en bouwt u de kernel dienovereenkomstig opnieuw op. Nadat u de zojuist gewijzigde kernel hebt geïmplementeerd, voert u het controleconfiguratiescript opnieuw uit om te controleren of alle vereiste functies zijn ingeschakeld.
De IoT Edge-runtime installeren
De IoT Edge-beveiligingsdaemon biedt en onderhoudt beveiligingsstandaarden op het IoT Edge-apparaat. De daemon wordt gestart bij elke opstartbewerking en bootstrapt het apparaat door de rest van de IoT Edge-runtime te starten.
De stappen in deze sectie vertegenwoordigen het gebruikelijke proces voor het installeren van de nieuwste 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.
Installeer IoT Edge versie 1.1.* samen met het libiothsm-std-pakket :
sudo apt-get update; \
sudo apt-get install iotedge
Notitie
IoT Edge versie 1.1 is de langetermijnondersteuningsvertakking van IoT Edge. Als u een oudere versie gebruikt, raden we u aan de nieuwste patch te installeren of bij te werken, omdat oudere versies niet meer worden ondersteund.
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.
Open het configuratiebestand op uw IoT Edge-apparaat.
sudo nano /etc/iotedge/config.yaml
Zoek de sectie inrichtingsconfiguratie van het bestand. Verwijder opmerkingen bij de regels voor TPM-inrichting en zorg ervoor dat andere inrichtingslijnen als commentaar worden weergegeven.
De
provisioning:
regel mag geen voorafgaande witruimte hebben en geneste items moeten worden ingesprongen door twee spaties.# DPS TPM provisioning configuration provisioning: source: "dps" global_endpoint: "https://global.azure-devices-provisioning.net" scope_id: "SCOPE_ID_HERE" attestation: method: "tpm" registration_id: "REGISTRATION_ID_HERE" # always_reprovision_on_startup: true # dynamic_reprovisioning: false
Werk de waarden van
scope_id
enregistration_id
met de apparaatinrichtingsservice en apparaatgegevens bij. Descope_id
waarde is het id-bereik van de overzichtspagina van uw device provisioning service-exemplaar.U kunt desgewenst de
always_reprovision_on_startup
ofdynamic_reprovisioning
regels gebruiken om het herinrichtingsgedrag van uw apparaat te configureren. Als een apparaat is ingesteld op opnieuw inrichten bij het opstarten, probeert het altijd eerst met DPS in te richten en vervolgens terug te vallen op de inrichtingsback-up als dat mislukt. Als een apparaat is ingesteld op dynamisch opnieuw inrichten, wordt IoT Edge (en alle modules) opnieuw opgestart en opnieuw ingericht als er een gebeurtenis voor opnieuw inrichten wordt gedetecteerd, bijvoorbeeld als het apparaat van de ene IoT Hub naar het andere wordt verplaatst. IoT Edge controleertbad_credential
met name op ofdevice_disabled
fouten van de SDK om de herprovision-gebeurtenis te detecteren. Als u deze gebeurtenis handmatig wilt activeren, schakelt u het apparaat uit in IoT Hub. Zie concepten voor het opnieuw inrichten van IoT Hub-apparaten voor meer informatie.Sla het bestand op en sluit het bestand.
IoT Edge toegang geven tot de TPM
De IoT Edge-runtime moet toegang krijgen tot de TPM om uw apparaat automatisch in te richten.
U kunt TPM-toegang geven tot de IoT Edge-runtime door de systeeminstellingen te overschrijven, zodat de iotedge
service hoofdbevoegdheden heeft. Als u de servicebevoegdheden niet wilt verhogen, kunt u ook de volgende stappen gebruiken om TPM-toegang handmatig te verlenen.
Maak een nieuwe regel waarmee de IoT Edge-runtime toegang krijgt tot
tpm0
entpmrm0
.sudo touch /etc/udev/rules.d/tpmaccess.rules
Open het bestand met regels.
sudo nano /etc/udev/rules.d/tpmaccess.rules
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 hebbentpmrm0
, worden veilig genegeerd.# allow iotedge access to tpm0 KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="iotedge", MODE="0600" KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="iotedge", MODE="0600"
Sla het bestand op en sluit het af.
Activeer het
udev
systeem om de nieuwe regel te evalueren./bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
Controleer of de regel is toegepast.
ls -l /dev/tpm*
Geslaagde uitvoer wordt als volgt weergegeven:
crw------- 1 iotedge root 10, 224 Jul 20 16:27 /dev/tpm0 crw------- 1 iotedge root 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
.Start de IoT Edge-runtime opnieuw zodat alle configuratiewijzigingen worden opgehaald die u op het apparaat hebt aangebracht.
sudo systemctl restart iotedge
Geslaagde installatie controleren
Als u dat nog niet hebt gedaan, start u de IoT Edge-runtime opnieuw op, zodat alle configuratiewijzigingen worden opgehaald die u op het apparaat hebt aangebracht.
sudo systemctl restart iotedge
Controleer of de IoT Edge-runtime wordt uitgevoerd.
sudo systemctl status iotedge
Daemon-logboeken onderzoeken.
journalctl -u iotedge --no-pager --no-full
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.