Tworzenie i aprowizowanie urządzeń usługi IoT Edge na dużą skalę za pomocą modułu TPM w systemie Linux
Dotyczy: IoT Edge 1.5 IoT Edge 1.4
Ważne
Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. Usługa IoT Edge 1.4 LTS kończy się 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure 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.
- 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 w przyszłości.
Zadania są następujące:
- Pobieranie informacji o aprowizacji dla modułu TPM.
- Utwórz rejestrację indywidualną dla urządzenia w wystąpieniu usługi IoT Hub device provisioning.
- 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
- Wystąpienie usługi aprowizacji urządzeń usługi IoT Hub na platformie Azure połączone z centrum IoT Hub
- Jeśli nie masz wystąpienia usługi device provisioning, możesz postępować zgodnie z instrukcjami w przewodniku Szybki start Tworzenie nowej usługi aprowizacji urządzeń w usłudze IoT Hub i Łączenie centrum IoT i usługi aprowizacji urządzeń w usłudze IoT Hub.
- Po uruchomieniu usługi aprowizacji urządzeń skopiuj wartość pola Zakres identyfikatora ze strony przeglądu. Ta wartość jest używana podczas konfigurowania środowiska uruchomieniowego usługi IoT Edge.
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
Moduł TPM 2.0 jest wymagany w przypadku korzystania z zaświadczania modułu TPM z usługą aprowizacji urządzeń.
W przypadku korzystania z modułu TPM można tworzyć tylko rejestracje indywidualne, a nie grupowe, a nie rejestracje usługi 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
Uwaga
W tym artykule wcześniej użyto tpm_device_provision
narzędzia z zestawu SDK języka C IoT w celu wygenerowania informacji o aprowizacji. Jeśli wcześniej polegałeś na tym narzędziu, pamiętaj, aby poznać poniższe kroki wygeneruj inny identyfikator rejestracji dla tego samego klucza poręczenia publicznego. Jeśli musisz ponownie utworzyć identyfikator rejestracji, tak jak wcześniej, zapoznaj się ze sposobem generowania go przez narzędzie tpm_device_provision zestawu SDK języka C. Upewnij się, że identyfikator rejestracji dla rejestracji indywidualnej w usłudze DPS jest zgodny z identyfikatorem rejestracji skonfigurowanym do użycia przez urządzenie usługi IoT Edge.
W tej sekcji użyjesz narzędzi oprogramowania TPM2, aby pobrać klucz poręczenia modułu TPM, a następnie wygenerować unikatowy identyfikator rejestracji. Ta sekcja odpowiada krokowi 3. Urządzenie ma oprogramowanie układowe i oprogramowanie zainstalowane w procesie integracji modułu TPM z procesem produkcyjnym.
Instalowanie narzędzi TPM2
Zaloguj się na urządzeniu tpm2-tools
i zainstaluj pakiet.
sudo apt-get install tpm2-tools
Uruchom następujący skrypt, aby odczytać klucz poręczenia, tworząc go, jeśli jeszcze nie istnieje.
#!/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
W oknie danych wyjściowych zostanie wyświetlony klucz poręczenia urządzenia i unikatowy identyfikator rejestracji. Skopiuj te wartości do użycia później podczas tworzenia indywidualnej rejestracji dla urządzenia w usłudze aprowizacji urządzeń.
Po dokonaniu identyfikatora rejestracji i klucza poręczenia możesz kontynuować.
Napiwek
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 MODUŁU TPM, jest uzyskiwany od producenta mikroukładu TPM skojarzonego z nim. 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.
Tworzenie rejestracji usługi aprowizacji urządzeń
Użyj informacji o aprowizacji modułu TPM, aby utworzyć rejestrację indywidualną w usłudze aprowizacji urządzeń.
Podczas tworzenia rejestracji w usłudze aprowizacji urządzeń możesz zadeklarować stan bliźniaczej reprezentacji urządzenia początkowego. W bliźniaczej reprezentacji urządzenia można ustawić tagi na grupowanie urządzeń według dowolnej metryki używanej w rozwiązaniu, takiej jak region, środowisko, lokalizacja lub typ urządzenia. Te tagi służą do tworzenia wdrożeń automatycznych.
Napiwek
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 ( Az iot dps enrollment). W ramach polecenia interfejsu wiersza polecenia użyj flagi z obsługą krawędzi, aby określić, że rejestracja dotyczy urządzenia usługi IoT Edge.
W witrynie Azure Portal przejdź do wystąpienia usługi IoT Hub device provisioning.
W obszarze Ustawienia wybierz pozycję Zarządzaj rejestracjami.
Wybierz pozycję Dodaj rejestrację indywidualną, a następnie wykonaj następujące kroki, aby skonfigurować rejestrację:
W obszarze Mechanizm wybierz pozycję TPM.
Podaj klucz poręczenia i identyfikator rejestracji skopiowany z maszyny wirtualnej lub urządzenia fizycznego.
Podaj identyfikator urządzenia, jeśli chcesz. Jeśli nie podasz identyfikatora urządzenia, zostanie użyty identyfikator rejestracji.
Wybierz pozycję True , aby zadeklarować, że maszyna wirtualna lub urządzenie fizyczne jest urządzeniem usługi IoT Edge.
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.
Jeśli chcesz, dodaj wartość tagu do stanu początkowej bliźniaczej reprezentacji 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ę.
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 na potrzeby 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.
W przypadku systemów operacyjnych platformy obsługiwanej w warstwie 2 pakiety instalacyjne są udostępniane w wersjach usługi Azure IoT Edge. Zapoznaj się z krokami instalacji w obszarze Instalacja w trybie offline lub określonej wersji.
Instalowanie można wykonać za pomocą kilku poleceń. Otwórz terminal i uruchom następujące polecenia:
24.04:
wget https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
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
Aby uzyskać więcej informacji na temat wersji systemu operacyjnego, zobacz Platformy obsługiwane przez usługę Azure IoT Edge.
Uwaga
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.
Instalowanie aparatu kontenera
Usługa Azure IoT Edge korzysta ze środowiska uruchomieniowego kontenera zgodnego z technologią OCI. W przypadku scenariuszy produkcyjnych zalecamy użycie aparatu Moby. Aparat Moby jest oficjalnie obsługiwany przez aparat kontenerów w usłudze IoT Edge. Obrazy kontenerów platformy Docker CE/EE są zgodne ze środowiskiem uruchomieniowym Moby. Jeśli używasz przystawki Ubuntu Core, przystawka platformy Docker jest obsługiwana przez firmę Canonical i obsługiwana w scenariuszach produkcyjnych.
Zainstaluj aparat Moby.
sudo apt-get update; \
sudo apt-get install moby-engine
Domyślnie aparat kontenera nie ustawia limitów rozmiaru dziennika kontenera. Po pewnym czasie może to prowadzić do zapełnienia urządzenia dziennikami i wyczerpania miejsca na dysku. Można jednak skonfigurować dziennik tak, aby był wyświetlany lokalnie, choć jest opcjonalny. Aby dowiedzieć się więcej na temat konfiguracji rejestrowania, zobacz Lista kontrolna wdrażania produkcyjnego.
W poniższych krokach pokazano, jak skonfigurować kontener do używania local
sterownika rejestrowania jako mechanizmu rejestrowania.
Tworzenie lub edytowanie istniejącego pliku konfiguracji demona platformy Docker
sudo nano /etc/docker/daemon.json
Ustaw domyślny sterownik rejestrowania na
local
sterownik rejestrowania, jak pokazano w przykładzie.{ "log-driver": "local" }
Uruchom ponownie aparat kontenera, aby zmiany zaczęły obowiązywać.
sudo systemctl restart docker
Instalowanie środowiska uruchomieniowego usługi IoT Edge
Usługa IoT Edge zapewnia i utrzymuje standardy zabezpieczeń na urządzeniu usługi IoT Edge. Usługa uruchamia się na każdym rozruchu i uruchamia urządzenie, uruchamiając resztę środowiska uruchomieniowego usługi IoT Edge.
Uwaga
Począwszy od wersji 1.2, usługa tożsamości IoT obsługuje aprowizowanie tożsamości i zarządzanie nimi dla usługi IoT Edge oraz innych składników urządzeń, które muszą komunikować się z usługą IoT Hub.
Kroki opisane w tej sekcji reprezentują typowy proces instalowania najnowszej wersji usługi IoT Edge 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.
Napiwek
Jeśli masz już urządzenie usługi IoT Edge z starszą wersją i chcesz przeprowadzić uaktualnienie do najnowszej wersji, wykonaj kroki opisane w temacie Aktualizowanie demona zabezpieczeń usługi IoT Edge i środowiska uruchomieniowego. Nowsze wersje są wystarczająco różne od poprzednich wersji usługi IoT Edge, że do uaktualnienia niezbędne są konkretne kroki.
Zainstaluj najnowszą wersję usługi IoT Edge i pakietu usługi tożsamości IoT (jeśli nie jesteś jeszcze aktualny):
22.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
20.04:
sudo apt-get update; \ sudo apt-get install aziot-edge
Aprowizuj urządzenie przy użyciu 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.
Poznaj zakres identyfikatora usługi aprowizacji urządzeń i identyfikator rejestracji urządzenia, które zostały zebrane wcześniej.
Utwórz plik konfiguracji dla urządzenia na podstawie pliku szablonu dostarczonego w ramach instalacji usługi IoT Edge.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
Otwórz plik konfiguracji na urządzeniu usługi IoT Edge.
sudo nano /etc/aziot/config.toml
Znajdź sekcję konfiguracji aprowizacji pliku. Usuń znaczniki komentarza dla aprowizacji modułu TPM i upewnij się, że wszystkie inne wiersze aprowizacji zostały skomentowane.
# 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
Zaktualizuj wartości i
id_scope
registration_id
przy użyciu usługi aprowizacji urządzeń i informacji o urządzeniu. Wartośćscope_id
to zakres identyfikatora ze strony przeglądu wystąpienia usługi aprowizacji urządzeń.Aby uzyskać więcej informacji na temat aprowizacji ustawień konfiguracji, zobacz Konfigurowanie ustawień urządzenia usługi IoT Edge.
Opcjonalnie znajdź sekcję trybu automatycznego ponownego aprowizowania pliku. Użyj parametru
auto_reprovisioning_mode
, aby skonfigurować zachowanie ponownego aprowizowania urządzenia. Dynamiczne — ponowne aprowizacje, gdy urządzenie wykryje, że mogło zostać przeniesione z jednego centrum IoT Hub do innego. Jest to opcja domyślna. AlwaysOnStartup — ponowne inicjowanie obsługi administracyjnej po ponownym uruchomieniu urządzenia lub awaria powoduje ponowne uruchomienie demonów. OnErrorOnly — nigdy nie wyzwalaj automatycznego ponownego aprowizowania urządzenia. Każdy tryb ma niejawne ponowne aprowizowanie urządzenia, jeśli urządzenie nie może nawiązać połączenia z usługą IoT Hub podczas aprowizacji tożsamości z powodu błędów łączności. Aby uzyskać więcej informacji, zobacz Pojęcia dotyczące ponownej aprowizacji urządzeń usługi IoT Hub.Opcjonalnie usuń komentarz parametru
payload
, aby określić ścieżkę do lokalnego pliku JSON. Zawartość pliku jest wysyłana do usługi DPS jako dodatkowe dane podczas rejestrowania urządzenia. Jest to przydatne w przypadku alokacji niestandardowej. Jeśli na przykład chcesz przydzielić urządzenia na podstawie identyfikatora modelu IoT Plug and Play bez interwencji człowieka.Zapisz i zamknij plik.
Nadawanie usłudze IoT Edge dostępu do modułu TPM
Środowisko uruchomieniowe usługi IoT Edge opiera się na usłudze TPM, która brokeruje dostęp do modułu TPM urządzenia. Ta usługa musi uzyskać dostęp do modułu TPM, aby automatycznie aprowizować urządzenie.
Dostęp do modułu TPM można udzielić, przesłaniając ustawienia systemowe, tak aby aziottpm
usługa ma uprawnienia główne. 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.
Utwórz nową regułę, która zapewnia środowisko uruchomieniowe usługi IoT Edge dostęp do systemów
tpm0
itpmrm0
.sudo touch /etc/udev/rules.d/tpmaccess.rules
Otwórz plik reguł.
sudo nano /etc/udev/rules.d/tpmaccess.rules
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 aziottpm access to tpm0 and tpmrm0 KERNEL=="tpm0", SUBSYSTEM=="tpm", OWNER="aziottpm", MODE="0660" KERNEL=="tpmrm0", SUBSYSTEM=="tpmrm", OWNER="aziottpm", MODE="0660"
Zapisz i zamknij plik.
Wyzwól system,
udev
aby ocenić nową regułę./bin/udevadm trigger --subsystem-match=tpm --subsystem-match=tpmrm
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-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
Jeśli nie widzisz, że zastosowano odpowiednie uprawnienia, spróbuj ponownie uruchomić maszynę, aby odświeżyć
udev
element .Zastosuj zmiany konfiguracji wprowadzone na urządzeniu.
sudo iotedge config apply
Weryfikowanie pomyślnej instalacji
Jeśli jeszcze tego nie zrobiono, zastosuj zmiany konfiguracji wprowadzone na urządzeniu.
sudo iotedge config apply
Sprawdź, czy środowisko uruchomieniowe usługi IoT Edge jest uruchomione.
sudo iotedge system status
Sprawdź dzienniki demona.
sudo iotedge system logs
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 utworzonej rejestracji indywidualnej. Zwróć uwagę, że stan rejestracji jest przypisany , a identyfikator urządzenia znajduje się na liście.
Następne kroki
Proces rejestracji usługi aprowizacji urządzeń umożliwia ustawienie identyfikatora urządzenia i tagów bliźniaczych reprezentacji urządzenia w tym samym czasie co aprowizowanie nowego urządzenia. 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.