Kurz: Zřízení geografické latence

V tomto kurzu se dozvíte, jak bezpečně zřídit několik simulovaných zařízení se symetrickými klíči pro skupinu ioT Hubů pomocí zásad přidělování. IoT Hub Device Provisioning Service (DPS) podporuje různé scénáře přidělování prostřednictvím předdefinovaných zásad přidělování a podpory vlastních zásad přidělování.

Zřizování pro geografickou polohu/geografickou latenci je běžným scénářem přidělování. Při přesouvání zařízení mezi umístěními se latence sítě zlepšuje tím, že se zařízení zřizuje ve službě IoT Hub, která je nejblíže ke každému umístění. V tomto scénáři se pro registrace vybere skupina center IoT, která se nacházejí napříč oblastmi. Pro tyto registrace se vybere předdefinovaná zásada přidělení nejnižší latence . Tato zásada způsobí, že služba Device Provisioning vyhodnotí latenci zařízení a určí skříň IoT Hub ze skupiny IoT Hubů.

Tento kurz používá ukázku simulovaného zařízení ze sady Azure IoT C SDK k předvedení způsobu zřizování zařízení napříč oblastmi. V tomto kurzu provedete následující kroky:

  • Použití Azure CLI k vytvoření dvou regionálních center IoT (USA – západ 2 a USA – východ)
  • Vytvoření registrace, která zřídí zařízení na základě geografické polohy (nejnižší latence)
  • Pomocí Azure CLI vytvořte dva místní virtuální počítače s Linuxem, které budou fungovat jako zařízení ve stejných oblastech (USA – západ 2 a USA – východ).
  • Nastavení vývojového prostředí pro sadu Azure IoT C SDK na obou virtuálních počítačích s Linuxem
  • Simulujte zařízení a ověřte, že jsou zřízená ve službě IoT Hub v nejbližší oblasti.

Důležité

Některé oblasti můžou čas od času vynucovat omezení vytváření Virtual Machines. V době psaní tohoto průvodce povolily oblasti westus2 a eastus vytváření virtuálních počítačů. Pokud nemůžete vytvořit v některé z těchto oblastí, můžete zkusit jinou oblast. Další informace o výběru geografických oblastí Azure při vytváření virtuálních počítačů najdete v tématu Oblasti pro virtuální počítače v Azure.

Požadavky

  • Použijte prostředí Bash v Azure Cloud Shell. Další informace najdete v tématu Rychlý start pro Bash v Azure Cloud Shell.

  • Pokud dáváte přednost místnímu spouštění referenčních příkazů rozhraní příkazového řádku, nainstalujte Azure CLI. Pokud používáte Windows nebo macOS, zvažte spuštění Azure CLI v kontejneru Docker. Další informace najdete v tématu Spuštění Azure CLI v kontejneru Dockeru.

    • Pokud používáte místní instalaci, přihlaste se k Azure CLI pomocí příkazu az login. Pokud chcete dokončit proces ověřování, postupujte podle kroků zobrazených na terminálu. Další možnosti přihlášení najdete v tématu Přihlášení pomocí Azure CLI.

    • Po zobrazení výzvy nainstalujte rozšíření Azure CLI při prvním použití. Další informace o rozšířeních najdete v tématu Využití rozšíření v Azure CLI.

    • Spuštěním příkazu az version zjistěte verzi a závislé knihovny, které jsou nainstalované. Pokud chcete upgradovat na nejnovější verzi, spusťte az upgrade.

Vytvoření dvou regionálních center IoT

V této části vytvoříte skupinu prostředků Azure a dva nové regionální prostředky centra IoT. Jedno centrum IoT bude pro oblast USA – západ 2 a druhé pro oblast USA – východ .

Důležité

Doporučujeme použít stejnou skupinu prostředků pro všechny prostředky vytvořené v tomto kurzu. To vám usnadní vyčištění po dokončení.

  1. V azure Cloud Shell vytvořte skupinu prostředků pomocí následujícího příkazu az group create:

    az group create --name contoso-us-resource-group --location eastus
    
  2. Vytvořte centrum IoT v umístění eastus a přidejte ho do skupiny prostředků, kterou jste vytvořili pomocí následujícího příkazu az iot hub create (nahraďte {unique-hub-name} vlastním jedinečným názvem):

    az iot hub create --name {unique-hub-name} --resource-group contoso-us-resource-group --location eastus --sku S1
    

    Dokončení tohoto příkazu může trvat několik minut.

  3. Teď vytvořte centrum IoT v umístění westus2 a přidejte ho do skupiny prostředků, kterou jste vytvořili, pomocí následujícího příkazu az iot hub create (nahraďte {unique-hub-name} vlastním jedinečným názvem):

    az iot hub create --name {unique-hub-name} --resource-group contoso-us-resource-group --location westus2 --sku S1
    

    Dokončení tohoto příkazu může trvat několik minut.

