Vytvoření a zřízení zařízení IoT Edge s virtuálním čipem TPM na virtuálním počítači se systémem LinuxCreate and provision an IoT Edge device with a virtual TPM on a Linux virtual machine

Zařízení Azure IoT Edge se dají automaticky zřídit pomocí služby Device Provisioning.Azure IoT Edge devices can be automatically provisioned using the Device Provisioning Service. Pokud nejste obeznámeni s procesem automatického zřizování, před pokračováním zkontrolujte Koncepty automatického zřizování .If you're unfamiliar with the process of auto-provisioning, review the auto-provisioning concepts before continuing.

V tomto článku se dozvíte, jak otestovat Automatické zřizování na simulovaném IoT Edge zařízení pomocí následujících kroků:This article shows you how to test auto-provisioning on a simulated IoT Edge device with the following steps:

  • Vytvořte virtuální počítač se systémem Linux v technologii Hyper-V s simulovaným čipem TPM (Trusted Platform Module) pro hardwarové zabezpečení.Create a Linux virtual machine (VM) in Hyper-V with a simulated Trusted Platform Module (TPM) for hardware security.
  • Vytvořte instanci IoT Hub Device Provisioning Service (DPS).Create an instance of IoT Hub Device Provisioning Service (DPS).
  • Vytvořit jednotlivou registraci pro zařízeníCreate an individual enrollment for the device
  • Instalace modulu runtime IoT Edge a připojení zařízení k IoT HubInstall the IoT Edge runtime and connect the device to IoT Hub

Poznámka

ČIP TPM 2,0 se vyžaduje při použití ověření identity pomocí čipu TPM s DPS a dá se použít jenom k vytvoření individuálních, neskupinových a registrací certifikátů.TPM 2.0 is required when using TPM attestation with DPS and can only be used to create individual, not group, enrollments.

Tip

Tento článek popisuje, jak otestovat zřizování DPS pomocí simulátoru TPM, ale většina z nich se vztahuje na fyzický hardware TPM, jako je INFINEON OPTIGA™ TPM, zařízení Azure Certified for IoT.This article describes how to test DPS provisioning using a TPM simulator, but much of it applies to physical TPM hardware such as the Infineon OPTIGA™ TPM, an Azure Certified for IoT device.

Pokud používáte fyzické zařízení, můžete přeskočit k informacím o načtení zřizování z fyzického zařízení v tomto článku.If you're using a physical device, you can skip ahead to the Retrieve provisioning information from a physical device section in this article.

PředpokladyPrerequisites

Vytvoření virtuálního počítače se systémem Linux s virtuálním čipem TPMCreate a Linux virtual machine with a virtual TPM

V této části vytvoříte nový virtuální počítač se systémem Linux v systému Hyper-V.In this section, you create a new Linux virtual machine on Hyper-V. Tento virtuální počítač jste nakonfigurovali simulovaným čipem TPM, abyste ho mohli použít k testování, jak Automatické zřizování spolupracuje s IoT Edge.You configured this virtual machine with a simulated TPM so that you can use it for testing how automatic provisioning works with IoT Edge.

Vytvořit virtuální přepínačCreate a virtual switch

Virtuální přepínač umožňuje virtuálnímu počítači připojit se k fyzické síti.A virtual switch enables your virtual machine to connect to a physical network.

  1. Na počítači s Windows otevřete Správce technologie Hyper-V.Open Hyper-V Manager on your Windows machine.

  2. V nabídce Akce vyberte Správce virtuálního přepínače.In the Actions menu, select Virtual Switch Manager.

  3. Zvolte externí virtuální přepínač a pak vyberte vytvořit virtuální přepínač.Choose an External virtual switch, then select Create Virtual Switch.

  4. Dejte novému virtuálnímu přepínači název, například EdgeSwitch.Give your new virtual switch a name, for example EdgeSwitch. Ujistěte se, že typ připojení je nastavený na externí síť, a pak vyberte OK.Make sure that the connection type is set to External network, then select Ok.

  5. Automaticky otevírané okno vás upozorní, že může dojít k přerušení připojení k síti.A pop-up warns you that network connectivity may be disrupted. Pokračujte výběrem Ano .Select Yes to continue.

