Oktatóanyag: A földrajzi késés kiépítése
Ez az oktatóanyag bemutatja, hogyan építhet ki biztonságosan több szimulált szimmetrikus kulcseszközt egy IoT Hubs-csoport számára egy foglalási szabályzat használatával. Az IoT Hub Device Provisioning Service (DPS) a beépített foglalási szabályzataival és az egyéni foglalási szabályzatok támogatásával támogatja a különböző foglalási forgatókönyveket.
A földrajzi hely/földrajzi késés kiépítése gyakori foglalási forgatókönyv. Az eszközök helyek közötti mozgása során a hálózati késés javul azáltal, hogy az eszköz az egyes helyekhez legközelebb eső IoT Hubra van kiépítve. Ebben a forgatókönyvben a régiókra kiterjedő IoT Hubok egy csoportja van kiválasztva a regisztrációkhoz. Ezekhez a regisztrációkhoz a beépített legalacsonyabb késés kiosztási szabályzata van kiválasztva. Ez a szabályzat azt eredményezi, hogy a Device Provisioning Service kiértékeli az eszköz késését, és meghatározza a szekrény IoT Hubját az IoT Hubok csoportjából.
Ez az oktatóanyag az Azure IoT C SDK szimulált eszközmintáját használja az eszközök régiók közötti kiépítésének bemutatásához. Ebben az oktatóanyagban a következő lépéseket fogja végrehajtani:
- Az Azure CLI használatával hozzon létre két regionális IoT-központot (USA 2 . nyugati és USA keleti régiója)
- Olyan regisztráció létrehozása, amely földrajzi hely alapján helyezi üzembe az eszközöket (a legkisebb késés) alapján.
- Az Azure CLI használatával két regionális Linux rendszerű virtuális gépet hozhat létre, amelyek ugyanazon régiókban (AZ USA 2 . nyugati régiója és az USA keleti régiója) működnek eszközként.
- Az Azure IoT C SDK fejlesztési környezetének beállítása mindkét Linux rendszerű virtuális gépen
- Szimulálja az eszközöket, és ellenőrizze, hogy ki vannak-e építve a legközelebbi régióban lévő IoT Hubon.
Fontos
Egyes régiók időről időre korlátozásokat kényszeríthetnek a virtuális gépek létrehozására. Az útmutató írásakor a Westus2 és az Eastus régió lehetővé tette virtuális gépek létrehozását. Ha egyik régióban sem tud létrehozni, próbálkozzon egy másik régióval. Ha többet szeretne megtudni az Azure földrajzi régióinak a virtuális gépek létrehozásakor történő kiválasztásáról, tekintse meg az Azure-beli virtuális gépek régiói című témakört .
Előfeltételek
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
Hajtsa végre az IoT Hub Device Provisioning Service azure portallal való beállításának lépéseit.
Használja a Bash-környezetet az Azure Cloud Shellben. További információ: A Bash rövid útmutatója az Azure Cloud Shellben.
Ha inkább helyi cli-referenciaparancsokat szeretne futtatni, telepítse az Azure CLI-t. Ha Windows vagy macOS rendszert használ, fontolja meg az Azure CLI Docker-tárolóban való futtatását. További információ: Az Azure CLI futtatása Docker-tárolóban.
Ha helyi telepítést használ, jelentkezzen be az Azure CLI-be az az login parancs futtatásával. A hitelesítési folyamat befejezéséhez kövesse a terminálon megjelenő lépéseket. További bejelentkezési lehetőségekért lásd : Bejelentkezés az Azure CLI-vel.
Amikor a rendszer kéri, először telepítse az Azure CLI-bővítményt. További információ a bővítményekről: Bővítmények használata az Azure CLI-vel.
Futtassa az az version parancsot a telepített verzió és a függő kódtárak megkereséséhez. A legújabb verzióra az az upgrade paranccsal frissíthet.
Két regionális IoT Hub létrehozása
Ebben a szakaszban egy Azure-erőforráscsoportot és két új regionális IoT Hub-erőforrást fog létrehozni. Az egyik IoT Hub az USA 2 . nyugati régiójához, a másik az USA keleti régiójához lesz.
Fontos
Javasoljuk, hogy ugyanazt az erőforráscsoportot használja az oktatóanyagban létrehozott összes erőforráshoz. Ez megkönnyíti a tisztítást, miután végzett.
Az Azure Cloud Shellben hozzon létre egy erőforráscsoportot az alábbi az group create paranccsal:
az group create --name contoso-us-resource-group --location eastus
Hozzon létre egy IoT Hubot az Eastus-helyen , és adja hozzá a létrehozott erőforráscsoporthoz az alábbi az iot hub create paranccsal (cserélje le
{unique-hub-name}
a saját egyedi nevére):az iot hub create --name {unique-hub-name} --resource-group contoso-us-resource-group --location eastus --sku S1
A parancs végrehajtása eltarthat néhány percig.
Most hozzon létre egy IoT Hubot a westus2 helyen, és adja hozzá a létrehozott erőforráscsoporthoz az alábbi az iot hub create paranccsal (cserélje le
{unique-hub-name}
a saját egyedi nevére):az iot hub create --name {unique-hub-name} --resource-group contoso-us-resource-group --location westus2 --sku S1
A parancs végrehajtása eltarthat néhány percig.
Regisztráció létrehozása a földrajzi késés érdekében
Ebben a szakaszban egy új regisztrációs csoportot fog létrehozni az eszközeihez.
Az egyszerűség kedvéért ez az oktatóanyag szimmetrikus kulcsigazolást használ a regisztrációval. A biztonságosabb megoldás érdekében fontolja meg az X.509-tanúsítványigazolás használatát egy bizalmi lánccal.
Jelentkezzen be az Azure Portalra , és keresse meg a Device Provisioning Service-példányt.
A navigációs menü Beállítások szakaszában válassza a Regisztrációk kezelése lehetőséget.
Válassza a Regisztrációs csoport hozzáadása lehetőséget.
A Regisztrációs csoport hozzáadása lap Regisztráció + kiépítés lapján adja meg a következő információkat a regisztrációs csoport adatainak konfigurálásához:
Mező Leírás Igazolás Válassza ki a szimmetrikus kulcsot az igazolási mechanizmusként. Szimmetrikus kulcsbeállítások Jelölje be a Szimmetrikus kulcsok automatikus létrehozása jelölőnégyzetet. Csoport neve Nevezze el a csoport contoso-us-devices nevét, vagy adja meg a saját csoportnevét. A regisztrációs csoport neve egy kis- és nagybetűket nem megkülönböztető sztring (legfeljebb 128 karakter hosszú) alfanumerikus karakterekből és a speciális karakterekből: '-'
,'.'
,'_'
.':'
Az utolsó karakternek alfanumerikusnak vagy kötőjelnek ('-'
) kell lennie.Válassza a Tovább: IoT Hubs lehetőséget.
A következő lépésekkel adja hozzá a két IoT Hubot a regisztrációs csoporthoz:
A Regisztrációs csoport hozzáadása lap IoT Hubs lapján válassza az IoT Hubra mutató hivatkozás hozzáadása lehetőséget a Cél IoT Hubok szakaszban.
Az IoT Hubra mutató hivatkozás hozzáadása lapon válassza ki az eastus régióban létrehozott IoT Hubot, és rendelje hozzá az iothubowner-hozzáférést.
Válassza a Mentés lehetőséget.
Válassza ismét az IoT Hubra mutató hivatkozás hozzáadása lehetőséget, és kövesse ugyanazokat a lépéseket a westus2 régióban létrehozott IoT Hub hozzáadásához.
A Cél IoT Hubok legördülő menüben válassza ki mindkét IoT Hubot.
A Foglalási szabályzat esetében válassza a Legalacsonyabb késés lehetőséget.
Válassza az Áttekintés + létrehozás lehetőséget.
A Véleményezés + létrehozás lapon ellenőrizze az összes értéket, majd válassza a Létrehozás lehetőséget.
A regisztrációs csoport létrehozása után válassza ki a contoso-us-devices nevét a regisztrációs csoportok listájából.
Másolja ki az elsődleges kulcsot. A rendszer ezt a kulcsot fogja használni később, hogy egyedi eszközkulcsokat hozzon létre mindkét szimulált eszközhöz.
Regionális Linux rendszerű virtuális gépek létrehozása
Ebben a szakaszban két regionális Linux rendszerű virtuális gépet hoz létre, egyet az USA 2. nyugati régiójában, egyet pedig az USA 2. keleti régiójában. Ezek a virtuális gépek eszközszimulációs mintát futtatnak az egyes régiókból, hogy bemutassa a két régióból származó eszközök eszközkiépítését.
A tisztítás megkönnyítése érdekében vegye fel ezeket a virtuális gépeket ugyanarra az erőforráscsoportra, amely tartalmazza a létrehozott IoT Hubokat, a contoso-us-resource-groupot.
Az Azure Cloud Shellben futtassa a következő parancsot az USA keleti régiójában lévő virtuális gép létrehozásához, miután végrehajtotta a következő paramétermódosításokat a parancsban:
--name: Adjon meg egy egyedi nevet az USA keleti régiós eszköz virtuális gépének.
--admin-username: Használja a saját rendszergazdai felhasználónevet.
--admin-password: Használja a saját rendszergazdai jelszavát.
az vm create \ --resource-group contoso-us-resource-group \ --name ContosoSimDeviceEast \ --location eastus \ --image Canonical:UbuntuServer:18.04-LTS:18.04.201809110 \ --admin-username contosoadmin \ --admin-password myContosoPassword2018 \ --authentication-type password --public-ip-sku Standard
A parancs feldolgozása eltarthat néhány percig.
Miután a parancs befejeződött, másolja ki az USA keleti régiójában lévő virtuális gép nyilvánosIpAddress értékét.
Az Azure Cloud Shellben futtassa a parancsot egy USA 2 . nyugati régiós virtuális gépének létrehozásához, miután végrehajtotta a következő paramétermódosításokat a parancsban:
--name: Adjon meg egy egyedi nevet az USA 2 . nyugati régiós eszköz virtuális gépének.
--admin-username: Használja a saját rendszergazdai felhasználónevet.
--admin-password: Használja a saját rendszergazdai jelszavát.
az vm create \ --resource-group contoso-us-resource-group \ --name ContosoSimDeviceWest2 \ --location westus2 \ --image Canonical:UbuntuServer:18.04-LTS:18.04.201809110 \ --admin-username contosoadmin \ --admin-password myContosoPassword2018 \ --authentication-type password --public-ip-sku Standard
A parancs feldolgozása eltarthat néhány percig.
Miután a parancs befejeződött, másolja ki az USA 2. nyugati régiójában lévő virtuális gép nyilvánosIpAddress értékét.
Nyisson meg két parancssori rendszerhéjat.
Csatlakozzon az egyes rendszerhéjak egyik regionális virtuális gépéhez SSH használatával.
Adja meg a rendszergazdai felhasználónevet és a paraméterekként kimásolt nyilvános IP-címet az SSH-nak. Amikor a rendszer kéri, adja meg a rendszergazdai jelszót.
ssh contosoadmin@1.2.3.4 contosoadmin@ContosoSimDeviceEast:~$
ssh contosoadmin@5.6.7.8 contosoadmin@ContosoSimDeviceWest:~$
Az Azure IoT C SDK fejlesztési környezetének előkészítése
Ebben a szakaszban klónozza az Azure IoT C SDK-t minden egyes virtuális gépen. Az SDK egy mintát tartalmaz, amely az egyes régiók eszközkiépítését szimulálja.
Minden egyes virtuális gép esetében:
Telepítse a CMake, g++, gcc és Git parancsokat a következő parancsokkal:
sudo apt-get update sudo apt-get install cmake build-essential libssl-dev libcurl4-openssl-dev uuid-dev git-all
Keresse meg és másolja ki az SDK legújabb kiadásához tartozó címkenevet.
Klónozza az Azure IoT Device SDK for C-t mindkét virtuális gépen. Használja az előző lépésben talált címkét a
-b
paraméter értékeként, például:lts_01_2023
.git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --init
Ez a művelet várhatóan több percig is eltarthat.
Hozzon létre egy új cmake mappát az adattárban, és váltson erre a mappára.
mkdir ~/azure-iot-sdk-c/cmake cd ~/azure-iot-sdk-c/cmake
Futtassa a következő parancsot, amely a fejlesztői ügyfélplatformhoz tartozó SDK-verziót készíti el:
cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON ..
A sikeres létrehozást követően a kimenet utolsó sorai a következőhöz hasonlóan néznek majd ki:
-- IoT Client SDK Version = 1.7.0 -- Provisioning SDK Version = 1.7.0 -- Looking for include file stdint.h -- Looking for include file stdint.h - found -- Looking for include file stdbool.h -- Looking for include file stdbool.h - found -- target architecture: x86_64 -- Performing Test CXX_FLAG_CXX11 -- Performing Test CXX_FLAG_CXX11 - Success -- Found OpenSSL: /usr/lib/x86_64-linux-gnu/libcrypto.so (found version "1.1.1") -- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so (found version "7.58.0") -- Found CURL: /usr/lib/x86_64-linux-gnu/libcurl.so -- target architecture: x86_64 -- iothub architecture: x86_64 -- Configuring done -- Generating done -- Build files have been written to: /home/contosoadmin/azure-iot-sdk-c/azure-iot-sdk-c
Egyedi eszközkulcsok levezetése
Ha szimmetrikus kulcsigazolást használ csoportregisztrációkkal, nem használja közvetlenül a regisztrációs csoportkulcsokat. Ehelyett az egyes eszközök regisztrációs csoportkulcsából származtat egy egyedi kulcsot.
Az oktatóanyag jelen részében egy eszközkulcsot fog létrehozni a csoport főkulcsából az eszköz egyedi regisztrációs azonosítójának HMAC-SHA256 kiszámításához. Az eredmény ezután Base64 formátumba lesz konvertálva.
Fontos
Ne foglalja bele a csoport főkulcsát az eszközkódba.
Eastus és Westus2 rendszerű eszközök esetén:
Hozza létre az egyedi kulcsot az openssl használatával. A következő Bash shell-szkriptet fogja használni (cserélje le
{primary-key}
a regisztrációs csoport korábban másolt elsődleges kulcsára, és cserélje le{contoso-simdevice}
az egyes eszközök egyedi regisztrációs azonosítójára. A regisztrációs azonosító egy kis- és nagybetűket nem megkülönböztető sztring (legfeljebb 128 karakter hosszú) alfanumerikus karakterekből és a speciális karakterekből:'-'
,'.'
,'_'
.':'
Az utolsó karakternek alfanumerikusnak vagy kötőjelnek ('-'
) kell lennie.KEY={primary-key} REG_ID={contoso-simdevice} keybytes=$(echo $KEY | base64 --decode | xxd -p -u -c 1000) echo -n $REG_ID | openssl sha256 -mac HMAC -macopt hexkey:$keybytes -binary | base64
A szkript a következő kulcshoz hasonló kimenetet ad ki:
p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=
Most minden eszköz saját származtatott eszközkulcsmal és egyedi regisztrációs azonosítóval rendelkezik, hogy szimmetrikus kulcsigazolást végezzen a regisztrációs csoporttal a kiépítési folyamat során.
Az egyes régiók eszközeinek szimulálása
Ebben a szakaszban frissíteni fog egy kiépítési mintát az Azure IoT C SDK-ban mindkét regionális virtuális géphez.
A mintakód egy eszköz rendszerindítási sorozatát szimulálja, amely elküldi a kiépítési kérelmet a Device Provisioning Service-példánynak. A rendszerindítási sorrend miatt az eszköz felismerhető és hozzárendelhető a késés alapján legközelebbi IoT Hubhoz.
Az Azure Portalon válassza az Eszközkiépítési szolgáltatás Áttekintés lapját, és jegyezze fel az azonosító hatókörének értékét.
Mindkét virtuális gépen nyissa meg a ~/azure-iot-sdk-c/provisioning_client/samples/prov_dev_client_sample/prov_dev_client_sample.c fájlt szerkesztésre.
vi ~/azure-iot-sdk-c/provisioning_client/samples/prov_dev_client_sample/prov_dev_client_sample.c
Mindkét virtuális gépen keresse meg az
id_scope
állandót, és cserélje le az értéket a korábban másolt azonosító hatókör értékére.static const char* id_scope = "0ne00002193";
Mindkét virtuális gépen keresse meg a
main()
függvény definícióját ugyanabban a fájlban. Győződjön meg arról, hogySECURE_DEVICE_TYPE_SYMMETRIC_KEY
a változó azhsm_type
alábbi módon van beállítva, hogy megfeleljen a regisztrációs csoport igazolási módszerének.Mentse a módosításokat a fájlokon mindkét virtuális gépen.
SECURE_DEVICE_TYPE hsm_type; //hsm_type = SECURE_DEVICE_TYPE_TPM; //hsm_type = SECURE_DEVICE_TYPE_X509; hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
Mindkét virtuális gépen keresse meg a prov_dev_client_sample.c fájlban található
prov_dev_set_symmetric_key_info()
hívást, amelyet a rendszer megjegyzésként használ.// Set the symmetric key if using they auth type //prov_dev_set_symmetric_key_info("<symm_registration_id>", "<symmetric_Key>");
Bontsa ki a függvényhívásokat, és cserélje le a helyőrző értékeket (beleértve a szögletes zárójeleket) az egyedi regisztrációs azonosítókra és a származtatott eszközkulcsokra az előző szakaszban származtatott összes eszközhöz. Az alábbi kulcsok példák. Használja a korábban létrehozott kulcsokat.
USA keleti régiója:
// Set the symmetric key if using they auth type prov_dev_set_symmetric_key_info("contoso-simdevice-east", "p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=");
USA nyugati régiója:
// Set the symmetric key if using they auth type prov_dev_set_symmetric_key_info("contoso-simdevice-west", "J5n4NY2GiBYy7Mp4lDDa5CbEe6zDU/c62rhjCuFWxnc=");
Mentse a fájlt mindkét virtuális gépen.
Mindkét virtuális gépen keresse meg az alább látható mintamappát, és hozza létre a mintát.
cd ~/azure-iot-sdk-c/cmake/provisioning_client/samples/prov_dev_client_sample/ cmake --build . --target prov_dev_client_sample --config Debug
Ha a build sikeres, futtassa a prov_dev_client_sample.exe mindkét virtuális gépen, hogy minden régióból szimuláljon egy eszközt. Figyelje meg, hogy minden eszköz a szimulált eszköz régiójához legközelebbi IoT Hubhoz van lefoglalva.
Futtassa a szimulációt:
~/azure-iot-sdk-c/cmake/provisioning_client/samples/prov_dev_client_sample/prov_dev_client_sample
Példakimenet az USA keleti régiójában lévő virtuális gépről:
contosoadmin@ContosoSimDeviceEast:~/azure-iot-sdk-c/cmake/provisioning_client/samples/prov_dev_client_sample$ ./prov_dev_client_sample Provisioning API Version: 1.2.9 Registering Device Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Registration Information received from service: contoso-east-hub.azure-devices.net, deviceId: contoso-simdevice-east Press enter key to exit:
Példakimenet az USA nyugati virtuális gépéről:
contosoadmin@ContosoSimDeviceWest:~/azure-iot-sdk-c/cmake/provisioning_client/samples/prov_dev_client_sample$ ./prov_dev_client_sample Provisioning API Version: 1.2.9 Registering Device Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Registration Information received from service: contoso-west-hub.azure-devices.net, deviceId: contoso-simdevice-west Press enter key to exit:
Az erőforrások eltávolítása
Ha folytatni szeretné az oktatóanyagban létrehozott erőforrások használatát, elhagyhatja őket. Ellenkező esetben az alábbi lépésekkel törölheti az oktatóanyag által létrehozott összes erőforrást a szükségtelen díjak elkerülése érdekében.
Az alábbi lépések feltételezik, hogy ebben az oktatóanyagban az összes erőforrást a contoso-us-resource-group nevű erőforráscsoportban leírtak szerint hozta létre.
Fontos
Az erőforráscsoport törlése nem vonható vissza. Az erőforráscsoport és a benne foglalt erőforrások véglegesen törlődnek. Figyeljen, nehogy véletlenül rossz erőforráscsoportot vagy erőforrásokat töröljön. Ha az IoT Hubot egy meglévő, megtartani kívánt erőforrásokat tartalmazó erőforráscsoportban hozta létre, az erőforráscsoport törlése helyett törölheti csak magát az IoT Hub-erőforrást.
Az erőforráscsoport törlése név szerint:
Jelentkezzen be az Azure Portalra.
Válassza az Erőforráscsoportok lehetőséget.
A Szűrés név szerint... szövegmezőbe írja be az erőforrásokat tartalmazó erőforráscsoport nevét( contoso-us-resource-group).
Az eredménylistában kattintson az erőforráscsoporttól jobbra lévő … ikonra, majd kattintson az Erőforráscsoport törlése elemre.
A rendszer kérni fogja, hogy erősítse meg az erőforráscsoport törlését. Írja be ismét az erőforráscsoport nevét a megerősítéshez, majd válassza a Törlés lehetőséget. A rendszer néhány pillanaton belül törli az erőforráscsoportot és a benne foglalt erőforrásokat.
Következő lépések
Az egyéni foglalási szabályzatokkal kapcsolatos további információkért lásd: