Tworzenie i aprowizowanie urządzeń usługi IoT Edge na dużą skalę w systemie Linux przy użyciu certyfikatów X.509

Dotyczy:IoT Edge 1.4 checkmark IoT Edge 1.4

Ważne

Azure IoT Edge1.4 jest obsługiwaną wersją. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

Ten artykuł zawiera kompleksowe instrukcje dotyczące automatycznego aprowizowania co najmniej jednego urządzenia usługi IoT Edge z systemem Linux przy użyciu certyfikatów X.509. Urządzenia usługi Azure IoT Edge można aprowizować automatycznie za pomocą usługi Azure IoT Hub device provisioning (DPS). Jeśli nie znasz procesu automatycznego aprowizowania, przed kontynuowaniem zapoznaj się z omówieniem aprowizacji.

Zadania są następujące:

  1. Generowanie certyfikatów i kluczy.
  2. Utwórz rejestrację indywidualną dla jednego urządzenia lub rejestracji grupowej dla zestawu urządzeń.
  3. Zainstaluj środowisko uruchomieniowe usługi IoT Edge i zarejestruj urządzenie w usłudze IoT Hub.

Korzystanie z certyfikatów X.509 jako mechanizmu zaświadczania to doskonały sposób skalowania produkcji i upraszczania aprowizacji urządzeń. Zazwyczaj certyfikaty X.509 są rozmieszczane w łańcuchu zaufania certyfikatów. Począwszy od certyfikatu z podpisem własnym lub zaufanego certyfikatu głównego, każdy certyfikat w łańcuchu podpisuje następny niższy certyfikat. Ten wzorzec tworzy delegowany łańcuch zaufania z certyfikatu głównego w dół za pośrednictwem każdego certyfikatu pośredniego do końcowego certyfikatu urządzenia podrzędnego zainstalowanego na urządzeniu.

Napiwek

Jeśli urządzenie ma sprzętowy moduł zabezpieczeń (HSM), taki jak moduł TPM 2.0, zalecamy bezpieczne przechowywanie kluczy X.509 w module HSM. Dowiedz się więcej na temat implementowania aprowizacji bezobsługowej na dużą skalę opisanej w tej strategii za pomocą przykładu iotedge-tpm2cloud.

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 lub wirtualne urządzenie z systemem Linux, które ma być urządzeniem usługi IoT Edge.

Generowanie certyfikatów tożsamości urządzenia

Certyfikat tożsamości urządzenia jest certyfikatem urządzenia podrzędnego, który łączy się za pośrednictwem łańcucha certyfikatów zaufania do najwyższego certyfikatu urzędu certyfikacji X.509. Certyfikat tożsamości urządzenia musi mieć ustawioną nazwę pospolitą (CN) na identyfikator urządzenia, który ma znajdować się w centrum IoT.

Certyfikaty tożsamości urządzeń są używane tylko do aprowizowania urządzenia usługi IoT Edge i uwierzytelniania urządzenia za pomocą usługi Azure IoT Hub. Nie podpisują certyfikatów, w przeciwieństwie do certyfikatów urzędu certyfikacji, które urządzenie usługi IoT Edge przedstawia modułom lub urządzeniom podrzędnym na potrzeby weryfikacji. Aby uzyskać więcej informacji, zobacz Szczegóły użycia certyfikatu usługi Azure IoT Edge.

Po utworzeniu certyfikatu tożsamości urządzenia powinny znajdować się dwa pliki: plik .cer lub pem zawierający publiczną część certyfikatu oraz plik .cer lub pem z kluczem prywatnym certyfikatu. Jeśli planujesz używać rejestracji grup w usłudze DPS, potrzebna jest również publiczna część pośredniego lub głównego certyfikatu urzędu certyfikacji w tym samym łańcuchu zaufania certyfikatu.

Do skonfigurowania automatycznej aprowizacji przy użyciu środowiska X.509 potrzebne są następujące pliki:

  • Certyfikat tożsamości urządzenia i jego certyfikat klucza prywatnego. Jeśli tworzysz rejestrację indywidualną, certyfikat tożsamości urządzenia jest przekazywany do usługi DPS. Klucz prywatny jest przekazywany do środowiska uruchomieniowego usługi IoT Edge.
  • Certyfikat pełnego łańcucha, który powinien mieć co najmniej tożsamość urządzenia i certyfikaty pośrednie w nim. Certyfikat pełnego łańcucha jest przekazywany do środowiska uruchomieniowego usługi IoT Edge.
  • Pośredni lub główny certyfikat urzędu certyfikacji z łańcucha zaufania certyfikatów. Ten certyfikat jest przekazywany do usługi DPS, jeśli tworzysz rejestrację grupową.