Pokud se při vytváření nového virtuálního přepínače zobrazí chyby, zajistěte, aby žádné jiné přepínače nepoužívaly adaptér sítě Ethernet a aby žádné jiné přepínače nepoužívaly stejný název.If you see errors while creating the new virtual switch, ensure that no other switches are using the ethernet adaptor, and that no other switches use the same name.

Vytvoření virtuálního počítačeCreate virtual machine

  1. Stáhněte si soubor image disku, který se má použít pro virtuální počítač, a uložte ho místně.Download a disk image file to use for your virtual machine and save it locally. Například Server Ubuntu.For example, Ubuntu server.

  2. Ve Správci technologie Hyper-V znovu vyberte nový > virtuální počítač v nabídce Akce .In Hyper-V Manager again, select New > Virtual Machine in the Actions menu.

  3. Dokončete Průvodce novým virtuálním počítačem s následujícími konkrétními konfiguracemi:Complete the New Virtual Machine Wizard with the following specific configurations:

    1. Zadejte generaci: vyberte generaci 2.Specify Generation: Select Generation 2. Virtuální počítače generace 2 mají povolenou vnořenou virtualizaci, která je nutná ke spuštění IoT Edge na virtuálním počítači.Generation 2 virtual machines have nested virtualization enabled, which is required to run IoT Edge on a virtual machine.
    2. Konfigurace sítě: nastavte hodnotu připojení k virtuálnímu přepínači, který jste vytvořili v předchozí části.Configure Networking: Set the value of Connection to the virtual switch that you created in the previous section.
    3. Možnosti instalace: vyberte možnost instalovat operační systém ze souboru spouštěcí bitové kopie a vyhledejte soubor bitové kopie disku, který jste uložili místně.Installation Options: Select Install an operating system from a bootable image file and browse to the disk image file that you saved locally.
  4. V průvodci vyberte Dokončit a vytvořte virtuální počítač.Select Finish in the wizard to create the virtual machine.

Vytvoření nového virtuálního počítače může trvat několik minut.It may take a few minutes to create the new VM.

Povolit virtuální čip TPMEnable virtual TPM

Po vytvoření virtuálního počítače otevřete jeho nastavení, abyste povolili čip TPM (Virtual Trusted Platform Module), který umožňuje automatické zřízení zařízení.Once your VM is created, open its settings to enable the virtual trusted platform module (TPM) that lets you auto-provision the device.

  1. Vyberte virtuální počítač a pak otevřete jeho Nastavení.Select the virtual machine, then open its Settings.

  2. Přejděte na zabezpečení.Navigate to Security.

  3. Zrušte kontrolu povolení zabezpečeného spouštění.Uncheck Enable Secure Boot.

  4. Zaškrtněte Povolit čip Trusted Platform Module.Check Enable Trusted Platform Module.

  5. Klikněte na OK.Click OK.

Spustit virtuální počítač a shromažďovat data TPMStart the virtual machine and collect TPM data

Na virtuálním počítači Sestavte nástroj, který můžete použít k načtení ID registrace a ověřovacího klíčezařízení.In the virtual machine, build a tool that you can use to retrieve the device's Registration ID and Endorsement key.

  1. Spusťte virtuální počítač a připojte se k němu.Start your virtual machine and connect to it.

  2. Podle pokynů v rámci virtuálního počítače dokončete proces instalace a restartujte počítač.Follow the prompts within the virtual machine to finish the installation process and reboot the machine.

  3. Přihlaste se k VIRTUÁLNÍmu počítači a pak postupujte podle kroků uvedených v části Nastavení vývojového prostředí pro Linux pro instalaci a sestavení sady SDK pro zařízení Azure IoT pro jazyk C.Sign in to your VM, then follow the steps in Set up a Linux development environment to install and build the Azure IoT device SDK for C.

    Tip

    V průběhu tohoto článku budete kopírovat a vkládat z virtuálního počítače, který není snadný prostřednictvím aplikace připojení správce technologie Hyper-V.In the course of this article, you'll copy to and paste from the virtual machine, which is not easy through the Hyper-V Manager connection application. Když se chcete připojit k virtuálnímu počítači přes Správce technologie Hyper-V, můžete se hned pokusit získat jeho IP adresu: ifconfig.You may want to connect to the virtual machine through Hyper-V Manager once to retrieve its IP address: ifconfig. Pak můžete použít IP adresu pro připojení prostřednictvím SSH: ssh <username>@<ipaddress>.Then, you can use the IP address to connect through SSH: ssh <username>@<ipaddress>.

  4. Spuštěním následujících příkazů Sestavte nástroj SDK, který načte informace o zřizování zařízení z simulátoru TPM.Run the following commands to build the SDK tool that retrieves your device provisioning information from the TPM simulator.

    cd azure-iot-sdk-c/cmake
    cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
    cd provisioning_client/tools/tpm_device_provision
    make
    sudo ./tpm_device_provision
    
  5. Z příkazového okna přejděte do adresáře azure-iot-sdk-c a spusťte simulátor TPM.From a command window, navigate to the azure-iot-sdk-c directory and run the TPM simulator. Ten naslouchá přes soket na portech 2321 a 2322.It listens over a socket on ports 2321 and 2322. Toto příkazové okno nezavírejte; je nutné, aby byl tento simulátor spuštěný.Do not close this command window; you will need to keep this simulator running.

    V adresáři azure-iot-sdk-c spusťte následující příkaz, který spustí simulátor:From the azure-iot-sdk-c directory, run the following command to start the simulator:

    ./provisioning_client/deps/utpm/tools/tpm_simulator/Simulator.exe
    
  6. Pomocí sady Visual Studio otevřete řešení vygenerované v adresáři cmake s názvem azure_iot_sdks.slna sestavte jej pomocí příkazu Sestavit řešení v nabídce sestavení .Using Visual Studio, open the solution generated in the cmake directory named azure_iot_sdks.sln, and build it using the Build solution command on the Build menu.

  7. V podokně Průzkumník řešení v sadě Visual Studio přejděte do složky Provision_Tools.In the Solution Explorer pane in Visual Studio, navigate to the folder Provision_Tools. Klikněte pravým tlačítkem na projekt tpm_device_provision a vyberte Nastavit jako spouštěný projekt.Right-click the tpm_device_provision project and select Set as Startup Project.

  8. Spusťte řešení pomocí některého z příkazů Start v nabídce ladění .Run the solution using either of the Start commands on the Debug menu. V okně výstup se zobrazí ID registrace simulátoru TPM a ověřovací klíč, který byste měli zkopírovat pro pozdější použití při vytváření individuální registrace zařízení v nástroji, můžete toto okno zavřít (s ID registrace a ověřovacím klíčem), ale nechat okno simulátoru TPM spuštěné.The output window displays the TPM simulator's Registration ID and the Endorsement key, which you should copy for use later when you create an individual enrollment for your device in You can close this window (with Registration ID and Endorsement key), but leave the TPM simulator window running.

Načíst informace o zřizování z fyzického zařízeníRetrieve provisioning information from a physical device

