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 ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Proveďte kroky v části Nastavení služby IoT Hub Device Provisioning pomocí webu Azure Portal.
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 na počítač se systémem Windows sadu .NET SDK 6.0 nebo novější. Ke kontrole verze můžete použít následující příkaz.
dotnet --info
- Nainstalujte Node.js verze 4.0 nebo novější.
- Nainstalujte Python 3.7 nebo novější nainstalovaný na počítači s Windows. Verzi Pythonu můžete zkontrolovat spuštěním
python --version
příkazu .
Nainstalujte na počítač sadu Java SE Development Kit 8 nebo novější.
Stáhněte a nainstalujte Maven.
- Nainstalujte nejnovější verzi Git. Ujistěte se, že je Git přidaný do proměnných prostředí, které jsou přístupné pro příkazové okno. Nejnovější verzi nástrojů pro instalaci, včetně Git Bashu, aplikace příkazového řádku, kterou můžete použít k interakci s místním úložištěm Git, najdete v klientských nástrojích
git
Gitu společnosti Software Freedom Conservancy.
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í.
Ve webovém prohlížeči přejděte na stránku vydání sady Azure IoT C SDK.
Zkopírujte název značky pro nejnovější verzi sady Azure IoT C SDK, například:
lts_03_2024
.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.
Po dokončení operace spusťte z
azure-iot-sdk-c
adresáře následující příkazy:mkdir cmake cd cmake
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.Po úspěšném dokončení sestavení vypadá posledních několik výstupních řádků podobně jako následující výstup:
$ 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
Otevřete příkazový řádek nebo terminál Git Bash.
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
Otevřete příkazový řádek nebo terminál Git Bash.
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
Otevřete příkazový řádek nebo terminál Git Bash.
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.
Otevřete příkazový řádek nebo terminál Git Bash.
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
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
Přihlaste se k webu Azure Portal a přejděte k instanci služby Device Provisioning.
V části Nastavení navigační nabídky vyberte Spravovat registrace.
Vyberte Přidat skupinu registrací.
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 Atestace 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í. Vyberte Další: IoT Hubs.
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.Vybrat další: Nastavení zařízení
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.
Vyberte Další: Zkontrolovat a vytvořit.
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 --key
primá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í:
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í.
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í:
V hlavní nabídce služby Device Provisioning vyberte Přehled.
Zkopírujte hodnotu oboru ID.
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.
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.
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";
Ve stejném souboru vyhledejte definici funkce
main()
. Zkontrolujte, jestli je proměnnáhsm_type
nastavená na hodnotuSECURE_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;
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í.
Uložte soubor.
Klikněte pravým tlačítkem myši na prov_dev_client_sample projekt a vyberte Nastavit jako spouštěný projekt.
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:
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í.
Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.
Odešle testovací zprávu do centra IoT.
Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:
V hlavní nabídce služby Device Provisioning vyberte Přehled.
Zkopírujte hodnotu oboru ID.
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
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 Mqtt
je . Možné hodnoty zahrnujíMqtt
, ,Mqtt_WebSocket_Only
,Amqp
Mqtt_Tcp_Only
,Amqp_WebSocket_Only
,Amqp_Tcp_only
, aHttp1
.Ve složce SymmetricKeySample otevřete ProvisioningDeviceClientSample.cs v textovém editoru. Tento soubor ukazuje, jak SecurityProviderSymmetricKey třída funguje s ProvisioningDeviceClient třídy zřizování simulovaného symetrického klíče zařízení. Zkontrolujte kód v tomto souboru. Nejsou potřeba žádné změny.
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>
- Nahraďte
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í:
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
Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.
Odešle testovací telemetrická zpráva do centra IoT.
Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:
V hlavní nabídce služby Device Provisioning vyberte Přehled.
Zkopírujte hodnotu oboru ID.
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
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ělení. 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í.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
<derived-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>
- První příkaz nastaví proměnnou
Pomocí následujících příkazů sestavte a spusťte ukázkový kód:
npm install
node register_symkey.js
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í:
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
Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.
Odešle testovací zprávu do centra IoT.
Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:
V hlavní nabídce služby Device Provisioning vyberte Přehled.
Zkopírujte hodnotu oboru ID.
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
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
<derived-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>
- První příkaz nastaví proměnnou
Nainstalujte knihovnu azure-iot-device spuštěním následujícího příkazu.
pip install azure-iot-device
Spusťte vzorový kód Pythonu v provision_symmetric_key.py.
python provision_symmetric_key.py
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í:
Ověří zařízení pomocí prostředku Device Provisioning pomocí následujících čtyř parametrů:
GLOBAL_ENDPOINT
SCOPE_ID
REGISTRATION_ID
SYMMETRIC_KEY
Přiřadí zařízení k ioT Hubu, které je už propojené s vaší instancí služby Device Provisioning.
Odešle testovací zprávu do centra IoT.
Pokud chcete aktualizovat a spustit ukázku zřizování s informacemi o zařízení:
V hlavní nabídce služby Device Provisioning vyberte Přehled.
Zkopírujte hodnotu oboru ID.
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
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í.
- Nahraďte
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
Sestavte ukázku.
mvn clean install
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
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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 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 [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 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:
Na webu Azure Portal přejděte do vaší instance DPS.
V nabídce Nastavení vyberte Spravovat registrace.
Vyberte skupiny registrací.
Vyberte skupinu registrací, kterou jste pro účely tohoto kurzu vytvořili.
Na stránce Podrobnosti skupiny registrací vyberte Stav registrace.
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:
Na webu Azure Portal přejděte do centra IoT, ke kterému bylo vaše zařízení přiřazeno.
V nabídce Správa zařízení vyberte Zařízení.
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.
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:
Odvodit klíč zařízení. Stejně jako dříve použijte primární klíč pro skupinu registrací jako klíč skupiny.
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í.
Na webu Azure Portal přejděte do vaší instance DPS.
V nabídce Nastavení vyberte Spravovat registrace.
Vyberte kartu Skupiny registrací.
Vyberte název skupiny registrací, kterou jste pro tento kurz použili k otevření stránky s podrobnostmi.
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.
Vraťte se na stránku Spravovat registrace .
Zaškrtněte políčko vedle názvu skupiny registrací, kterou jste použili pro účely tohoto kurzu.
V horní části stránky vyberte Odstranit.
Odstranění registrací zařízení ze služby IoT Hub
Na webu Azure Portal přejděte do centra IoT, ke kterému bylo vaše zařízení přiřazeno.
V části Správa zařízení v navigační nabídce vyberte Zařízení.
Zaškrtněte políčko vedle ID zařízení zařízení, která jste zaregistrovali v tomto kurzu.
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.