Używanie certyfikatów testowych (opcjonalnie)

Jeśli nie masz dostępnego urzędu certyfikacji do tworzenia nowych certyfikatów tożsamości i chcesz wypróbować ten scenariusz, repozytorium git usługi Azure IoT Edge zawiera skrypty, których można użyć do generowania certyfikatów testowych. Te certyfikaty są przeznaczone tylko do testowania programistycznego i nie mogą być używane w środowisku produkcyjnym.

Aby utworzyć certyfikaty testowe, wykonaj kroki opisane w artykule Tworzenie certyfikatów demonstracyjnych w celu przetestowania funkcji urządzeń usługi IoT Edge. Wykonaj dwie wymagane sekcje, aby skonfigurować skrypty generowania certyfikatów i utworzyć certyfikat głównego urzędu certyfikacji. Następnie wykonaj kroki tworzenia certyfikatu tożsamości urządzenia. Po zakończeniu należy mieć następujący łańcuch certyfikatów i parę kluczy:

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

Te certyfikaty są potrzebne na urządzeniu usługi IoT Edge. Jeśli zamierzasz używać rejestracji indywidualnej w usłudze DPS, przekażesz plik .cert.pem. Jeśli zamierzasz użyć rejestracji grup w usłudze DPS, potrzebny jest również pośredni lub główny certyfikat urzędu certyfikacji w tym samym łańcuchu zaufania certyfikatu, aby przekazać. Jeśli używasz certyfikatów demonstracyjnych, użyj certyfikatu <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem do rejestracji grupowej.

Tworzenie rejestracji usługi DPS

Użyj wygenerowanych certyfikatów i kluczy, aby utworzyć rejestrację w usłudze DPS dla co najmniej jednego urządzenia usługi IoT Edge.

Jeśli chcesz aprowizować pojedyncze urządzenie usługi IoT Edge, utwórz rejestrację indywidualną. Jeśli potrzebujesz aprowizacji wielu urządzeń, wykonaj kroki tworzenia rejestracji grupy usługi DPS.

Podczas tworzenia rejestracji w usłudze DPS możesz zadeklarować stan bliźniaczej reprezentacji urządzenia początkowego. W bliźniaczej reprezentacji urządzenia można ustawić tagi, aby grupować urządzenia według dowolnej metryki potrzebnej w rozwiązaniu, takiej jak region, środowisko, lokalizacja lub typ urządzenia. Te tagi służą do tworzenia wdrożeń automatycznych.

Aby uzyskać więcej informacji na temat rejestracji w usłudze device provisioning, zobacz Jak zarządzać rejestracjami urządzeń.

Tworzenie rejestracji indywidualnej usługi DPS

Rejestracje indywidualne przyjmują publiczną część certyfikatu tożsamości urządzenia i są zgodne z certyfikatem na urządzeniu.

Napiwek

Kroki opisane w tym artykule dotyczą witryny Azure Portal, ale można również tworzyć 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.

  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ę:

    • Mechanizm: wybierz pozycję X.509.

    • Plik pem lub .cer certyfikatu podstawowego: przekaż plik publiczny z certyfikatu tożsamości urządzenia. Jeśli skrypty były używane do generowania certyfikatu testowego, wybierz następujący plik:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • Identyfikator urządzenia usługi IoT Hub: podaj identyfikator urządzenia, jeśli chcesz. Identyfikatory urządzeń umożliwiają określanie celu poszczególnych urządzeń na potrzeby wdrożenia modułu. Jeśli nie podasz identyfikatora urządzenia, zostanie użyta nazwa pospolita (CN) w certyfikacie X.509.

    • Urządzenie usługi IoT Edge: wybierz pozycję True , aby zadeklarować, że rejestracja dotyczy urządzenia usługi IoT Edge.

    • Wybierz centra IoT, z którymi można przypisać to urządzenie: wybierz połączone centrum IoT, z którym chcesz połączyć urządzenie. Można wybrać wiele centrów, a urządzenie zostanie przypisane do jednego z nich zgodnie z wybranymi zasadami alokacji.

    • Początkowy stan bliźniaczej reprezentacji urządzenia: dodaj wartość tagu, która ma zostać dodana do bliźniaczej reprezentacji urządzenia, jeśli chcesz. Tagów można używać do grup docelowych urządzeń na potrzeby automatycznego wdrażania. Na przykład:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Wybierz pozycję Zapisz.