V zařízení vytvořte nástroj, který můžete použít k načtení informací o zřizování zařízení.On your device, build a tool that you can use to retrieve the device's provisioning information.

  1. Podle postupu v části Nastavení vývojového prostředí pro Linux nainstalujte a Sestavte sadu SDK pro zařízení Azure IoT pro jazyk C.Follow the steps in Set up a Linux development environment to install and build the Azure IoT device SDK for C.

  2. Spuštěním následujících příkazů Sestavte nástroj SDK, který načte informace o zřizování zařízení ze zařízení TPM.Run the following commands to build the SDK tool that retrieves your device provisioning information from the TPM device.

    cd azure-iot-sdk-c/cmake
    cmake -Duse_prov_client:BOOL=ON ..
    cd provisioning_client/tools/tpm_device_provision
    make
    sudo ./tpm_device_provision
    
  3. Zkopírujte hodnoty pro ID registrace a ověřovací klíč.Copy the values for Registration ID and Endorsement key. Tyto hodnoty použijete k vytvoření jednotlivé registrace zařízení v DPS.You use these values to create an individual enrollment for your device in DPS.

Nastavení IoT Hub Device Provisioning ServiceSet up the IoT Hub Device Provisioning Service

Vytvořte novou instanci IoT Hub Device Provisioning Service v Azure a propojte ji se službou IoT Hub.Create a new instance of the IoT Hub Device Provisioning Service in Azure, and link it to your IoT hub. Můžete postupovat podle pokynů v tématu nastavení IoT Hub DPS.You can follow the instructions in Set up the IoT Hub DPS.

Po spuštění služby Device Provisioning zkopírujte na stránce Přehled hodnotu Rozsah ID .After you have the Device Provisioning Service running, copy the value of ID Scope from the overview page. Tuto hodnotu použijete při konfiguraci modulu runtime IoT Edge.You use this value when you configure the IoT Edge runtime.

Vytvoření registrace DPSCreate a DPS enrollment

Načtěte informace o zřizování z virtuálního počítače a pomocí tohoto prostředí vytvořte jednotlivé registrace ve službě Device Provisioning.Retrieve the provisioning information from your virtual machine, and use that to create an individual enrollment in Device Provisioning Service.

Když vytvoříte registraci v DPS, budete mít možnost deklarovat počáteční stavdopředných zařízení.When you create an enrollment in DPS, you have the opportunity to declare an Initial Device Twin State. V případě zařízení můžete nastavit značky pro seskupení zařízení podle libovolné metriky, kterou potřebujete ve vašem řešení, jako je oblast, prostředí, umístění nebo typ zařízení.In the device twin, you can set tags to group devices by any metric you need in your solution, like region, environment, location, or device type. Tyto značky slouží k vytváření automatických nasazení.These tags are used to create automatic deployments.

  1. V Azure Portalpřejděte do vaší instance IoT Hub Device Provisioning Service.In the Azure portal, navigate to your instance of IoT Hub Device Provisioning Service.

  2. V části Nastavenívyberte spravovat registrace.Under Settings, select Manage enrollments.

  3. Vyberte přidat jednotlivou registraci a potom proveďte následující kroky, abyste nakonfigurovali registraci:Select Add individual enrollment then complete the following steps to configure the enrollment:

    1. V případě mechanismuvyberte TPM.For Mechanism, select TPM.

    2. Zadejte ověřovací klíč a ID registrace , které jste zkopírovali z virtuálního počítače.Provide the Endorsement key and Registration ID that you copied from your virtual machine.

      Tip

      Pokud používáte fyzické zařízení TPM, je nutné určit ověřovací klíč, který je jedinečný pro každý čip TPM a získá se od výrobce čipu TPM, který je k němu přidružený.If you're using a physical TPM device, you need to determine the Endorsement key, which is unique to each TPM chip and is obtained from the TPM chip manufacturer associated with it. Jedinečné ID registrace pro vaše zařízení TPM můžete odvodit, například vytvořením hodnoty hash SHA-256 ověřovacího klíče.You can derive a unique Registration ID for your TPM device by, for example, creating an SHA-256 hash of the endorsement key.

    3. Výběrem hodnoty true deklarujete, že tento virtuální počítač je IoT Edge zařízení.Select True to declare that this virtual machine is an IoT Edge device.

    4. Vyberte propojené IoT Hub , ke kterým chcete zařízení připojit.Choose the linked IoT Hub that you want to connect your device to. Můžete zvolit více rozbočovačů a zařízení bude přiřazeno k jednomu z nich podle vybrané zásady přidělování.You can choose multiple hubs, and the device will be assigned to one of them according to the selected allocation policy.

    5. Pokud chcete, zadejte ID zařízení.Provide an ID for your device if you'd like. Pomocí ID zařízení můžete cílit na jednotlivá zařízení pro nasazení modulů.You can use device IDs to target an individual device for module deployment. Pokud ID zařízení nezadáte, použije se ID registrace.If you don't provide a device ID, the registration ID is used.

    6. Pokud chcete, přidejte hodnotu značky do počátečního stavového vlákna zařízení .Add a tag value to the Initial Device Twin State if you'd like. Pomocí značek můžete cílit skupiny zařízení na nasazení modulů.You can use tags to target groups of devices for module deployment. Například:For example:

      {
         "tags": {
            "environment": "test"
         },
         "properties": {
            "desired": {}
         }
      }
      
    7. Vyberte Save (Uložit).Select Save.

