Udostępnij przez


Tworzenie i aprowizowanie urządzeń usługi IoT Edge na dużą skalę za pomocą modułu TPM w systemie Linux

Dotyczy:ikona IoT Edge 1.1

Ważne

Data zakończenia wsparcia usługi IoT Edge 1.1 wynosiła 13 grudnia 2022 r. Sprawdź cykl życia produktu firmy Microsoft , aby uzyskać informacje na temat sposobu obsługi tego produktu, usługi, technologii lub interfejsu API. Aby uzyskać więcej informacji na temat aktualizowania do najnowszej wersji usługi IoT Edge, zobacz Aktualizowanie usługi IoT Edge.

Ten artykuł zawiera instrukcje dotyczące automatycznego aprowizowania urządzenia usługi Azure IoT Edge dla systemu Linux przy użyciu modułu TPM (Trusted Platform Module). Urządzenia usługi IoT Edge można aprowizować automatycznie za pomocą usługi aprowizacji urządzeń usługi Azure IoT Hub. Jeśli nie znasz procesu automatycznego aprowizowania, przed kontynuowaniem zapoznaj się z omówieniem aprowizacji .

W tym artykule opisano dwie metodologie. Wybierz swoją preferencję na podstawie architektury rozwiązania:

  • Automatyczne aprowizowanie urządzenia z systemem Linux przy użyciu fizycznego sprzętu TPM. Przykładem jest Infineon OPTIGA™ TPM SLB 9670.
  • Automatyczne aprowizowanie maszyny wirtualnej z systemem Linux z symulowanym modułem TPM uruchomionym na maszynie deweloperyjnej z systemem Windows z włączoną funkcją Hyper-V. Zalecamy użycie tej metodologii tylko jako scenariusza testowania. Symulowany moduł TPM nie oferuje tych samych zabezpieczeń co fizyczny moduł TPM.

Instrukcje różnią się w zależności od metodologii, dlatego upewnij się, że jesteś na właściwej karcie.

Zadania są następujące:

  1. Pobieranie informacji o aprowizacji dla modułu TPM.
  2. Utwórz rejestrację indywidualną dla urządzenia w wystąpieniu usługi IoT Hub device provisioning.
  3. Zainstaluj środowisko uruchomieniowe usługi IoT Edge i połącz urządzenie z centrum IoT Hub.

Wymagania wstępne

Zasoby w chmurze

  • Aktywne centrum IoT
  • Instancja usługi aprowizacji urządzeń IoT Hub na platformie Azure, połączona z Twoim IoT Hub.

Wymagania dotyczące urządzenia

Fizyczne urządzenie z systemem Linux, które ma być urządzeniem usługi IoT Edge.

Jeśli jesteś producentem urządzenia, zapoznaj się ze wskazówkami dotyczącymi integracji modułu TPM z procesem produkcyjnym.

Uwaga / Notatka

Moduł TPM 2.0 jest wymagany, gdy używasz attestacji TPM z usługą aprowizacji urządzeniami.

Korzystając z modułu TPM, można tworzyć tylko rejestracje indywidualne, a nie grupowe w usłudze aprowizacji urządzeń.

Skonfiguruj urządzenie

Jeśli używasz fizycznego urządzenia z systemem Linux z modułem TPM, nie ma dodatkowych kroków do skonfigurowania urządzenia.

Możesz kontynuować.

Pobieranie informacji o aprowizacji dla modułu TPM

W tej sekcji utworzysz narzędzie, za pomocą którego można pobrać identyfikator rejestracji i klucz potwierdzający dla modułu TPM.

  1. Zaloguj się na urządzeniu, a następnie wykonaj kroki opisane w temacie Konfigurowanie środowiska deweloperskiego systemu Linux w celu zainstalowania i skompilowania zestawu SDK urządzenia Usługi Azure IoT dla języka C.

  2. Uruchom następujące polecenia, aby skompilować narzędzie SDK, które pobiera informacje o aprowizacji urządzenia dla TPM.

    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. W oknie wyjściowym zostanie wyświetlony identyfikator rejestracji urządzenia oraz klucz poręczenia . Skopiuj te wartości do użycia później podczas tworzenia indywidualnej rejestracji dla urządzenia w usłudze aprowizacji urządzeń.