Vytvoření registrace pro geografickou latenci

V této části vytvoříte novou skupinu registrací pro vaše zařízení.

Pro zjednodušení tento kurz používá u registrace ověření symetrického klíče . V případě bezpečnějšího řešení zvažte použití ověření certifikátu X.509 s řetězem důvěryhodnosti.

  1. Přihlaste se k 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 ke konfiguraci podrobností o skupině registrací:

    Pole Description
    Attestation Jako mechanismus ověření identity vyberte Symetrický klíč.
    Nastavení symetrického klíče Zaškrtněte políčko Generovat symetrické klíče automaticky .
    Název skupiny Pojmenujte skupinu contoso-us-devices nebo zadejte vlastní název skupiny. Název skupiny registrací nerozlišuje velká a malá písmena (až 128 znaků dlouhý) alfanumerických znaků plus speciální znaky: '-', '.', , '_'. ':' Poslední znak musí být alfanumerický nebo pomlčka ('-').
  5. Vyberte Další: Centra IoT.

  6. Pomocí následujícího postupu přidejte dvě centra IoT do skupiny registrací:

    1. Na kartě IoT Hubs (Centra IoT) na stránce Add enrollment group (Přidat skupinu registrací) vyberte Add link to IoT Hubs (Přidat odkaz na Centrum IoT) v části Target IoT Hubs (Cílová centra IoT).

    2. Na stránce Přidat odkaz na centrum IoT vyberte centrum IoT, které jste vytvořili v oblasti eastus , a přiřaďte mu přístup iothubowner .

    3. Vyberte Uložit.

    4. Znovu vyberte Přidat odkaz na centrum IoT a stejným postupem přidejte centrum IoT, které jste vytvořili v oblasti westus2 .

    5. V rozevírací nabídce Target IoT Hubs (Cílová centra IoT ) vyberte obě centra IoT.

  7. V části Zásady přidělování vyberte Nejnižší latence.

  8. Vyberte Zkontrolovat a vytvořit.

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

  10. Po vytvoření skupiny registrací vyberte její název contoso-us-devices ze seznamu skupin registrací.

  11. Zkopírujte primární klíč. Tento klíč se později použije k vygenerování jedinečných klíčů zařízení pro obě simulovaná zařízení.

Vytváření regionálních virtuálních počítačů s Linuxem

V této části vytvoříte dva regionální virtuální počítače s Linuxem, jeden v oblasti USA – západ 2 a jeden v oblasti USA – východ 2. Tyto virtuální počítače spouští ukázku simulace zařízení z každé oblasti, která demonstruje zřizování zařízení z obou oblastí.

Pokud chcete usnadnit čištění, přidejte tyto virtuální počítače do stejné skupiny prostředků, která obsahuje vytvořená centra IoT , contoso-us-resource-group.

  1. V azure Cloud Shell spuštěním následujícího příkazu vytvořte virtuální počítač v oblasti USA – východ po provedení následujících změn parametrů v příkazu:

    --name: Zadejte jedinečný název virtuálního počítače s vaším zařízením v oblasti USA – východ .

    --admin-username: Použijte vlastní uživatelské jméno správce.

    --admin-password: Použijte vlastní heslo správce.

    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
    

    Dokončení tohoto příkazu bude trvat několik minut.

  2. Po dokončení příkazu zkopírujte hodnotu publicIpAddress pro virtuální počítač v oblasti USA – východ.

  3. V azure Cloud Shell spuštěním příkazu vytvořte virtuální počítač v oblasti USA – západ 2 po provedení následujících změn parametrů v příkazu:

    --name: Zadejte jedinečný název virtuálního počítače s místním zařízením v oblasti USA – západ 2 .

    --admin-username: Použijte vlastní uživatelské jméno správce.

    --admin-password: Použijte vlastní heslo správce.

    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
    

    Dokončení tohoto příkazu bude trvat několik minut.

  4. Po dokončení příkazu zkopírujte hodnotu publicIpAddress pro virtuální počítač v oblasti USA – západ 2.

  5. Otevřete dvě prostředí příkazového řádku.

  6. Připojte se k jednomu z regionálních virtuálních počítačů v každém prostředí pomocí SSH.

    Předejte uživatelské jméno správce a veřejnou IP adresu, kterou jste zkopírovali, jako parametry do SSH. Po zobrazení výzvy zadejte heslo správce.

    ssh contosoadmin@1.2.3.4
    
    contosoadmin@ContosoSimDeviceEast:~$
    
    ssh contosoadmin@5.6.7.8
    
    contosoadmin@ContosoSimDeviceWest:~$
    

