「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
双方向通信の仲介 †
デバイス認証 †
デバイス認証によるセキュリティ強化
メッセージ ハブ †
メッセージング パターン †
複数のメッセージング パターンをサポート
- ファイルのアップロード
- IoTデバイス制御の要求/応答メソッド
ソリューション構築 †
接続 †
監視 †
イベントを追跡により、ソリューションの正常性維持に役立つ。
- IoTデバイスの作成
- IoTデバイスの障害
- IoTデバイスの接続
アプリケーション開発 †
Azure IoT Hub SDKを使用して開発。
- Azure IoT Hub Device SDK
デバイス側のアプリケーションの構築を容易にする。
- Azure IoT Hub Service SDK
クラウド・サービス側のアプリケーションの構築を容易にする。
- Azure IoT Hub 管理 SDK
サブスクリプション内の IoT Hub管理アプリケーションの構築を容易にする。
- Azure Provisioning SDK
DPSを使用してデバイスをIoT Hub にプロビジョニング
詳細 †
機能 †
スケール調整 †
毎秒数百万のイベントに対応するようにスケーリングします。
- 数百万のIoTデバイスの同時接続
- および IoT ワークロードをサポート
クォータと制限 †
DoS攻撃からの保護するため、サブスクリプションごとの IoT ハブの数を制限
https://docs.microsoft.com/ja-jp/azure/azure-subscription-service-limits
IoTデバイスの構成と制御 †
- IoTデバイス毎、またはIoTデバイス共通特性に基づいて、IoTデバイスの状態を設定。
- IoTデバイスのデバイス メタデータと状態情報を保存、同期、照会。
- IoTデバイスで報告された状態の変化に自動的に対応。
ルーティング †
メッセージ・ルーティング †
- コードのないルール・ベースのルーティング
- HubがIoTデバイスのテレメトリ(稼働データ)を送信する場所を制御
- 複数のエンドポイントにメッセージをルーティング
イベント・ルーティング †
Azure Event Gridでのルーティング
- 利用統計情報、デバイスの作成、削除、接続、切断のIoT Hub イベントに対応
- Microsoft.Devices.DeviceCreated?
デバイスが IoT Hub に登録されると発行される。
- Microsoft.Devices.DeviceDeleted?
デバイスが IoT Hub から削除されると発行される。
- Microsoft.Devices.DeviceConnected?
デバイスが IoT Hub に接続されると発行される。
- Microsoft.Devices.DeviceDisconnected?
デバイスが IoT Hub から切断されると発行される。
- Microsoft.Devices.DeviceTelemetry?
デバイス テレメトリのメッセージが IoT Hub に送信されると発行される。
セキュリティ †
参照アーキテクチャに準拠
- セキュリティ保護された通信チャネルを使用
- IoTデバイスを自動的にプロビジョニング
- IoTデバイス毎の認証(安全に接続・管理)
- IoTデバイスのアクセス制御、接続制御
認証・認可 †
- デバイス毎のセキュリティ資格情報でアクセス制御
・対称キー
・自己署名証明書
・CA署名証明書
- ヒトやサービスからIoT Hubにアクセスする場合
共有アクセスポリシーでアクセス制御
- 共有アクセスポリシーとデバイス毎のセキュリティ資格情報の違い
- 共有アクセスポリシー
- ヒトやサービスが使用する。
- ポリシー名とアクセス許可を登録する。
- デバイス毎のセキュリティ資格情報
- デバイスが使用する。
- デバイスIDのみ登録(アクセス許可は登録しない)。
- 共有アクセスポリシーと対称キーはSASトークンに変換する。
- SDKを使わずに、接続するにはSASトークンを渡す必要がある。
- SASトークンは、以下をSHA256で署名して生成する。
- 共有アクセスポリシーの場合
・共有アクセスポリシー名
・共有アクセスキー
・リソースURI
・有効期限
- 対称キーからの場合
・対称キー
・リソースURI
・有効期限
プロビジョニング †
IoTデバイスの接続 †
IoT Hub と対話するアプリケーションを作成できる。
プラットフォーム †
プログラミング言語 †
Hubに接続されるフロントエンド・バックエンド
Endpoint †
Azure IoT Hubの「Hub」とは、以下の
を繋ぐ「Hub」と言う所から来ているらしい。
Device Endpoint(Device ⇔ Hub) †
デバイス側(フロントエンド
- D2C Endpoint
D2C メッセージの送信(Azure Event Hubs互換
- 時系列テレメトリとアラート
- ファイルのアップロード
- デバイス ツインの報告されるプロパティ
- C2D Endpoint
C2D メッセージの受信(キューから受信)
- ファイル通知の受信
ファイルのアップロード結果の通知を受信
- ダイレクト メソッド
要求 / 応答型パターンに従うダイレクト(疑似Push)メソッド(の要求側)
※ 実装する際は、言語毎に用意されたAzure IoT Hub Device SDKを使用する。
Service Endpoint(Hub ⇔ Service) †
クラウド・サービス側(バックエンド)
- D2C Endpoint
D2C メッセージの受信
- 時系列テレメトリとアラート
- ファイルのアップロード
- デバイス ツインの報告されるプロパティ
- C2D Endpoint
C2D メッセージの送信(キューに送信)
- ファイル通知の送信
ファイルのアップロード結果の通知を送信
- ダイレクト メソッド
要求 / 応答型パターンに従うダイレクト(疑似Push)メソッド(の応答側)
※ 実装する際は、言語毎に用意されたAzure IoT Hub Service SDKを使用する。
Management Endpoint †
- デバイス ID の管理
- HTTPS REST エンドポイント
- デバイス ID の管理 (作成、取得、更新、削除)
- デバイス ツインの管理
- HTTPS REST エンドポイント
- デバイス ツインのクエリと更新 (タグとプロパティの更新) を実行
- ジョブの管理
- HTTPS REST エンドポイント
- ジョブのクエリと管理を実行
※ 実装する際は、言語毎に用意されたAzure IoT Hub 管理 SDKを使用する。
メッセージング パターンとプロトコルまとめ †
マトリックス †
名称 | 用途 | 方向 | 頻度 | プロトコル |
D2Cメッセージ | Cloudへの送信 | 上り | 高 | すべてのプロトコル |
C2Dメッセージ | Deviceへの送信 | 下り | 低 | すべてのプロトコル |
Desired プロパティ | Twinプロパティの要求 | 下り | 中 | MQTT または AMQP |
Reported プロパティ | Twinプロパティの報告 | 上り | 中 | MQTT または AMQP |
ダイレクトメソッド | 双方向通信 | 下上 | 高 | 方向によって異なる。 |
ファイルアップロード | 大容量の送信 | 上り | 低 | HTTPが必要 |
ポイント †
- ダイレクト メソッドのみ、
要求 / 応答型パターンに従う双方向通信
(下りのHTTPから始まり、上りは全プロトコルに対応)
- 例外的に、HTTPのC2Dは疑似Pushで非効率。
- ファイルアップロードは以下から構成される。
- ストレージへのアップロード(HTTP)
- アップロードの完了通知(全プロトコル)
参考 †
matsujirushi’s blog †
Qiita †
YouTube? †
microsoft.com †
Microsoft Azure †
Microsoft Docs †
Learn | Microsoft Docs †
Tags: :クラウド, :IoT, :Azure