Po uzyskaniu identyfikatora rejestracji i klucza poręczenia możesz kontynuować.

Wskazówka

Jeśli nie chcesz używać narzędzi oprogramowania TPM2 do pobierania informacji, musisz znaleźć inny sposób uzyskiwania informacji dotyczących aprowizacji. Klucz poręczenia, który jest unikatowy dla każdego mikroukładu TPM, jest uzyskiwany od producenta mikroukładu TPM. Możesz uzyskać unikatowy identyfikator rejestracji dla urządzenia TPM. Na przykład, jak pokazano powyżej, można utworzyć skrót SHA-256 klucza poręczenia.

Utwórz rejestrację usługi udostępniania urządzeń

Użyj informacji o aprowizacji modułu TPM, aby utworzyć rejestrację indywidualną w usłudze aprowizacji urządzeń.

Podczas tworzenia wpisu w usłudze aprowizacji urządzeń, możesz określić początkowy stan urządzenia. W bliźniaczym modelu urządzenia możesz ustawić tagi w celu grupowania urządzeń według dowolnej metryki używanej w twoim rozwiązaniu, na przykład region, środowisko, lokalizacja lub typ urządzenia. Te tagi służą do tworzenia wdrożeń automatycznych.

Wskazówka

Kroki opisane w tym artykule dotyczą witryny Azure Portal, ale można również utworzyć rejestracje indywidualne przy użyciu interfejsu wiersza polecenia platformy Azure. Aby uzyskać więcej informacji, zobacz az iot dps enrollment. W ramach polecenia interfejsu wiersza polecenia CLI użyj flagi edge-enabled, aby określić, że rejestracja dotyczy urządzenia IoT Edge.

  1. W witrynie Azure Portal przejdź do wystąpienia usługi IoT Hub device provisioning.

  2. W obszarze Ustawienia wybierz pozycję Zarządzaj rejestracjami.

  3. Wybierz pozycję Dodaj rejestrację indywidualną, a następnie wykonaj następujące kroki, aby skonfigurować rejestrację:

    1. W obszarze Mechanizm wybierz pozycję TPM.

    2. Podaj klucz poręczenia i identyfikator rejestracji skopiowany z maszyny wirtualnej lub urządzenia fizycznego.

    3. Podaj identyfikator urządzenia, jeśli chcesz. Jeśli nie podasz identyfikatora urządzenia, zostanie użyty identyfikator rejestracji.

    4. Wybierz pozycję True , aby zadeklarować, że maszyna wirtualna lub urządzenie fizyczne jest urządzeniem usługi IoT Edge.

    5. Wybierz połączone centrum IoT Hub, z którym chcesz połączyć urządzenie, lub wybierz pozycję Połącz z nową usługą IoT Hub. Można wybrać wiele centrów, a urządzenie zostanie przypisane do jednego z nich zgodnie z wybranymi zasadami przypisania.

    6. Jeśli chcesz, dodaj wartość tagu do początkowego stanu bliźniaka urządzenia. Tagów można używać do grup docelowych urządzeń na potrzeby wdrażania modułu. Aby uzyskać więcej informacji, zobacz Wdrażanie modułów usługi IoT Edge na dużą skalę.

    7. Wybierz pozycję Zapisz.

Teraz, gdy rejestracja istnieje dla tego urządzenia, środowisko uruchomieniowe usługi IoT Edge może automatycznie aprowizować urządzenie podczas instalacji.

Instalowanie usługi IoT Edge