Příprava vývojového prostředí Azure IoT C SDK

V této části naklonujete sadu Azure IoT C SDK na každý virtuální počítač. Sada SDK obsahuje ukázku, která simuluje zřizování zařízení z každé oblasti.

Pro každý virtuální počítač:

  1. Nainstalujte CMake, g++, gcc a Git pomocí následujících příkazů:

    sudo apt-get update
    sudo apt-get install cmake build-essential libssl-dev libcurl4-openssl-dev uuid-dev git-all
    
  2. Vyhledejte a zkopírujte název značky pro nejnovější verzi sady SDK.

  3. Naklonujte sadu Azure IoT Device SDK pro jazyk C na obou virtuálních počítačích. Jako hodnotu -b parametru použijte značku, kterou jste našli v předchozím kroku, například : 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
    

    Buďte připravení na to, že může trvat i několik minut, než se tato operace dokončí.

  4. Vytvořte v úložišti novou složku cmake a přejděte do této složky.

    mkdir ~/azure-iot-sdk-c/cmake
    cd ~/azure-iot-sdk-c/cmake
    
  5. Spusťte následující příkaz, který vytvoří verzi sady SDK specifickou pro vaši platformu vývojového klienta:

    cmake -Dhsm_type_symm_key:BOOL=ON -Duse_prov_client:BOOL=ON  ..
    
  6. Po úspěšném sestavení by posledních pár řádků výstupu mělo vypadat přibližně takto:

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

Odvodit jedinečné klíče zařízení

Při použití ověření symetrického klíče s registracemi skupin se klíče skupiny registrace nepoužívají přímo. Místo toho odvozujete jedinečný klíč z klíče skupiny registrací pro každé zařízení.

V této části kurzu vygenerujete klíč zařízení z hlavního klíče skupiny pro výpočet HMAC-SHA256 jedinečného ID registrace zařízení. Výsledek se pak převede do formátu Base64.

Důležité

Hlavní klíč skupiny nezahrnujte do kódu zařízení.

