Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 4 - Microsoft AZURE - IoT Hub

V minulé lekci jsme se z naší desky připojili k WiFi síti a poprvé se přihlásili do Azure. Dnešní lekce je věnována bezpečnosti IoT.

Bezpečnost IoT

V tomto díle bychom si měli popsat službu IoT Hub, která slouží k verifikaci a managementu IoT zařízení. Zajímavě řečeno, což? Verifikace a management, vznosná kouzelná slovíčka, která nic neříkají, jsou ale nejen dle mého názoru zatraceně důležitá a budou čím dál tím více.

V dnešní době, kdy má každá krabička vlastní IP adresu a je k ní možné přistupovat například přes otevřené NAT porty, pokud možno s jednoduchými hesly atp., se stává jejich použití doslova hrozbou a Azure se snaží problémům s kompromitací zařízení proaktivně předcházet.

Proč tedy management a verifikace zařízení? Odpověď je "právě proto". Kdejaké zařízení je připojeno do internetu, ale málokteré je dostatečně patchované. V lepším případě je za firewallem a má dokonce nastavené heslo. Ze zkušenosti vím, že zařízení často leží v nehezkých podmínkách, někde skrytě po budově, občas se neví, že vůbec běží, nebo kdeže to leží. Tento problém se v oblasti IoT začíná stávat velmi závažným a všechny takové krabičky se stávají hrozbou. Neboť ty, které například nekomunikují šifrovaně, lze jednoduše odposlouchávat, lze je jednoduše kompromitovat a mnohdy se o tom nikdo ani nedozví. Jsme poté svědky obrovských DDoS útoků právě přes taková zařízení. Nebo milionových útrat za volání na placené linky vaší VOIP ústředny, protože výrobce nebo administrátor zrovna nemají správný firmware.

Microsoft Azure a jeho služba Event Hub, potažmo jeho odnož pro IoT, nedovoluje připojení bez jednoznačné identifikace zařízení a bez šifrování TSL 1.2. Azure pro management zařízení používá právě již zmiňovaný IoT Hub. Každé zařízení, které se skrze něj pokouší komunikovat do Azure, to musí dělat šifrovaně a musí být jednoznačně identifikovatelné. Lze jej tak v případě kompromitace, ať již z jakéhokoli důvodu, jednoduše blokovat nebo smazat.

U jednoho zařízení je management možná zbytečný luxus, ale pokud si představíte, že jsou těch zařízení stovky nebo tisíce, dává IoT Hub velmi dobrý smysl.

My však necháme teorie a přejděme tedy k samotnému nastavení.

IoT Hub - vytvoření

Do našeho řešení si tedy přidáme službu IoT hub. Volbou +New v levém panelu přidáme ze sekce

IoT Internet of Things > IoTHub

nový Hub s názvem HubIotDht22Spark a jako pricing tier vybereme F1 free. Bude nám pro začátek stačit. Název je děsivý a je nutné ho volit jednoznačně, takže i vy budete řešit, jak se ten váš bude jmenovat. Z názvu IoT hubu se totiž skládá internetová adresa vašeho Hubu. U mne se například jmenuje HubIotDht22Spar­k.azure-devices.net.

IoT hub select Tier - Microsoft Azure a IoT

Náš IoT bude umět přijmout 8000 zpráv za den, což nám s ohledem na typ hodnot, které přijímáme, stačí. Nezapomeňte ho dát do správné Resource group volbou Use existing a výběrem té správné. U mě to je IoTDht22Spark. Nakonec klikněte na tlačítko Create.

IoT hub add - Microsoft Azure a IoT

Nyní máme po chvíli čekání vytvořen IoT Hub, který umí přijímat data z naší vývojové desky.

Co nám však chybí je připojení desky k IoT hubu.

K tomu budeme potřebovat prográmek, který jsme si stáhli dříve, Device Explorer, a potřebné bezpečnostní klíče. Ty získáme v sekci Shared Access Policies. Dostanete se k nim dvojitým kliknutím na jméno Vašeho IoT Hubu v resource seznamu.

IoT hub owner key - Microsoft Azure a IoT

Budeme potřebovat connection string iothubownera. Bude vypadat nějak takto:

HostName=HubIotDht22Spark.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=Ij8kvPBW2 mHCzTKzwxMFiLzkK3AvCFecAgzkg=

Nepoužívejte můj klíč. Je úmyslně pozměněn. Stejně tak budu postupovat i s ostatními klíči v celém seriálu.

Device Explorer - connect to Azure

Spusťte Device Explorer v záložce Configuration a vložte do pole Connection Information váš klíč. Tlačítkem update se vám doplní sekce Shared Access Signature a jste připraveni připojit se k IoT Hub.

Device Explorer Add conection key - Microsoft Azure a IoT