W tej sekcji przygotujesz maszynę wirtualną z systemem Linux lub urządzenie fizyczne dla usługi IoT Edge. Następnie zainstalujesz przeglądarkę IoT Edge.

Uruchom następujące polecenia, aby dodać repozytorium pakietów, a następnie dodaj klucz podpisywania pakietu firmy Microsoft do listy zaufanych kluczy.

Ważne

30 czerwca 2022 r. urządzenie Raspberry Pi OS Stretch zostało wycofane z listy pomocy technicznej systemu operacyjnego Tier 1. Aby uniknąć potencjalnych luk w zabezpieczeniach, zaktualizuj system operacyjny hosta do Bullseye.

Instalowanie można wykonać za pomocą kilku poleceń. Otwórz terminal i uruchom następujące polecenia:

  • 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
    

Uwaga / Notatka

Pakiety oprogramowania usługi Azure IoT Edge podlegają postanowieniom licencyjnym znajdującym się w każdym pakiecie (usr/share/doc/{package-name} lub LICENSE katalogu). Przeczytaj postanowienia licencyjne przed użyciem pakietu. Instalacja i użycie pakietu stanowi akceptację niniejszych warunków. Jeśli nie zgadzasz się z postanowieniami licencyjnymi, nie używaj tego pakietu.

Zainstaluj silnik kontenera

Usługa Azure IoT Edge korzysta ze środowiska uruchomieniowego kontenera zgodnego z technologią OCI. W przypadku scenariuszy produkcyjnych zalecamy użycie silnika Moby. Silnik Moby jest jedynym oficjalnie wspieranym silnikiem kontenerów w usłudze IoT Edge. Obrazy kontenerów Docker CE/EE są zgodne ze środowiskiem uruchomieniowym Moby.

Zainstaluj silnik Moby.

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

Po pomyślnym zainstalowaniu silnika Moby skonfiguruj go do używania local sterownika rejestrowania jako systemu rejestrowania. Aby dowiedzieć się więcej na temat konfiguracji rejestrowania, zobacz Lista kontrolna dla środowiska produkcyjnego.

  • Utwórz lub otwórz plik konfiguracji demona platformy Docker pod adresem /etc/docker/daemon.json.

  • Ustaw domyślny sterownik rejestrowania na sterownik rejestrowania local, jak pokazano w poniższym przykładzie.

       {
          "log-driver": "local"
       }
    
  • Uruchom ponownie silnik kontenera, aby zmiany zaczęły obowiązywać.

    sudo systemctl restart docker
    

    Wskazówka

    Jeśli podczas instalowania silnika kontenerowego Moby wystąpią błędy, sprawdź zgodność jądra systemu Linux z Moby. Niektórzy producenci urządzeń wbudowanych dostarczają obrazy urządzeń, które zawierają niestandardowe jądra systemu Linux, bez funkcji wymaganych do zgodności z silnikiem kontenerów. Uruchom następujące polecenie, które używa skryptu check-config dostarczonego przez program Moby, aby sprawdzić konfigurację jądra:

    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
    

    W danych wyjściowych skryptu sprawdź, czy wszystkie elementy w obszarze Generally Necessary i Network Drivers są włączone. Jeśli brakuje funkcji, włącz je, ponownie skompilując jądro ze źródła i wybierając skojarzone moduły do włączenia w odpowiedniej konfiguracji jądra. Podobnie, jeśli używasz generatora konfiguracji jądra, takiego jak defconfig lub menuconfig, znajdź i włącz odpowiednie funkcje i odpowiednio skompiluj jądro. Po wdrożeniu nowo zmodyfikowanego jądra ponownie uruchom skrypt check-config, aby sprawdzić, czy wszystkie wymagane funkcje zostały pomyślnie włączone.

Instalowanie środowiska uruchomieniowego usługi IoT Edge

