Windows 10 IoT Core をセキュアにするために、IoT Core Dashboard を使って接続情報をデバイスに配置する(ただし、まだ課題あり)

■IoT Core Dashboard の “Azure に接続” タブでできること

最近(この一ヶ月以内くらい)、IoT Core DashboardIoT Hub を作れるようになりました。

IoT Core Dashboard の“Azure に接続”タブでできることは以下の3つ。

  1. IoT Hub の作成
  2. デバイス ID の作成
  3. デバイスへのプロビジョニング(ドロップダウンの項目名としては“プロビジョニング対象のデバイス”)

1, 2 でできることと操作方法は、先日の勉強会の資料 を参照。

本稿では、3つ目の「デバイスへのプロビジョニング」について取り上げます。
ちなみに本稿のネタ元は Windows Developer ブログ


■IoT Hub に接続するために必要な情報

デバイスを IoT Hub に接続するためには、

  • デバイス ID
  • 接続文字列(IoT Hub のエンドポイントやアクセスキーを含む文字列

が必要です。

一番お手軽な方法は、const で持ったり、config ファイルなどに定義しておくやり方。ただし、デバイスごとにビルドが必要な const は検証以外ではありえないし、configだとしても管理が面倒&平文だと情報が漏れてしまった時に問題が起こるという問題がある。

次に考えられる方法は、このブログではすっかりお馴染みに MS 太田さん作の こちらのハンズオン資料 で行っているように、IoT Hub への接続に必要な情報を返す Web サービスを立てるやり方。この方法は接続情報を返すサービスのエンドポイント自体はデバイスに平文で保持することになります。


■デバイスへのプロビジョニング

よりセキュアに IoT Hub への接続情報を保持するために、Windows 10 IoT と IoT Core Dashboard で提供しているのが、デバイスの TPM を利用する方法。
※Raspberry Pi は実際には TPM を載せていないので、エミュレーターを使います。つまり現時点では、本稿で紹介している方法はセキュアではないということ。今後 and/or 他のデバイスに期待しましょう。(ラズパイの価格を考えると TPM を載せるのは難しいかな・・・)

デバイスの TPM に接続情報を保存するのはとても簡単。

  1. Dashboard で IoT Hub を作成する、または既存の IoT Hub に接続する。
  2. デバイス ID を新規登録する、または既存の IoT Hub に登録済みのデバイス ID を選択する。ここまでは先日の勉強会でやった内容。
  3. Windows 10 IoT Core デバイスを動作させる。
  4. Dashboard の [Azure に接続] タブで、IoT Hub とデバイス ID を配置したいデバイスを [プロビジョニング対象のデバイス] で指定する。
  5. [プロビジョニング] ボタンをクリックする。

以上で終了。

2016-08-07 20-15-042016-08-07 20-17-05

実運用では、多数のデバイスに接続情報を保存するにも、もっと効率が良い方法を検討するほうがいいと思いますが、検証フェーズや仕組みを覚える目的には上記の手順で OK。

Device Portal でデバイスを覗いてみると、確かに指定したデバイスの TPM に登録されていることが分かります。

2016-08-07 20-18-29

ただし上でも触れたとおり、Raspberry Pi 2/3 は TPM を載せていないので、現時点ではエミュレーターを使っています。残念ながらセキュアではありません(他の方法より劣っているという意味ではありません、念のため)。


■TPM に保存した情報をアプリで利用する方法

TPMに接続情報を保存できたので、次はアプリでそれらの値を参照する方法が必要です。
Microsoft.Devices.Tpm クラスが面倒を見てくれます。わかりやすい名前ですね。

  1. Visual Studio 2015 で  UWP プロジェクト(空のプロジェクトでも OK)を作成
  2. IoT に最低限必要なライブラリを参照。具体的には “Windows IoT Extensions for the UWP”と “Microsoft.Azure.Devices.Client”の二つ。
    2016-08-07 20-24-202016-08-07 20-23-31
  3. TPM を利用するためのライブラリを NuGet からダウンロード。 “Microsoft.Devices.Tpm”がそれ。
    2016-08-07 20-22-31
  4. コード中では TpmDevice クラスを利用します。デバイスには複数の TPM を持てますが、今回は 0番目。
    GetHostName, GetDeviceId, GetSASToken の各メソッドで必要な情報を読み出せます。
    2016-08-07 20-26-35
  5. IoT Hub に接続するには DeviceClient クラスを使います。
    上のコードで取得した値を Create メソッドに渡すと IoT Hub に接続されます。あとはデータを送るのも受けるのも、先日の勉強会ハンズオン資料の通り。

実は簡単にセキュアな情報を利用できるのでした。
(上にも書いたとおり、Raspberry Pi では現時点ではエミュレーターでの動作なのですが・・・)


■DragonBoard 410c の場合

TPM が載っている Windows 10 IoT Core 対応ボードということで、DragonBoard 410c でも試してみました。

残念ながら今のところ、プロビジョニングの操作でエラーが発生して、接続情報を配置することができていません。それこそセキュリティ上の問題だと思いますが、原因はまだ分かっていません。すいません。
これについては引き続き調査してみたいと思います。

2016-08-07 20-28-182016-08-07 20-29-59

DragonBoard 410c には確かに TPM が載っているので、この操作ができれば Raspberry Pi に対するメリットになりますね。

 

以上、まだ課題が残っている状態ですが、セキュアに IoT Hub に接続する方法の紹介でした。

「IoT キットハンズオンのソースコード解説します (クラウド編 Part 1)」セッション資料を公開しました (Techfair.jp 勉強会 2016年7月30日開催)

まとめ(というより、ここでのお知らせ)がすっかり遅くなりましたが、7月30日(土) に

IoT キットハンズオンのソースコード解説します (クラウド編 Part 1)

なる勉強会を開催しました。
会場は、初めての八王子開催、WakU2 さんのスペースでした。都心ではないということで実は少し集客を心配したのですが、公開から1日経たずに定員に達しました。


IoT のハンズオンを受けて、また各種イベントなどで技術者の皆さんとお会いした時に、「ハンズオンで動きは分かったけど、仕組みや中味が分からないので解説してほしい」という声をたくさんいただきました。
IoT は構成要素がたくさんあり、全体を俯瞰できるハンズオンは相当のボリュームで 1日がかりなので、解説までできないのは当然と言えば当然。

そこで(ハンズオンは自習していただくとして)、中味の解説をしようというのが今回の勉強会。
ちなみにマイコンボード (.NET Micro Framework on GR-PEACH) に焦点を当てたのが前回の勉強会 です。
また今回のタイトルに “Part 1”と付けていることから分かるように、まだ扱っていない構成要素を解説する勉強会も今後開催したいと考えています。

今回は、IoT Hub, Stream Analytics という、IoT の中心と言っていいサービスをメインに、データ入力として Windows 10 IoT Core、出力例として Power BI, Excel を紹介しました。


休憩を挟みながら、3時間半のセッションであったので(いや、疲れたw、というより最後は声が出なかった・・・)、資料も3部構成。

https://docs.com/d/embed/D25193249-9793-6065-7830-000238822446%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702

https://docs.com/d/embed/D25193249-9624-5155-0340-001664257068%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702

https://docs.com/d/embed/D25193249-9523-3647-4060-001028506262%7eBfe5a7bff-fc39-9c7d-d35f-86e930988702


今回好評だったので、リピートセッション続編も検討中です。
ただし今のところ、Techfair.jp でのハンズオンは予定していません。それを実施するコミュニティの体力(スタッフ)も、資材(マイコンボードなど)も、残念ながら持っていないため。
その代わり、今回のような形態での勉強会は今後も開催します。ご理解ください。

まずは上の資料とハンズオン資料で、IoT の理解を深めてください!

Windows 10 IoT Core Dashboard で IoT Hub を作れるようになってます

みんな大好き、Windows 10 IoT Core / Raspberry Pi 。
・・・ですが、IoT Hub との組み合わせは意外と試されてないのかなと思います。面白い技術なのでもったいない。
IoT の中での位置づけや操作方法の一つは こちらの資料 (MS 太田さんの力作)で確認していただくとして、今回は今の時点ではそちらの資料でも触れられていない事項を紹介。

最近(この2週間くらいですかね)、IoT Dashboard に IoT Hub を作ったり、デバイス ID を登録する機能が追加されました。この機能についてはまだ動作が安定しないんですが(ちょっとバグが・・・)、IoT Hub を触ってみるきっかけになれば。

IoT Dashboard での操作について、具体的な画面とあわせて手順を紹介。

  1. IoT Dashboard を開いて、[Connect to Azure] メニューを選択。認証を求められるので、Azure のサブスクリプションのアカウント情報を入力。
    ※アカウントを持ってない方は、会社であれば(上司と相談しつつ)無料の評価アカウントを取得、個人であれば Visual Studio Dev Essentials に登録。
    2016-07-16 22-57-50
  2. すでに IoT Hub を作成済みであれば、[Azure IoT Hub] に表示されるはず。そこにデバイスを登録したい場合は、それを選択。
    もし作成済みの IoT Hub がない場合、または新規の IoT Hub を作成したい場合は [Create new IoT Hub] をクリック
  3. 新規の IoT Hub を作る場合は、各項目を入力・選択して [Create] ボタンをクリック。
    作成には数分がかかるので、コーヒーブレークとか手洗いに行くとかで一休みしてください(笑)
    2016-07-16 23-09-052016-07-16 23-14-57
  4. [Create new device] で、デバイス ID を作成。
    [Create] ボタンをクリックすると、指定のデバイス ID はすぐに登録されます。
    ソリューション(同じ IoT Hub に登録するデバイスの中)で一意であればなんでもかまいません。
    ただし、上で紹介したハンズオン資料を試すには、クラウド上で一意の ID である必要があるので、GUID や MAC アドレスなどで工夫してください。l詳しくはハンズオン資料の手順を参照のこと。
    2016-07-16 23-20-462016-07-16 23-27-44
  5. Azure ポータルに接続してみると、確かに IoT Hub が作られているし、デバイス ID も登録されているのが分かります。
    2016-07-16 23-32-44
  6. ここまでくれば当然、Device Explorer で見てもちゃんとデバイスが登録で来ているのが確認できます。
    2016-07-16 23-39-462016-07-16 23-40-37

 

あとはハンズオン資料などを参考に、センサーデータを Azure に上げてみてください。

このあたり、7月30日(土) に開催する勉強会でも紹介します。その場でも直接共有します。

ただし、ありがたいことに 30日の勉強会はすでにキャンセル待ちの状態ですが、リクエストが多ければリピートセッションを早いタイミングで実施する計画はあるので、ぜひどんどん声をお寄せください。

IoT も IoT Hub も Raspberry Pi も本当に楽しいです。ぜひ皆さんもこれを機に触ってみてくださいね。

「Android + Azure で IoT ハンズオン」を2週続けて実施しました #techfair

Android + Azure で IoT ハンズオン」を2週続けて実施しました。

「センサーが載っていて、インターネットに接続可能」という点で、スマホは IoT と親和性が高いと言えます。
そして、(少なくともこのブログを読んでくれる人は)まあスマホの1台や2台は持っているだろうと思います。
それならば、IoT の実習としてスマホを活用しない手はありません。マイコンボードなどを買う前にまずは IoT を体験できるわけです。

Visual Studio はマルチデバイス開発に対応しています。ハンズオンでは Cordova を使って、Android アプリを開発して、Azure と連携する手順を紹介しました。

参加された皆さんのお役に立てたようならうれしいです。


ひとつとても残念なのは、25日の勉強会のキャンセル率、欠席率の高さ。

申し込み47人(定員30人)に対して、当日参加してくれたのは7人。

前日から当日にキャンセルした人が15人、無断欠席が12人。
「ハンズオンなので事前準備が必要だから、直前キャンセルや無断欠席はしないでください」と何度もお願いしたにも関わらず・・・。興味を引き続けられなかった責任はあるし、今後の課題にしたいと思いますが、これでは勉強会の企画も会場提供をお願いするのも難しくなります。なによりも勉強したいと思っている人の機会を奪ってしまっていることに気づいていないのでしょうか。

他の勉強会でも欠席者には頭を悩ませていると思いますが、こういった恥ずかしい行為をする人が減ることを願うばかりです。

これからもステップアップしたい人に場を提供できるよう、がんばっていきます。技術者コミュニティを盛り上げるために、微力ですががんばっていきます!
(さしあたっては9月くらいの勉強会のために会場を提供してくれるところを探さねば)

「IoT、貯めるだけではもったいない」セッション資料を公開しました (第4回 Apps for Office 勉強会 / 2015年3月14日)

3月14日(土) 開催の 第4回 Apps for Office 勉強会 で、

IoT、貯めるだけではもったいない

セッションを担当しました。

コミュニティ 「IoT あるじゃん」 が正式に活動を始め、IoT に取り組める環境が整ってきました。

IoT に関してはデバイスやガジェットの面での議論が盛んです。クラウドについても活発に意見が交換されたりイベントが開催されたりしています。
IoT ではもう一つ大事な側面があります。蓄積したデータをどのように活用するかという面。これについては、ビッグデータや機械学習 (ML) と絡めて議論されることが多いように思います。

しかし “スモールデータ” と呼んでいいようなデータもたくさんあります。ML に頼らずに人間が直接分析したり利用したりできるデータもたくさんあるはず。

セッションではこういったデータを簡単に利用する方法として、Azure Mobile Services に蓄積したデータをクラウドビジネスアプリ (LightSwitch) で閲覧する手順を紹介しました。
LightSwitch なので自前のテーブル定義であっても、外部のデータソース (SQL Database) であってもアプリ開発の手順は同じです。違うのはデータソースの指定のところのみ。

クラウドに蓄積したデータの活用のツールとして LightSwitch も検討してみてください。


こんなメッセージをお伝えしました、セッション資料はこちらです・・・と言いたいところですが、実は当日のセッションはほぼアドリブでした(笑)。

勉強会に参加して 1枠いただくのが決まったのが木曜日の夜。
当日の構成上の都合で LightSwitch の基礎から 70分間で話をすることになったのが勉強会当日の朝 7時。
枠の時間が50分と正式に決まったのが品川に向かう電車の中。
40分弱でお願いしますと言われたのが演台に立ってから(笑)。
・・・しゃべり慣れた LightSwitch の基本からデモ、そして IoT の話と あるじゃんの宣伝。全部まとめて 38分ほどでお届けしました。
IoT について、Mobile Services のデータをインポートする手順、LightSwitch 開発のカスタマイズのあたりが薄くなってしまったのは残念ですが、そこはぜひ資料で確認してください。

こういう展開も珍しいので、自分の中ではいい経験になりました。

結論としては、クラウドビジネスアプリは楽しいよ、IoT は楽しいよ、ということです。

「デモで見る .NET Gadgeteer の Azure 利用」セッション資料を公開しました (Azure 利用を改めて考える回 / 2015年2月21日) #hirobatech

2月21日(土) 開催の Azure 利用を改めて考える回 ~技術ひろば.net 2015年2月~ で、

デモで見る .NET Gadgeteer の Azure 利用

セッションを担当しました。

.NET Gadgeteer、IoT のセッションは何度かやってますが、「動くのは分かったから、コードが見たい」というリクエストをいただいていました。ということで、今回はコードの説明を中心にしてみました。
.NET Micro Framework / .NET Gadgeteer とライブラリを活用すれば Mobile Services にデータを蓄積するのが簡単だということは理解していただけたんじゃないかと思っています。

IoT というキーワードは知っているけど .NET Micro Framework はよく分からないという方が半数ほど。ということで Lチカから始めましたが、センサークラウドなところをもう少しお話しするほうがよかったですね。

大事なのは、「じゃあ IoT で何をする?」というところですが、まずはこういう技術があるということを知っていただき、「面白そう、やってみたい」という感想をたくさんいただいたので、IoT 推しとしては一つ仕事ができたんじゃないかと。
※個人的には、NSAT が高いのが、かなりうれしかったりするんですが(照)

これからも IoT 推していきますよ。
IoT の春がますます楽しみになってきました。

【すでに残席わずか】 技術ひろばの 2015年2月の勉強会は 21日(土) の開催。「Azure 利用を改めて考える」がテーマです。 #hirobatech

大変お待たせしました。
技術ひろばの2015年2月の勉強会は 21日(土) の開催です。

http://hiroba-tech.connpass.com/event/11495/

全体テーマは「Azure 利用を改めて考える」 です。

久しぶりの安納さん登壇、お願いするテーマはもちろん Azure AD です。Azure AD は開発者にも必須の知識ですね。
黒宮さんは「Powershell と .Net CSOM を使った SharePoint Online「外部ユーザー」の管理手法」 というテーマで ITPro に役立つ情報を共有してくれます。
瀬尾は「デモで見る .NET Gadgeteer の Azure 利用」というテーマで .NET Gadgeteer の話をします。既存の情報を改めて紹介する内容ですが、リクエストが多い内容です。

開発者にも ITPro にも楽しめる内容です。ぜひご参加ください!

・・・とブログに書こうと思っていたら、申し込み受付から1日足らずで残席わずかとなってしまいました。
参加希望の方はお早めに。もし満席になっていたらキャンセル待ちをお願いします。空きが出たところで順次参加の権利が得られますし、人数が多くなるようでしたら会場変更も検討します(お約束はできかねますが)。

ということで、どんどんお申し込みください!

http://hiroba-tech.connpass.com/event/11495/

LT 資料 「Project Siena 的 Mobile Services 利用」を公開しました (JAZUG 4周年総会 a.k.a. 日本DCオープン記念後夜祭 カッコカリ 2014年9月20日(土) 開催)

9月20日 (土) に開催された JAZUG 4周年総会に参加してきました。
当日は東京とあわせて、福岡、名古屋、仙台でも同時開催という盛況なイベントでした。

で、そこで5分間時間をいただいて LT をしました。
Project Siena 的 Mobile Services 利用」  というタイトルです。Azure ネタに見せかけて Project Siena について喋りました。
中味が薄くてスカスカな資料ですが、せっかくなので公開します。

分かる人は分かると思いますが、8月の IoT セッションからクライアント部分を抜き出したものです。
今回の LT では時間の都合で省きましたが、 モバイルサービスのデータを Siena にインポートするには zz_config という名前のテーブルを用意する必要があります。zz_config については こちらの資料 を見てください。

なにしろ簡単な Project Siena です。
モバイルサービスをデータソースにすることができるので、サクッとデータを参照・閲覧するには便利なツールです。
本気のシステムにはもちろん力不足ですが、ちょっとしたツールには使えますよ。一度お試しください。

「IoT 入門 ~ .NET Gadgeteer で簡単プログラミング」セッション資料を公開しました(2014年8月30日 “夏祭り!つながる、広がる、IT女子” Windows女子部イベント)

2014年8月30日(土) に開催された 「夏祭り!つながる、広がる、IT女子」(Windows 女子部イベント) にお邪魔してきました。
自分の認識している範囲では私は女性ではないんですがそれでも参加できたのは、1コマセッションを担当させていただいたからです。

「IoT 入門」 というテーマで、そもそも IoT で何?どんな風に使えるの?という話と .NET Gadgeteer + Azure Mobile Services + Project Siena で IoT のデモを行いました。

IoT はインターネットの第三の波であること、.NET Gadgeteer を使えばハードウェアの知識なしに IoT 開発ができることをお話ししました。

学生や非プログラマーがたくさん参加するということで、できるだけ技術的なところに入らずに IoT の面白さをお伝えしたつもりです。参加された方、いかがでしたか?
技術的なところに少しでも興味を持った方は、今回の資料と 先週使った資料 とを覗いてみてください。

足りない部分は、がんばってブログでフォローするようにします。

 

それにしても、今どきの若い人たち、学生さんはしっかりしてますね。
自分が恥ずかしかったです。彼女たちに笑われないようにがんばらないといけないです。

「はじめての Visual Studio /クラウド/ IoT」は7月19日(土) の開催です(技術ひろば.net 2014年7月) #hirobatech

2014年7月の技術ひろば.net の勉強会は「はじめての Visual Studio /クラウド/ IoT (復習希望の方の参加も歓迎)」と題して、7月19日(土) に開催します。
ブログでの告知がすっかり遅くなってすみません。

http://hiroba-tech.connpass.com/event/7101/

タイトル通り、初心者・(再)入門者、それからこれを機に復習してみたいという方のための勉強会です。
当初の予想を大幅に超えたお申し込みをいただき、参加者枠を増やしましたが、それでも満席が予想されます。参加ご希望の方はお早めにお申し込みください。

アンケート、懇親会などで「難しい勉強会が多くて、なかなか参加しづらいことがある」という声をよく聞きます。今回はそういった方の期待に応える勉強会を企画しました。
その場で話を聞いて終わりではなく、参加者の皆さんが一つでも多く自習の情報をお持ち帰りになれる会になるようにしますね。

セッションテーマとスピーカーは、

  • Visual Studio 活用方法・・・椎野磨美さん
  • はじめての IoT ・・・太田寛さん
  • はじめてのクラウド・・・森博之さん

です。豪華スピーカーで実は私自身が当日を一番楽しみにしています。

たくさんの方のお申し込みをお待ちしています。

http://hiroba-tech.connpass.com/event/7101/