Kurz: Zřízení zařízení pomocí skupin pro registraci symetrických klíčů

V tomto kurzu se dozvíte, jak bezpečně zřídit více simulovaných zařízení symetrických klíčů pro jednu službu IoT Hub pomocí skupiny registrací.

Služba Azure IoT Hub Device Provisioning podporuje dva typy registrací pro zřizování zařízení:

  • Skupiny registrací: Slouží k registraci několika souvisejících zařízení. V tomto kurzu se dozvíte, jak se zřizují skupiny registrací.
  • Jednotlivé registrace: Slouží k registraci jednoho zařízení.

Služba Azure IoT Hub Device Provisioning podporuje tři formy ověřování pro zřizování zařízení:

  • Certifikáty X.509
  • Čip TPM (Trusted Platform Module)
  • Symetrické klíče – tento kurz ukazuje ověření symetrického klíče.

Některá zařízení nemusí mít certifikát, ČIP TPM ani žádnou jinou funkci zabezpečení, kterou je možné použít k bezpečné identifikaci zařízení. Pro taková zařízení zahrnuje služba Azure IoT Hub Device Provisioning Service (DPS) symetrické ověření klíče. Ověření symetrického klíče lze použít k identifikaci zařízení na základě jedinečných informací, jako je adresa MAC nebo sériové číslo.

V tomto kurzu dokončíte následující cíle:

  • Definujte jedinečné ID registrace pro každé zařízení.
  • Vytvořte skupinu registrací, která používá ověření symetrického klíče.
  • Vytvoří klíč zařízení pro každé zařízení pomocí jedinečného ID registrace a sdíleného klíče skupiny registrací.
  • Zřiďte zařízení pomocí klíče zařízení a vzorového kódu v sadách SDK zařízení Azure IoT.

Tento kurz je orientovaný na pracovní stanici se systémem Windows. Stejným postupem se však můžete řídit i na Linuxu. Příklad Linuxu najdete v tématu Kurz: Zřízení geografické latence.

Poznámka:

Pokud jste už dříve dokončili rychlý start: Zřízení simulovaného zařízení symetrického klíče a nastavení vašich prostředků Azure a vývojového prostředí můžete v tomto kurzu pokračovat vytvořením skupiny registrací symetrických klíčů.

Požadavky

  • Pokud používáte vývojové prostředí Windows, nainstalujte sadu Visual Studio 2022 s povolenou úlohou Vývoj desktopových aplikací s C++ . Podporují se také sady Visual Studio 2019, Visual Studio 2017 a Visual Studio 2015. Informace o Linuxu nebo macOS najdete v příslušné části Přípravy vývojového prostředí v dokumentaci k sadě SDK.

  • Nainstalujte nejnovější systém sestavení CMake. Nezapomeňte zaškrtnout možnost, která do cesty přidá spustitelný soubor CMake.

    Důležité

    Před zahájením instalace ověřte, že jsou na vašem počítači nainstalované požadavky sady Visual Studio (Visual Studio a úloha Vývoj desktopových aplikací pomocí jazyka CMake C++). Jakmile jsou požadované součásti k dispozici a stažený soubor je ověřený, nainstalujte sestavovací systém CMake. Mějte také na paměti, že starší verze systému sestavení CMake se nedaří vygenerovat soubor řešení použitý v tomto článku. Ujistěte se, že používáte nejnovější verzi CMake.

  • Nainstalujte Python 3.7 nebo novější nainstalovaný na počítači s Windows. Verzi Pythonu můžete zkontrolovat spuštěním python --versionpříkazu .

Příprava vývojového prostředí