Demon zabezpieczeń usługi IoT Edge zapewnia i utrzymuje standardy zabezpieczeń na urządzeniu usługi IoT Edge. Demon uruchamia się na każdym rozruchu i uruchamia urządzenie, uruchamiając resztę środowiska uruchomieniowego usługi IoT Edge.

Kroki opisane w tej sekcji reprezentują typowy proces instalowania najnowszej wersji na urządzeniu z połączeniem internetowym. Jeśli musisz zainstalować określoną wersję, taką jak wersja wstępna, lub zainstalować ją w trybie offline, wykonaj kroki instalacji w trybie offline lub określonej wersji w dalszej części tego artykułu.

Zainstaluj usługę IoT Edge w wersji 1.1.* wraz z pakietem libiothsm-std :

sudo apt-get update; \
  sudo apt-get install iotedge

Uwaga / Notatka

Usługa IoT Edge w wersji 1.1 to gałąź wsparcia długoterminowego usługi IoT Edge. Jeśli korzystasz ze starszej wersji, zalecamy zainstalowanie lub zaktualizowanie do najnowszej poprawki, ponieważ starsze wersje nie są już obsługiwane.

Skonfiguruj urządzenie przy użyciu jego tożsamości w chmurze

Po zainstalowaniu środowiska uruchomieniowego na urządzeniu skonfiguruj urządzenie przy użyciu informacji używanych do nawiązywania połączenia z usługą aprowizacji urządzeń i usługą IoT Hub.

  1. Zapoznaj się z zakresem identyfikatora usługi aprowizacji urządzeń oraz identyfikatorem rejestracji urządzenia, które zostały zebrane wcześniej.

  2. Otwórz plik konfiguracji na urządzeniu usługi IoT Edge.

    sudo nano /etc/iotedge/config.yaml
    
  3. Znajdź sekcję konfiguracji udostępniania pliku. Usuń znaczniki komentarza dla aprowizacji modułu TPM i upewnij się, że wszystkie inne wiersze aprowizacji zostały skomentowane.

    Wiersz provisioning: nie powinien mieć poprzedzających odstępów, a zagnieżdżone elementy powinny być wcięte o dwie spacje.

    # 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
    
  4. Zaktualizuj wartości i scope_idregistration_id przy użyciu usługi aprowizacji urządzeń i informacji o urządzeniu. Wartość scope_id to ID Scope ze strony przeglądu instancji usługi aprowizacji urządzeń.

  5. Alternatywnie, użyj linii always_reprovision_on_startup lub dynamic_reprovisioning, aby ustawić proces ponownej konfiguracji urządzenia. Jeśli urządzenie jest skonfigurowane do ponownej konfiguracji podczas uruchamiania, zawsze najpierw spróbuje skonfigurować się za pomocą usługi DPS, a jeśli to się nie powiedzie, skorzysta z zapasowych ustawień konfiguracyjnych. Jeśli ustawiono urządzenie na dynamiczne ponowne aprowizowanie, usługa IoT Edge (wraz ze wszystkimi modułami) zostanie ponownie uruchomiona i aprowizowana, jeśli zostanie wykryte zdarzenie ponownej aprowizacji, na przykład gdy urządzenie zostanie przeniesione z jednego hubu IoT do innego. W szczególności usługa IoT Edge sprawdza błędy bad_credential lub device_disabled z zestawu SDK w celu wykrycia zdarzenia ponownej aprowizacji. Aby ręcznie wyzwolić to zdarzenie, wyłącz urządzenie w usłudze IoT Hub. Aby uzyskać więcej informacji, zobacz Pojęcia dotyczące ponownej aprowizacji urządzeń IoT Hub.

  6. Zapisz i zamknij plik.

Nadawanie usłudze IoT Edge dostępu do modułu TPM

Środowisko uruchomieniowe usługi IoT Edge musi uzyskać dostęp do modułu TPM, aby automatycznie aprowizować urządzenie.