Pro zařízení eastusiwestus2:

  1. Vygenerujte jedinečný klíč pomocí openssl. Použijete následující skript prostředí Bash (nahraďte {primary-key}primárním klíčem skupiny registrací, který jste zkopírovali dříve, a nahraďte {contoso-simdevice}vlastním jedinečným ID registrace pro každé zařízení. ID registrace je řetězec alfanumerických znaků nerozlišující velká a malá písmena (až 128 znaků) plus speciální znaky: '-', '.', '_', . ':' Poslední znak musí být alfanumerický nebo pomlčka ('-').

    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
    
  2. Skript zobrazí výstup podobný následujícímu klíči:

    p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=
    
  3. Každé zařízení teď má svůj vlastní odvozený klíč zařízení a jedinečné ID registrace, aby se během procesu zřizování provedlo ověření symetrického klíče se skupinou registrací.

Simulace zařízení z každé oblasti

V této části aktualizujete ukázku zřizování v sadě Azure IoT C SDK pro oba místní virtuální počítače.

Ukázkový kód simuluje spouštěcí sekvenci zařízení, která odešle požadavek na zřízení vaší instanci služby Device Provisioning. Spouštěcí sekvence způsobí, že se zařízení rozpozná a přiřadí k centru IoT, které je nejblíže na základě latence.

  1. V Azure Portal vyberte kartu Přehled pro službu Device Provisioning a poznamenejte si hodnotu Rozsah ID.

    Extrahujte informace o koncovém bodu služby Device Provisioning z okna portálu.

  2. Na obou virtuálních počítačích otevřete ~/azure-iot-sdk-c/provisioning_client/samples/prov_dev_client_sample/prov_dev_client_sample.c pro úpravy.

    vi ~/azure-iot-sdk-c/provisioning_client/samples/prov_dev_client_sample/prov_dev_client_sample.c
    
  3. Na obou virtuálních počítačích vyhledejte konstantu id_scope a nahraďte hodnotu hodnotou rozsahu ID , kterou jste zkopírovali dříve.

    static const char* id_scope = "0ne00002193";
    
  4. Na obou virtuálních počítačích najděte definici main() funkce ve stejném souboru. Ujistěte se, hsm_type že proměnná je nastavená na SECURE_DEVICE_TYPE_SYMMETRIC_KEY hodnotu , jak je znázorněno níže, aby odpovídala metodě ověření identity skupiny registrací.

    Uložte změny souborů na obou virtuálních počítačích.

    SECURE_DEVICE_TYPE hsm_type;
    //hsm_type = SECURE_DEVICE_TYPE_TPM;
    //hsm_type = SECURE_DEVICE_TYPE_X509;
    hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  5. Na obou virtuálních počítačích vyhledejte volání prov_dev_set_symmetric_key_info() v prov_dev_client_sample.c , který je zakomentovaný.

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

    Zrušte komentář volání funkce a nahraďte zástupné hodnoty (včetně úhlových závorek) jedinečnými ID registrace a odvozenými klíči zařízení pro každé zařízení, které jste odvozli v předchozí části. Níže uvedené klíče jsou příklady. Použijte klíče, které jste vygenerovali dříve.

    USA – východ:

    // Set the symmetric key if using they auth type
    prov_dev_set_symmetric_key_info("contoso-simdevice-east", "p3w2DQr9WqEGBLUSlFi1jPQ7UWQL4siAGy75HFTFbf8=");
    

    USA – západ:

    // Set the symmetric key if using they auth type
    prov_dev_set_symmetric_key_info("contoso-simdevice-west", "J5n4NY2GiBYy7Mp4lDDa5CbEe6zDU/c62rhjCuFWxnc=");
    
  6. Na obou virtuálních počítačích uložte soubor.

  7. Na obou virtuálních počítačích přejděte do ukázkové složky uvedené níže a sestavte ukázku.

    cd ~/azure-iot-sdk-c/cmake/provisioning_client/samples/prov_dev_client_sample/
    cmake --build . --target prov_dev_client_sample --config Debug
    
  8. Po úspěšném sestavení spusťte prov_dev_client_sample.exe na obou virtuálních počítačích a simulujte zařízení z každé oblasti. Všimněte si, že každé zařízení je přiděleno centru IoT, které je nejblíže oblasti simulovaného zařízení.

    Spusťte simulaci:

    ~/azure-iot-sdk-c/cmake/provisioning_client/samples/prov_dev_client_sample/prov_dev_client_sample
    

    Příklad výstupu z virtuálního počítače USA – východ:

    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říklad výstupu z virtuálního počítače USA – západ:

    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:
    

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

Pokud chcete pokračovat v práci s prostředky vytvořenými v tomto kurzu, můžete je opustit. V opačném případě pomocí následujícího postupu odstraňte všechny prostředky vytvořené v tomto kurzu, abyste se vyhnuli zbytečným poplatkům.

V tomto postupu se předpokládá, že jste v tomto kurzu vytvořili všechny prostředky podle pokynů ve stejné skupině prostředků s názvem contoso-us-resource-group.

Důležité

Odstranění skupiny prostředků je nevratné. Skupina prostředků i všechny prostředky v ní obsažené se trvale odstraní. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste službu IoT Hub vytvořili uvnitř existující skupiny prostředků obsahující prostředky, které chcete zachovat, odstraňte místo skupiny prostředků pouze samotný prostředek služby IoT.

Odstranění skupiny prostředků podle názvu:

  1. Přihlaste se na Azure Portal.

  2. Vyberte Skupiny prostředků.

  3. Do textového pole Filtrovat podle názvu zadejte název skupiny prostředků obsahující vaše prostředky contoso-us-resource-group.

  4. V seznamu výsledků klikněte na ... napravo od vaší skupiny prostředků a pak na Odstranit skupinu prostředků.

  5. Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Znovu zadejte název skupiny prostředků, abyste to potvrdili, a pak vyberte Odstranit. Po chvíli bude skupina prostředků včetně všech obsažených prostředků odstraněná.

Další kroky

Další informace o vlastních zásadách přidělování najdete v tématu