V této části připravíte vývojové prostředí pro sestavení sady Sdk pro zařízení Azure IoT pro jazyk C. Vzorový kód zřídí zařízení během spouštěcí sekvence zařízení.

  1. Ve webovém prohlížeči přejděte na stránku vydání sady Azure IoT C SDK.

  2. Zkopírujte název značky pro nejnovější verzi sady Azure IoT C SDK, například: lts_03_2024.

  3. Otevřete příkazový řádek Windows a spuštěním následujících příkazů naklonujte nejnovější verzi úložiště Azure IoT Device SDK pro C GitHub. Nahraďte <release-tag> značkou, kterou jste zkopírovali v předchozím kroku.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Dokončení této operace může trvat několik minut.

  4. Po dokončení operace spusťte z azure-iot-sdk-c adresáře následující příkazy:

    mkdir cmake
    cd cmake
    
  5. Ukázka kódu používá symetrický klíč k zajištění ověření identity. Spuštěním následujícího příkazu sestavte verzi sady SDK specifickou pro vaši vývojovou klientskou platformu, která zahrnuje klienta zřizování zařízení:

    cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    

    Tip

    Pokud cmake kompilátor jazyka C++ nenajdete, může se při spuštění výše uvedeného příkazu zobrazit chyby sestavení. Pokud k tomu dojde, zkuste příkaz spustit v příkazovém řádku sady Visual Studio.

  6. Po úspěšném dokončení sestavení bude několik posledních výstupních řádků vypadat podobně jako v následujícím výstupu:

    $ cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    -- Building for: Visual Studio 16 2019
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22621.
    -- The C compiler identification is MSVC 19.29.30146.0
    -- The CXX compiler identification is MSVC 19.29.30146.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/azure-iot-sdk-c/cmake
    
  1. Otevřete příkazový řádek nebo terminál Git Bash.

  2. Pomocí následujícího příkazu naklonujte úložiště Azure IoT SDK pro GitHub pro C# :

    git clone https://github.com/Azure/azure-iot-sdk-csharp.git
    
  1. Otevřete příkazový řádek nebo terminál Git Bash.

  2. Naklonujte sadu Azure IoT SDK pro úložiště Node.js GitHub pomocí následujícího příkazu:

    git clone https://github.com/Azure/azure-iot-sdk-node.git --recursive
    
  1. Otevřete příkazový řádek nebo terminál Git Bash.

  2. Naklonujte úložiště GitHub sdk pro zařízení Azure IoT pro Python pomocí následujícího příkazu:

    git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
    

    Poznámka:

    Ukázky použité v tomto kurzu jsou ve větvi v2 úložiště azure-iot-sdk-python. V3 sady Python SDK je k dispozici pro použití v beta verzi. Informace o aktualizaci ukázek kódu V2 pro použití verze 3 sady Python SDK najdete v průvodci migrací sady Sdk pro zařízení Azure IoT pro Python.

  1. Otevřete příkazový řádek nebo terminál Git Bash.

  2. Naklonujte úložiště Azure IoT SDK pro GitHub pro Javu pomocí následujícího příkazu:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Přejděte do kořenového azure-iot-sdk-java adresáře a sestavte projekt, aby se stáhly všechny potřebné balíčky. Dokončení tohoto kroku může trvat několik minut.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    

Vytvoření skupiny registrací symetrického klíče

  1. Přihlaste se k webu Azure Portal a přejděte k instanci služby Device Provisioning.

  2. V části Nastavení navigační nabídky vyberte Spravovat registrace.

  3. Vyberte Přidat skupinu registrací.

  4. Na kartě Registrace a zřizování na stránce Přidat skupinu registrací zadejte následující informace pro konfiguraci podrobností skupiny registrací:

    Pole Popis
    Osvědčení Jako mechanismus ověření identity vyberte symetrický klíč.
    Nastavení symetrického klíče Pokud chcete použít náhodně generované klíče, zaškrtněte políčko Generovat symetrické klíče automaticky. Pokud chcete zadat vlastní klíče, zrušte zaškrtnutí tohoto políčka.
    Název skupiny Zadejte název skupiny zařízení. Název skupiny registrací je řetězec nerozlišující velká a malá písmena (maximálně 128 znaků dlouhý) alfanumerických znaků a speciálních znaků: '-', '.', '_'':', . Poslední znak musí být alfanumerický nebo pomlčka ('-').
    Stav zřizování Pokud chcete, aby byla tato skupina registrací dostupná pro zřizování zařízení, zaškrtněte políčko Povolit tuto registraci. Pokud chcete, aby byla skupina zakázaná, zrušte zaškrtnutí tohoto políčka. Toto nastavení můžete později změnit.
    Zásady opětovného zřízení Zvolte zásadu opětovného zřízení, která odráží způsob, jakým má DPS zpracovávat zařízení, která požadují opětovné zřízení. Další informace najdete v tématu Zásady opětovného zřízení.

    Screenshot that shows adding an enrollment group for symmetric key attestation.

  5. Vyberte Další: IoT Hubs.

  6. Na kartě Centra IoT na stránce Přidat skupinu registrací zadejte následující informace, abyste zjistili, pro které služby IoT Hubs může skupina registrací zřídit zařízení:

    Pole Popis
    Cílení center IoT Vyberte jedno nebo více propojených center IoT nebo přidejte nový odkaz na centrum IoT. Další informace o propojení ioT Hubů s vaší instancí DPS najdete v tématu Propojení a správa ioT Hubů.
    Zásady přidělování Pokud jste vybrali více propojených ioT Hubů, vyberte způsob přiřazení zařízení k různým rozbočovačům. Další informace ozásadách

    Pokud jste vybrali jenom jedno propojené centrum IoT, doporučujeme použít rovnoměrně vážené distribuční zásady.

    Screenshot that shows connecting IoT hubs to the new enrollment group.

  7. Vybrat další: Nastavení zařízení

  8. Na kartě Nastavení zařízení na stránce Přidat skupinu registrací zadejte následující informace, které definují, jak budou nově zřízená zařízení nakonfigurována:

    Pole Popis
    IoT Edge Pokud budou všechna zařízení zřízená prostřednictvím této skupiny spouštět Azure IoT Edge, zkontrolujte povolení IoT Edge na zřízených zařízeních. Pokud je tato skupina určená jenom pro zařízení s podporou IoT Edge, zrušte zaškrtnutí tohoto políčka. Všechna zařízení ve skupině budou povolená pro IoT Edge nebo žádná.
    Značky zařízení Pomocí tohoto textového pole můžete zadat všechny značky, které chcete použít u dvojčat zařízení zřízených zařízení.
    Požadované vlastnosti Pomocí tohoto textového pole zadejte požadované vlastnosti, které chcete použít u dvojčat zařízení zřízených zařízení.

    Další informace najdete v tématu Principy a použití dvojčat zařízení ve službě IoT Hub.

  9. Vyberte Další: Zkontrolovat a vytvořit.

  10. Na kartě Zkontrolovat a vytvořit ověřte všechny hodnoty a pak vyberte Vytvořit.