Jak jsme si řekli v úvodu, každé zařízení musí být pro Azure dostatečně identifikované. Musíme mu tedy vytvořit přihlašovací klíče. Ty vytvoříte v Device exploreru záložce Management, kliknutím na tlačítko Create. V našem případě zvolíme Device ID a necháme zaškrtnutím políčka Auto Generate Keys vygenerovat sadu šifrovacích klíčů. Stisknutím tlačítka vytvoříte tzv. connection string vašeho zařízení, což je v našem případě ESP 8622 s DHT 22. Těmito klíči se budeme IoT hubu identifikovat.

Device Explorer Add device - Microsoft Azure a IoT

Po vytvoření klíčů je možné klíče získat i přímo v AZURE v sekci device, viz obrázek.

Show Device in Azure - Microsoft Azure a IoT

Chytřejším dojde, že platnost klíče je spojena s časem. K tomu, abychom mohli klíče používat, je nutné, aby deska nebo zařízení mělo přístup k hodinám reálného času. Jsou s tím spojeny drobné problémy, které lze řešit. Buď připojením k NTP serveru, nebo vygenerováním klíče SAS s delší platností. Touto variantou se v naší ukázce nebudeme zabývat a případné zájemce odkáži na dokumentaci k IOT hubu.

Vezměte tedy Connection String, například v IoT hubu kliknutím na tlačítko vedle pole Connection string—primary key, a přidejte ho do remote_monito­ring.c. Bude vypadat nějak takto:

HostName=HubIotDht22Spark.azure-devices.net;
DeviceId=spark;
SharedAccessKey=b*****************************xC+mzULpMFZd0=

Add conection key to Azure into azure - Microsoft Azure a IoT

Asi nemá smysl jednotlivé položky komentovat. Ve výsledku bude váš kód v IDE vypadat nějak obdobně jako můj.

Program zkompilujte a nahrajte do desky. Pokud jste vše udělali dobře, vše proběhne hladce a vaše deska se připojí k vaší síti. Následně si stáhne čas z NTP serveru a pošle hodnoty do IoT hubu. Vše lze celkem dobře sledovat ze sériové konzole IDE. Jenom pozor na nastavení správného BaudRate. Musí být stejné jako v metodě nebo funkci, chcete-li initSerial() v hlavním souboru projektu.

void initSerial() {
    // Start serial and initialize stdout
    Serial.begin(115200);
    Serial.setDebugOutput(true);
}

Pokud je tedy vše v pořádku, bude destička připojena k vaší wifi a k IoT hubu. Na konzoli se tedy zobrazí informace o IP adrese, aktuální teplotě a vlhkosti.

Přijímaná data na straně AZURE, přesněji IoT hubu, můžete také pozorovat v Device exploreru v záložce Data, stisknutím tlačítka monitor.

IDE console test fungování komunikace - Microsoft Azure a IoT

Nejspíše tam nebudete mít hodnotu EventTime, nicméně to ničemu nevadí. Mám ji tam, neboť jsem ji z testovacích důvodů potřeboval.

Nezbývá než si něco říci o zprávě, kterou odesíláme. Jedná se o protokol AMQP 1.0 (ISO/IEC 19464) https://www.amqp.org/, což je jeden ze standardů zpráv, který AZURE IOT HUB podporuje vedle MQQT v3.1.1 a klasického WebSocketu na 443. Více lze najít v dokumentaci https://docs.microsoft.com/…hub-devguide, proto se nebudeme popisem komunikace dále zabývat. AMQP není nic jiného než JSON a bude vám určitě pochopitelný hned na první pohled.

Pokud vidíte vaše zprávy pronikající do AZURE, dovolte, abych vám poblahopřál, to nejhorší již máte za sebou. Dosáhli jsme toho, že naše krabička komunikuje ven a dává data do cloudu - v našem případě AZURE.

Jakmile se odměníte a pokocháte svým uměním, vrátíme se zpět do reality a připomeneme si, co nám ještě chybí. Nemáme žádnou vizualizaci dat a data ani neukládáme. Na práci s daty a jejich uložení se podíváme v dalších lekcích. Těšit se můžete na službu Stream Analytics, ukázku cloudového úložiště TableStorage a v neposlední řadě službu Bussiness Intelligent Power BI.


 

Předchozí článek
Microsoft AZURE - Připojení k wifi síti a poprvé v Azure
Všechny články v sekci
Microsoft Azure a IoT
Přeskočit článek
(nedoporučujeme)
Microsoft AZURE - Práce s daty a příprava prostředí
Článek pro vás napsal Michal Gros
Avatar
Uživatelské hodnocení:
6 hlasů
Autor se jako Partner Solution Architekt ve společnosti NetSecure věnuje cloud technologii MS AZURE, spravuje systémy na os LINUX WINDOWS. Programuje v c, c++ a C# .net, Html
Aktivity