Teď, když pro toto zařízení existuje registrace, IoT Edge modul runtime může zařízení během instalace automaticky zřídit.Now that an enrollment exists for this device, the IoT Edge runtime can automatically provision the device during installation.

Instalace modulu runtime IoT EdgeInstall the IoT Edge runtime

Modul runtime IoT Edge se nasadí na všechna zařízení IoT Edge.The IoT Edge runtime is deployed on all IoT Edge devices. Jeho komponenty se spouštějí v kontejnerech a umožňují na zařízení nasadit další kontejnery, abyste mohli spustit kód na hraničních zařízeních.Its components run in containers, and allow you to deploy additional containers to the device so that you can run code at the edge. Na virtuální počítač nainstalujte modul runtime IoT Edge.Install the IoT Edge runtime on your virtual machine.

Před zahájením článku, který odpovídá vašemu typu zařízení, si poznáte Rozsah ID DPS a registraci zařízení.Know your DPS ID Scope and device Registration ID before beginning the article that matches your device type. Pokud jste nainstalovali vzorový Server Ubuntu, postupujte podle pokynů pro platformu x64 .If you installed the example Ubuntu server, use the x64 instructions. Nezapomeňte nakonfigurovat IoT Edge runtime pro automatické, ne ruční zřizování.Make sure to configure the IoT Edge runtime for automatic, not manual, provisioning.

Instalace modulu runtime Azure IoT Edge v systému LinuxInstall the Azure IoT Edge runtime on Linux

Udělení IoT Edge k čipu TPMGive IoT Edge access to the TPM

Aby modul runtime IoT Edge automaticky zřídil vaše zařízení, potřebuje přístup k čipu TPM.In order for the IoT Edge runtime to automatically provision your device, it needs access to the TPM.

Přístup čipu TPM k modulu runtime IoT Edge můžete poskytnout přepsáním nastavení systému tak, aby služba iotedge měla kořenová oprávnění.You can give TPM access to the IoT Edge runtime by overriding the systemd settings so that the iotedge service has root privileges. Pokud nechcete oprávnění ke službě zvýšit, můžete k ručnímu poskytnutí přístupu k TPM použít taky následující postup.If you don't want to elevate the service privileges, you can also use the following steps to manually provide TPM access.

  1. Vyhledejte v zařízení cestu k hardwarovému modulu TPM a uložte ji jako místní proměnnou.Find the file path to the TPM hardware module on your device and save it as a local variable.

    tpm=$(sudo find /sys -name dev -print | fgrep tpm | sed 's/.\{4\}$//')
    
  2. Vytvořte nové pravidlo, které udělí IoT Edge modulu runtime přístup k tpm0.Create a new rule that will give the IoT Edge runtime access to tpm0.

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  3. Otevřete soubor pravidel.Open the rules file.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  4. Zkopírujte následující informace o přístupu do souboru pravidel.Copy the following access information into the rules file.

    # allow iotedge access to tpm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", GROUP="iotedge", MODE="0660"
    
  5. Soubor uložte a zavřete.Save and exit the file.

  6. Aktivujte systém udev pro vyhodnocení nového pravidla.Trigger the udev system to evaluate the new rule.

    /bin/udevadm trigger $tpm
    
  7. Ověřte, že pravidlo bylo úspěšně použito.Verify that the rule was successfully applied.

    ls -l /dev/tpm0
    

    Úspěšný výstup vypadá takto:Successful output looks like the following:

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

    Pokud se vám nezobrazují správná oprávnění, zkuste restartovat počítač a obnovte udev.If you don't see that the correct permissions have been applied, try rebooting your machine to refresh udev.