Když vytvoříte skupinu registrací, SLUŽBA DPS vygeneruje primární klíč a sekundární klíč a pak je přidá do položky registrace. Skupina registrace symetrického klíče se zobrazí pod sloupcem Název skupiny na kartě Skupiny registrací.

Otevřete registraci a zkopírujte hodnotu primárního klíče. Tento klíč je váš klíč skupiny.

Volba jedinečného ID registrace pro zařízení

Aby bylo možné identifikovat každé zařízení, musí být definováno jedinečné ID registrace. Můžete použít adresu MAC, sériové číslo nebo jakékoli jedinečné informace ze zařízení.

V tomto příkladu používáme kombinaci adresy MAC a sériového čísla, které tvoří následující řetězec pro ID registrace.

sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6

Vytvořte jedinečná ID registrace pro každé zařízení. ID registrace je řetězec nerozlišující velká a malá písmena (maximálně 128 znaků dlouhý) alfanumerických znaků a následující speciální znaky: - . _ :. Poslední znak musí být alfanumerický nebo pomlčka (-).

Odvození klíče zařízení

K vygenerování klíčů zařízení použijte primární klíč skupiny registrací k výpočtu hodnoty hash HMAC-SHA256 ID registrace pro každé zařízení. Výsledek se pak převede do formátu Base 64 pro každé zařízení.

Upozorňující

Kód vašeho zařízení pro každé zařízení by měl obsahovat jenom odvozený klíč zařízení pro dané zařízení. Nezahrnujte do kódu zařízení primární klíč skupiny. Ohrožený klíč skupiny může ohrozit zabezpečení všech zařízení, která se s ním ověřují.

Rozšíření IoT pro Azure CLI poskytuje příkaz az iot dps enrollment-group compute-device-key pro generování odvozených klíčů zařízení. Tento příkaz lze použít v systémech Windows i Linux.

Nahraďte hodnotu parametru --keyprimárním klíčem ze skupiny registrací.

Nahraďte hodnotu parametru --registration-id vaším ID registrace.

az iot dps enrollment-group compute-device-key --key <group_primary_key> --registration-id <device_registration_id>

Příklad výsledku:

"Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc="

Každé zařízení používá svůj odvozený klíč zařízení a jedinečné ID registrace k ověření symetrického klíče se skupinou registrací během zřizování.

Příprava a spuštění kódu zřizování zařízení

V této části aktualizujete vzorový kód zařízení tak, aby se spouštěcí sekvence zařízení odeslala do instance služby Device Provisioning Service. Tato spouštěcí sekvence způsobí, že zařízení bude rozpoznáno, ověřeno a přiřazeno k centru IoT propojenému s instancí služby Device Provisioning.