W obszarze Zarządzanie rejestracjami możesz wyświetlić identyfikator rejestracji dla właśnie utworzonej rejestracji. Zanotuj ją, ponieważ może być używana podczas aprowizowania urządzenia.

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.

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

  • 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 jedynym oficjalnie obsługiwanym aparatem kontenerów w usłudze IoT Edge. Obrazy kontenerów platformy Docker CE/EE są zgodne ze środowiskiem uruchomieniowym Moby.

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.

  1. Tworzenie lub edytowanie istniejącego pliku konfiguracji demona platformy Docker

    sudo nano /etc/docker/daemon.json
    
  2. Ustaw domyślny sterownik rejestrowania na local sterownik rejestrowania, jak pokazano w przykładzie.

       {
          "log-driver": "local"
       }
    
  3. 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 defender-iot-micro-agent-edge
    

Opcjonalny defender-iot-micro-agent-edge pakiet obejmuje mikroa agenta zabezpieczeń usługi Microsoft Defender for IoT, który zapewnia wgląd w zarządzanie stanem zabezpieczeń, luki w zabezpieczeniach, wykrywanie zagrożeń, zarządzanie flotą i nie tylko, aby ułatwić zabezpieczanie urządzeń usługi IoT Edge. Zaleca się zainstalowanie mikro agenta za pomocą agenta usługi Edge w celu włączenia monitorowania zabezpieczeń i wzmacniania zabezpieczeń urządzeń brzegowych. Aby dowiedzieć się więcej o usłudze Microsoft Defender dla IoT, zobacz Co to jest usługa Microsoft Defender dla IoT dla konstruktorów urządzeń.

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.

Przygotuj następujące informacje:

  • Wartość Zakres identyfikatora usługi DPS. Tę wartość można pobrać ze strony przeglądu wystąpienia usługi DPS w witrynie Azure Portal.
  • Plik łańcucha certyfikatów tożsamości urządzenia na urządzeniu.
  • Plik klucza tożsamości urządzenia na urządzeniu.

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
  1. Znajdź sekcję Aprowizacja pliku. Usuń komentarz wierszy aprowizacji usługi DPS z certyfikatem X.509 i upewnij się, że wszystkie inne wiersze aprowizacji są oznaczone jako komentarz.

    # DPS provisioning with X.509 certificate
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "x509"
    registration_id = "REGISTRATION_ID_HERE"
    
    identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE"
    
    identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE"
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Zaktualizuj wartość id_scope za pomocą identyfikatora zakresu skopiowanego z wystąpienia usługi DPS.

  3. registration_id Podaj wartość dla urządzenia, czyli identyfikator urządzenia, który znajduje się w usłudze IoT Hub. Identyfikator rejestracji musi być zgodny z nazwą pospolitą certyfikatu tożsamości.

  4. Zaktualizuj wartości i identity_pk przy użyciu certyfikatu identity_cert i informacji o kluczu.

    Wartość certyfikatu tożsamości może być podana jako identyfikator URI pliku lub może być wystawiana dynamicznie przy użyciu est lub lokalnego urzędu certyfikacji. Usuń komentarz tylko z jednego wiersza na podstawie wybranego formatu.

    Wartość klucza prywatnego tożsamości można podać jako identyfikator URI pliku lub identyfikator URI PKCS#11. Usuń komentarz tylko z jednego wiersza na podstawie wybranego formatu.

    Jeśli używasz jakichkolwiek identyfikatorów URI PKCS#11, znajdź sekcję PKCS#11 w pliku konfiguracji i podaj informacje o konfiguracji PKCS#11.

    Aby uzyskać więcej informacji na temat certyfikatów, zobacz Zarządzanie certyfikatami usługi IoT Edge.

    Aby uzyskać więcej informacji na temat aprowizacji ustawień konfiguracji, zobacz Konfigurowanie ustawień urządzenia usługi IoT Edge.

  5. 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.

  6. 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.

  7. Zapisz i zamknij plik.

Zastosuj zmiany konfiguracji wprowadzone w usłudze IoT Edge.

sudo iotedge config apply

Weryfikowanie pomyślnej instalacji

Jeśli środowisko uruchomieniowe zostało pomyślnie uruchomione, możesz przejść do usługi IoT Hub i rozpocząć wdrażanie modułów usługi IoT Edge na urządzeniu.

Możesz sprawdzić, czy użyto indywidualnej rejestracji utworzonej 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.

Użyj następujących poleceń na urządzeniu, aby sprawdzić, czy usługa IoT Edge została zainstalowana i uruchomiona pomyślnie.

Sprawdź stan usługi IoT Edge.

sudo iotedge system status

Sprawdzanie dzienników usług.

sudo iotedge system logs

Lista uruchomionych modułów.

sudo iotedge list

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.