Aby umożliwić dostęp TPM do środowiska uruchomieniowego IoT Edge, można zastąpić ustawienia systemd, aby usługa iotedge miała uprawnienia roota. Jeśli nie chcesz podnosić uprawnień usługi, możesz również wykonać następujące kroki, aby ręcznie zapewnić dostęp do modułu TPM.

  1. Utwórz nową regułę, która zapewni środowisko uruchomieniowe usługi IoT Edge dostęp do systemów tpm0 i tpmrm0.

    sudo touch /etc/udev/rules.d/tpmaccess.rules
    
  2. Otwórz plik reguł.

    sudo nano /etc/udev/rules.d/tpmaccess.rules
    
  3. Skopiuj następujące informacje o dostępie do pliku reguł. Element tpmrm0 może nie być obecny na urządzeniach używających jądra wcześniejszego niż 4.12. Urządzenia, które nie mają, tpmrm0 będą bezpiecznie ignorować tę regułę.

    # allow iotedge access to tpm0
    KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="iotedge", MODE="0600"
    KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="iotedge", MODE="0600"
    
  4. Zapisz i zamknij plik.

  5. Wyzwól system, udev aby ocenić nową regułę.

    /bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
    
  6. Sprawdź, czy reguła została pomyślnie zastosowana.

    ls -l /dev/tpm*
    

    Pomyślne dane wyjściowe są wyświetlane w następujący sposób:

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

    Jeśli nie widzisz, że zastosowano odpowiednie uprawnienia, spróbuj ponownie uruchomić komputer, aby odświeżyć udev.

  7. Uruchom ponownie środowisko uruchomieniowe usługi IoT Edge, aby pobrać wszystkie zmiany konfiguracji wprowadzone na urządzeniu.

    sudo systemctl restart iotedge
    

Weryfikowanie pomyślnej instalacji

Jeśli jeszcze tego nie zrobiono, uruchom ponownie środowisko uruchomieniowe usługi IoT Edge, aby pobrać wszystkie zmiany konfiguracji wprowadzone na urządzeniu.

sudo systemctl restart iotedge

Sprawdź, czy środowisko uruchomieniowe usługi IoT Edge jest uruchomione.

sudo systemctl status iotedge

Sprawdź dzienniki demona.

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

Jeśli wystąpią błędy aprowizacji, może to oznaczać, że zmiany konfiguracji nie zostały jeszcze wprowadzone. Spróbuj ponownie uruchomić demona usługi IoT Edge.

sudo systemctl daemon-reload

Możesz też spróbować ponownie uruchomić maszynę wirtualną, aby sprawdzić, czy zmiany zaczynają obowiązywać od nowa.

Jeśli środowisko uruchomieniowe zostało pomyślnie uruchomione, możesz przejść do centrum IoT Hub i zobaczyć, że nowe urządzenie zostało automatycznie aprowidowane. Teraz urządzenie jest gotowe do uruchamiania modułów usługi IoT Edge.

Lista uruchomionych modułów.

iotedge list

Możesz sprawdzić, czy została użyta rejestracja indywidualna utworzona w usłudze aprowizacji urządzeń. Przejdź do wystąpienia usługi aprowizacji urządzeń w witrynie Azure Portal. Otwórz szczegóły rejestracji dla rejestracji indywidualnej, którą utworzyłeś. Zwróć uwagę, że stan rejestracji jest przypisany , a identyfikator urządzenia znajduje się na liście.

Dalsze kroki

Proces rejestracji w usłudze wdrażania urządzeń umożliwia ustawienie identyfikatora urządzenia i właściwości bliźniaczych urządzenia jednocześnie z jego wdrożeniem. Tych wartości można użyć do określania wartości docelowych dla poszczególnych urządzeń lub grup urządzeń przy użyciu automatycznego zarządzania urządzeniami.

Dowiedz się, jak wdrażać i monitorować moduły usługi IoT Edge na dużą skalę przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.