Ukázkový kód zřizování provádí následující úlohy v pořadí:

  1. Ověří zařízení pomocí prostředku Device Provisioning pomocí následujících tří parametrů:

    • Rozsah ID služby Device Provisioning
    • ID registrace pro vaše zařízení.
    • Odvozený klíč zařízení pro vaše zařízení.
  2. Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.

Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:

  1. V hlavní nabídce služby Device Provisioning vyberte Přehled.

  2. Zkopírujte hodnotu oboru ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. V sadě Visual Studio otevřete soubor řešení azure_iot_sdks.sln, který se vygeneroval spuštěním CMake. Soubor řešení by se měl nacházet v následujícím umístění:

    
    \azure-iot-sdk-c\cmake\azure_iot_sdks.sln
    
    

    Tip

    Pokud soubor nebyl vygenerován v adresáři cmake, ujistěte se, že jste použili nejnovější verzi systému sestavení CMake.

  4. V okně Průzkumník řešení sady Visual Studio přejděte do složky Provision_Samples. Rozbalte ukázkový projekt s názvem prov_dev_client_sample. Rozbalte zdrojové soubory a otevřete prov_dev_client_sample.c.

  5. Najděte konstantu id_scope a nahraďte ji hodnotou oboru ID, kterou jste zkopírovali z webu Azure Portal.

    static const char* id_scope = "0ne00002193";
    
  6. Ve stejném souboru vyhledejte definici funkce main(). Zkontrolujte, jestli je proměnná hsm_type nastavená na hodnotu SECURE_DEVICE_TYPE_SYMMETRIC_KEY, jak je vidět dole:

    SECURE_DEVICE_TYPE hsm_type;
    //hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Vyhledejte volání prov_dev_set_symmetric_key_info() v prov_dev_client_sample.c , který je okomentován.

    // Set the symmetric key if using they auth type
    //prov_dev_set_symmetric_key_info("<symm_registration_id>", "<symmetric_Key>");
    

    Odkomentujte volání funkce a nahraďte zástupné hodnoty (včetně úhlových závorek) ID registrace, které jste zvolili v části Zvolit jedinečné ID registrace pro zařízení , a odvozený klíč zařízení, který jste vygenerovali v odvození klíče zařízení.

    // Set the symmetric key if using they auth type
    prov_dev_set_symmetric_key_info("sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6", "Jsm0lyGpjaVYVP2g3FnmnmG9dI/9qU24wNoykUmermc=");
    

    Upozornění

    Mějte na paměti, že tento krok ponechá odvozený klíč zařízení zahrnutý jako součást image pro každé zařízení, což není doporučeným osvědčeným postupem zabezpečení. To je jeden z důvodů, proč zabezpečení a snadné použití jsou často kompromisy. Na základě vlastních požadavků musíte plně zkontrolovat zabezpečení vašich zařízení.

  8. Uložte soubor.

  9. Klikněte pravým tlačítkem myši na prov_dev_client_sample projekt a vyberte Nastavit jako spouštěný projekt.

  10. V nabídce sady Visual Studio vyberte Ladit>Spustit bez ladění a spusťte řešení. V výzvě k opětovnému sestavení projektu vyberte možnost Ano , aby se projekt před spuštěním znovu sestavil.

    Následující výstup je příkladem úspěšného připojení zařízení k instanci služby zřizování, která se má přiřadit k centru IoT:

    Provisioning API Version: 1.9.1
    
    Registering Device
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service: contoso-hub-2.azure-devices.net, deviceId: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    Press enter key to exit:
    