Restartování prostředí IoT Edge runtimeRestart the IoT Edge runtime

Restartujte modul runtime IoT Edge, aby provedl všechny změny konfigurace, které jste v zařízení provedli.Restart the IoT Edge runtime so that it picks up all the configuration changes that you made on the device.

sudo systemctl restart iotedge

Zkontrolujte, zda je spuštěn modul runtime IoT Edge.Check to see that the IoT Edge runtime is running.

sudo systemctl status iotedge

Pokud se zobrazí chyby zřizování, může to být tím, že se ještě neprojevily změny konfigurace.If you see provisioning errors, it may be that the configuration changes haven't taken effect yet. Zkuste znovu spustit démona IoT Edge.Try restarting the IoT Edge daemon again.

sudo systemctl daemon-reload

Případně můžete restartovat virtuální počítač a zjistit, jestli se změny projeví při zahájení obnovení.Or, try restarting your virtual machine to see if the changes take effect on a fresh start.

Ověření úspěšné instalaceVerify successful installation

Pokud se modul runtime úspěšně spustil, můžete přejít do IoT Hub a podívat se, že se vaše nové zařízení automaticky zřídilo.If the runtime started successfully, you can go into your IoT Hub and see that your new device was automatically provisioned. Vaše zařízení je teď připravené spouštět IoT Edge moduly.Now your device is ready to run IoT Edge modules.

Ověřte stav procesu démona IoT Edge.Check the status of the IoT Edge Daemon.

systemctl status iotedge

Prověřte protokoly démona.Examine daemon logs.

journalctl -u iotedge --no-pager --no-full

Vypíše spuštěné moduly.List running modules.

iotedge list

Můžete ověřit, že se použil jednotlivý zápis, který jste vytvořili v rámci služby Device Provisioning.You can verify that the individual enrollment that you created in Device Provisioning Service was used. V Azure Portal přejděte na instanci služby Device Provisioning.Navigate to your Device Provisioning Service instance in the Azure portal. Otevřete podrobnosti registrace pro jednotlivou registraci, kterou jste vytvořili.Open the enrollment details for the individual enrollment that you created. Všimněte si, že je přiřazený stav registrace a že je uvedené ID zařízení.Notice that the status of the enrollment is assigned and the device ID is listed.

Další krokyNext steps

Proces registrace služby Device Provisioning umožňuje nastavit ID zařízení a nedokončené značky zařízení současně, když zřizujete nové zařízení.The Device Provisioning Service enrollment process lets you set the device ID and device twin tags at the same time as you provision the new device. Tyto hodnoty můžete použít k zaměření jednotlivých zařízení nebo skupin zařízení pomocí automatické správy zařízení.You can use those values to target individual devices or groups of devices using automatic device management. Naučte se, jak nasadit a monitorovat IoT Edge moduly ve velkém měřítku pomocí Azure Portal nebo pomocí Azure CLI.Learn how to Deploy and monitor IoT Edge modules at scale using the Azure portal or using Azure CLI.