Ukázkový kód zřizování provádí následující úlohy:

  1. Ověří zařízení pomocí prostředku Device Provisioning pomocí následujících tří parametrů:

    • Rozsah ID služby Device Provisioning
    • ID registrace pro vaše zařízení.
    • Odvozený klíč zařízení pro vaše zařízení.
  2. Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.

  3. Odešle testovací telemetrická zpráva do centra IoT.

Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:

  1. V hlavní nabídce služby Device Provisioning vyberte Přehled.

  2. Zkopírujte hodnotu oboru ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Otevřete příkazový řádek a přejděte do symetrického klíčeSample v naklonovaném úložišti sady SDK:

    cd .\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample
    
  4. Ve složce SymmetricKeySample otevřete Parameters.cs v textovém editoru. Tento soubor zobrazuje parametry odkazované ukázkou. Při spuštění ukázky se v tomto článku používají pouze první tři požadované parametry. Zkontrolujte kód v tomto souboru. Nejsou potřeba žádné změny.

    Parametr Požadováno Popis
    --i nebo --IdScope True Rozsah ID instance DPS
    --r nebo --RegistrationId True ID registrace zařízení. ID registrace je řetězec nerozlišující velká a malá písmena (maximálně 128 znaků dlouhý) alfanumerických znaků a speciálních znaků: '-', '.', '_', ':'. Poslední znak musí být alfanumerický nebo pomlčka ('-').
    --p nebo --PrimaryKey True Primární klíč jednotlivé registrace nebo odvozeného klíče zařízení skupinové registrace.
    --g nebo --GlobalDeviceEndpoint False Globální koncový bod pro zařízení, ke kterému se mají připojit. Výchozí hodnota global.azure-devices-provisioning.net
    --t nebo --TransportType False Přenos, který se má použít ke komunikaci s instancí zřizování zařízení. Výchozí hodnota Mqttje . Možné hodnoty zahrnují Mqtt, , Mqtt_WebSocket_Only, AmqpMqtt_Tcp_Only, Amqp_WebSocket_Only, Amqp_Tcp_only, a Http1.
  5. Ve složce SymmetricKeySample otevřete ProvisioningDeviceClientSample.cs v textovém editoru. Tento soubor ukazuje, jak se třída SecurityProviderSymmetricKey používá spolu s provisioningDeviceClient třídy pro zřízení simulovaného symetrického klíče zařízení. Zkontrolujte kód v tomto souboru. Nejsou potřeba žádné změny.

  6. Pomocí následujícího příkazu sestavte a spusťte ukázkový kód:

    • Nahraďte <id-scope> oborem ID, který jste zkopírovali z webu Azure Portal.
    • Nahraďte <registration-id> ID registrace, které jste zvolili v části Zvolit jedinečné ID registrace zařízení.
    • Nahraďte <primarykey> odvozeným klíčem zařízení, který jste vygenerovali.
    dotnet run --i <id-scope> --r <registration-id> --p <primarykey>
    
  7. Měl by se zobrazit podobný následujícímu výstupu. Řetězec TestMessage se odešle do centra jako testovací zpráva.

    D:\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\SymmetricKeySample>dotnet run --i 0ne00000A0A --r sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 --p sbDDeEzRuEuGKag+kQKV+T1QGakRtHpsERLP0yPjwR93TrpEgEh/Y07CXstfha6dhIPWvdD1nRxK5T0KGKA+nQ==
    
    Initializing the device provisioning client...
    Initialized for registration Id sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6 registered to contoso-hub-2.azure-devices.net.
    Creating symmetric key authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    

Ukázkový kód zřizování provádí následující úlohy v pořadí:

  1. Ověří zařízení pomocí prostředku Device Provisioning pomocí následujících čtyř parametrů:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.

  3. Odešle testovací telemetrická zpráva do centra IoT.

Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:

  1. V hlavní nabídce služby Device Provisioning vyberte Přehled.

  2. Zkopírujte hodnotu oboru ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Otevřete příkazový řádek pro spouštění příkazů Node.js a přejděte do následujícího adresáře:

    cd azure-iot-sdk-node\provisioning\device\samples
    
  4. Ve složce zřizování, zařízení/samples otevřete register_symkey.js a zkontrolujte kód.

    Ve výchozím nastavení se jako přenosový protokol používá MQTT. Pokud chcete použít jiný protokol, zakomentujte následující řádek a odkomentujte řádek pro příslušný protokol.

    var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
    

    Všimněte si také, že ukázkový kód nastavuje vlastní datovou část:

    provisioningClient.setProvisioningPayload({a: 'b'});
    

    Tento kód můžete okomentovat, protože tento kód není pro účely tohoto kurzu potřeba. Vlastní datovou část můžete použít při přiřazení zařízení k IoT Hubu pomocí vlastního webhooku přidělování. Další informace najdete v tématu Kurz: Použití vlastních zásad přidělování.

    Metoda provisioningClient.register() se pokusí o registraci zařízení.

  5. Na příkazovém řádku spusťte následující příkazy pro nastavení proměnných prostředí používaných ukázkou:

    • První příkaz nastaví proměnnou PROVISIONING_HOST prostředí na globální koncový bod zařízení. Tento koncový bod je stejný pro všechny instance DPS.
    • Nahraďte <id-scope> oborem ID, který jste zkopírovali z webu Azure Portal.
    • Nahraďte <registration-id> ID registrace, které jste zvolili v části Zvolit jedinečné ID registrace zařízení.
    • Nahraďte <defived-device-key> odvozeným klíčem zařízení, který jste vygenerovali v části Odvození klíče zařízení.
    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
    
  6. Pomocí následujících příkazů sestavte a spusťte ukázkový kód:

     npm install
    
    node register_symkey.js
    
  7. Teď byste měli vidět něco podobného jako v následujícím výstupu. Řetězec "Hello World" se odešle do centra jako testovací zpráva.

    registration succeeded
    assigned hub=contoso-hub-2.azure-devices.net
    deviceId=sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    payload=undefined
    Client connected
    send status: MessageEnqueued
    

Ukázkový kód zřizování provádí následující úlohy v pořadí:

  1. Ověří zařízení pomocí prostředku Device Provisioning pomocí následujících čtyř parametrů:

    • PROVISIONING_HOST
    • PROVISIONING_IDSCOPE
    • PROVISIONING_REGISTRATION_ID
    • PROVISIONING_SYMMETRIC_KEY
  2. Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.

  3. Odešle testovací telemetrická zpráva do centra IoT.

Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:

  1. V hlavní nabídce služby Device Provisioning vyberte Přehled.

  2. Zkopírujte hodnotu oboru ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Otevřete příkazový řádek a přejděte do adresáře, kde se nachází ukázkový soubor provision_symmetric_key.py.

    cd azure-iot-sdk-python\samples\async-hub-scenarios
    
  4. Na příkazovém řádku spusťte následující příkazy pro nastavení proměnných prostředí používaných ukázkou:

    • První příkaz nastaví proměnnou PROVISIONING_HOST prostředí na globální koncový bod zařízení. Tento koncový bod je stejný pro všechny instance DPS.
    • Nahraďte <id-scope> oborem ID, který jste zkopírovali z webu Azure Portal.
    • Nahraďte <registration-id> ID registrace, které jste zvolili v části Zvolit jedinečné ID registrace zařízení.
    • Nahraďte <defived-device-key> odvozeným klíčem zařízení, který jste vygenerovali v části Odvození klíče zařízení.
    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    
    set PROVISIONING_IDSCOPE=<id-scope>
    
    set PROVISIONING_REGISTRATION_ID=<registration-id>
    
    set PROVISIONING_SYMMETRIC_KEY=<derived-device-key>
    
  5. Nainstalujte knihovnu azure-iot-device spuštěním následujícího příkazu.

    pip install azure-iot-device
    
  6. Spusťte vzorový kód Pythonu v provision_symmetric_key.py.

    python provision_symmetric_key.py
    
  7. Teď byste měli vidět něco podobného jako v následujícím výstupu. Některé ukázkové zprávy telemetrie rychlosti větru se také odesílají do centra jako test.

    D:\azure-iot-sdk-python\samples\async-hub-scenarios>python provision_symmetric_key.py
    The complete registration result is
    sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    contoso-hub-2.azure-devices.net
    initialAssignment
    null
    Will send telemetry from the provisioned device
    sending message #1
    sending message #2
    sending message #3
    sending message #4
    sending message #5
    sending message #6
    sending message #7
    sending message #8
    sending message #9
    sending message #10
    done sending message #1
    done sending message #2
    done sending message #3
    done sending message #4
    done sending message #5
    done sending message #6
    done sending message #7
    done sending message #8
    done sending message #9
    done sending message #10
    

Ukázkový kód zřizování provádí následující úlohy v pořadí:

  1. Ověří zařízení pomocí prostředku Device Provisioning pomocí následujících čtyř parametrů:

    • GLOBAL_ENDPOINT
    • SCOPE_ID
    • REGISTRATION_ID
    • SYMMETRIC_KEY
  2. Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.

  3. Odešle testovací telemetrická zpráva do centra IoT.

Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:

  1. V hlavní nabídce služby Device Provisioning vyberte Přehled.

  2. Zkopírujte hodnotu oboru ID.

    Screenshot that shows copying the ID scope from the DPS overview pane.

  3. Otevřete vzorový kód zařízení v Javě pro úpravy. Úplná cesta k vzorovém kódu zařízení je:

    azure-iot-sdk-java/provisioning/provisioning-samples/provisioning-symmetrickey-individual-sample/src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningSymmetricKeyIndividualEnrollmentSample.java

  4. Nastavte hodnotu následujících proměnných pro vaši registraci DPS a zařízení:

    • Nahraďte [Your scope ID here] oborem ID, který jste zkopírovali z webu Azure Portal.
    • Nahraďte [Your Provisioning Service Global Endpoint here] globálním koncovým bodem zařízení: global.azure-devices-provisioning.net. Tento koncový bod je stejný pro všechny instance DPS.
    • Nahraďte [Enter your Symmetric Key here] odvozeným klíčem zařízení, který jste vygenerovali v části Odvození klíče zařízení.
    • Nahraďte [Enter your Registration ID here] ID registrace, které jste zvolili v části Zvolit jedinečné ID registrace zařízení.
    private static final String SCOPE_ID = "[Your scope ID here]";
    private static final String GLOBAL_ENDPOINT = "[Your Provisioning Service Global Endpoint here]";
    private static final String SYMMETRIC_KEY = "[Enter your Symmetric Key here]";
    private static final String REGISTRATION_ID = "[Enter your Registration ID here]";
    

    Upozornění

    Mějte na paměti, že tento krok ponechá odvozený klíč zařízení zahrnutý jako součást image pro každé zařízení, což není doporučeným osvědčeným postupem zabezpečení. To je jeden z důvodů, proč zabezpečení a snadné použití jsou často kompromisy. Na základě vlastních požadavků musíte plně zkontrolovat zabezpečení vašich zařízení.

  5. Otevřete příkazový řádek pro sestavení. Přejděte do složky ukázkového projektu zřizování úložiště Sady Java SDK.

    cd azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-symmetrickey-individual-sample
    
  6. Sestavte ukázku.

    mvn clean install
    
  7. Přejděte do target složky a spusťte vytvořený .jar soubor. java V příkazu nahraďte {version} zástupný symbol verzí v .jar názvu souboru na vašem počítači.

    cd target
    java -jar ./provisioning-symmetrickey-individual-sample-{version}-with-deps.jar
    
  8. Teď byste měli vidět něco podobného jako v následujícím výstupu.

    Starting...
    Beginning setup.
    WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
    2022-10-07 18:14:48,388 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.2
    2022-10-07 18:14:48,390 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread...
    Waiting for Provisioning Service to register
    2022-10-07 18:14:48,392 INFO (global.azure-devices-provisioning.net-002edcf5-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service...
    2022-10-07 18:14:48,518 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message
    2022-10-07 18:14:48,521 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using symmetric key
    2022-10-07 18:14:49,252 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device...
    2022-10-07 18:14:49,253 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING
    2022-10-07 18:14:52,459 INFO (global.azure-devices-provisioning.net-002edcf5-Cxn002edcf5-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully
    IotHUb Uri : contoso-hub-2.azure-devices.net
    Device ID : sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6
    2022-10-07 18:14:58,424 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-10-07 18:14:58,436 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-10-07 18:14:58,440 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.1.1
    2022-10-07 18:14:58,450 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection...
    2022-10-07 18:14:58,471 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet...
    2022-10-07 18:14:59,314 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged
    2022-10-07 18:14:59,315 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/#
    2022-10-07 18:14:59,378 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6/messages/devicebound/# was acknowledged
    2022-10-07 18:14:59,379 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully
    2022-10-07 18:14:59,381 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established
    2022-10-07 18:14:59,383 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK
    2022-10-07 18:14:59,389 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads
    2022-10-07 18:14:59,392 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details
    2022-10-07 18:14:59,395 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully
    2022-10-07 18:14:59,404 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully
    Sending message from device to IoT Hub...
    2022-10-07 18:14:59,408 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    Press any key to exit...
    2022-10-07 18:14:59,409 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    2022-10-07 18:14:59,777 DEBUG (MQTT Call: sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] )
    2022-10-07 18:14:59,779 DEBUG (contoso-hub-2.azure-devices.net-sn-007-888-abc-mac-a1-b2-c3-d4-e5-f6-c32c76d0-Cxn0e70bbf7-8476-441d-8626-c17250585ee6-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [32cf12c4-4db1-4562-9d8c-267c0506636f] Message Id [2e1717be-cfcf-41a7-b1c0-59edeb8ea865] ) with status OK
    Message received! Response status: OK
    

Potvrzení registrace zřizování zařízení

V tomto kurzu jste použili zásadu přidělení statické konfigurace k přiřazení zařízení, která se registrují prostřednictvím skupiny registrací do stejného centra IoT. Pokud ale zařízení může být zřízeno pro některé z několika center IoT, můžete zkontrolovat záznamy registrace skupiny registrací a zjistit, pro které centrum IoT bylo zařízení zřízeno:

  1. Na webu Azure Portal přejděte do vaší instance DPS.

  2. V nabídce Nastavení vyberte Spravovat registrace.

  3. Vyberte skupiny registrací.

  4. Vyberte skupinu registrací, kterou jste pro účely tohoto kurzu vytvořili.

  5. Na stránce Podrobnosti skupiny registrací vyberte Stav registrace.

  6. Vyhledejte ID zařízení pro sloupec ID zařízení a poznamenejte si centrum IoT ve sloupci Přiřazené centrum IoT.

    Pokud chcete zobrazit další podrobnosti, jako je počáteční dvojče přiřazené k zařízení, můžete vybrat záznam zařízení.

Ověření zařízení ve službě IoT Hub:

  1. Na webu Azure Portal přejděte do centra IoT, ke kterému bylo vaše zařízení přiřazeno.

  2. V nabídce Správa zařízení vyberte Zařízení.

  3. Pokud se vaše zařízení úspěšně zřídilo, mělo by se jeho ID zařízení zobrazit v seznamu s povoleným stavem. Pokud zařízení nevidíte, vyberte Aktualizovat.

    Device is registered with the IoT hub

Poznámka:

Pokud jste změnili počáteční stav dvojčete zařízení z výchozí hodnoty ve skupině registrací, může zařízení vyžádat požadovaný stav dvojčete z centra a odpovídajícím způsobem jednat. Další informace najdete v tématu Principy a použití dvojčat zařízení ve službě IoT Hub.

Zřízení dalších zařízení

Pokud chcete zřídit více zařízení prostřednictvím skupiny registrací, postupujte podle kroků v předchozích částech:

  1. Zvolte jedinečné ID registrace zařízení.

  2. Odvodit klíč zařízení. Stejně jako dříve použijte primární klíč pro skupinu registrací jako klíč skupiny.

  3. Spusťte kód zřizování zařízení. Nahraďte potřebné artefakty novým odvozeným klíčem zařízení a ID registrace.

Vyčištění prostředků

Pokud chcete pokračovat v práci na ukázce klienta zařízení a prozkoumat ji, nevyčistit prostředky vytvořené v tomto kurzu. Pokud pokračovat nechcete, pomocí následujícího postupu odstraňte všechny prostředky vytvořené v tomto kurzu.

Odstranění skupiny registrací

Odstraněním skupiny registrací se neodstraní přidružené záznamy registrace. Tyto osamocené záznamy se započítávají do kvóty registrací pro instanci DPS. Z tohoto důvodu je osvědčeným postupem odstranit všechny záznamy registrace přidružené ke skupině registrací před odstraněním samotné skupiny registrací.

  1. Na webu Azure Portal přejděte do vaší instance DPS.

  2. V nabídce Nastavení vyberte Spravovat registrace.

  3. Vyberte kartu Skupiny registrací.

  4. Vyberte název skupiny registrací, kterou jste pro tento kurz použili k otevření stránky s podrobnostmi.

  5. Na stránce s podrobnostmi o registraci vyberte Stav registrace. Potom zaškrtněte políčko vedle záhlaví sloupce ID zařízení a vyberte všechny registrační záznamy pro skupinu registrací. Výběrem možnosti Odstranit v horní části stránky odstraňte záznamy o registraci.

  6. Vraťte se na stránku Spravovat registrace .

  7. Zaškrtněte políčko vedle názvu skupiny registrací, kterou jste použili pro účely tohoto kurzu.

  8. V horní části stránky vyberte Odstranit.

Odstranění registrací zařízení ze služby IoT Hub

  1. Na webu Azure Portal přejděte do centra IoT, ke kterému bylo vaše zařízení přiřazeno.

  2. V části Správa zařízení v navigační nabídce vyberte Zařízení.

  3. Zaškrtněte políčko vedle ID zařízení zařízení, která jste zaregistrovali v tomto kurzu.

  4. V horní části stránky vyberte Odstranit.

Další kroky

V tomto kurzu jste zřídili více zařízení do jednoho centra IoT pomocí skupiny registrací. Dále se dozvíte, jak zřídit zařízení IoT napříč několika rozbočovači.