Azure IoT Hub
多数の IoT デバイスを安全につなぎ、クラウドとの双方向通信を一元管理。大量機器の接続・制御を任せられるマネージドハブで、AWS の IoT Core 相当。
- 端末ごとの資格情報で接続を認証し、双方向通信を仲介する。
- 上りは条件ルートで複数宛先へ、下りは用途別の手段で届ける。
- 少なくとも1回配信を前提に、重複排除と期限切れを設計する。
解決する課題
工場の機器・センサー・車載端末などの大量のデバイスを、ネットワーク越しに安全かつ確実につなぎ、テレメトリ収集と遠隔制御を中央集権的に行うための接続基盤を提供します。
- 数万から数百万台規模のデバイスを 個別 ID で認証 して接続したい
- デバイスからクラウドへの テレメトリ送信と、クラウドからデバイスへの コマンド送信の両方をしたい
- 一時的に切断されるデバイスにも、再接続後に 状態や設定を同期 したい
- TLS・トークン・証明書で なりすましや盗聴を防ぎ、デバイスごとに権限を絞りたい
- 受信したテレメトリを 後続の分析・保存・処理へ自動で流したい
主要概念と用語
- IoT Hub: デバイスとクラウドの間に立つマネージドな接続エンドポイント。メッセージのルーティングと ID 管理を担う
- デバイス ID(Identity Registry): 接続を許可するデバイスを登録したレジストリ。デバイスごとに固有の資格情報を持つ
- デバイスツイン(Device Twin): 各デバイスのメタデータと状態を表す JSON ドキュメント。希望状態(desired)と報告状態(reported)を保持して同期に使う
- ダイレクトメソッド(Direct Method): クラウドからデバイスの関数を即時に呼び出す要求応答型の制御。デバイスのオンライン時に応答を受け取る
- クラウドからデバイスへのメッセージ(C2D): クラウドが特定デバイスへ送るキュー型のコマンド配信
- デバイスからクラウドへのメッセージ(D2C): デバイスが送るテレメトリ。組み込みエンドポイントまたはルーティングで後続へ流す
- メッセージルーティング: テレメトリやイベントを条件に応じて Event Hubs・Service Bus・Storage などへ振り分ける機能
- デバイスプロビジョニングサービス(DPS): 多数のデバイスを自動で適切な IoT Hub に割り当てるゼロタッチ登録サービス
- IoT Edge: ゲートウェイ機器上でモジュールを実行し、現場側でフィルタリングや推論を行う拡張
仕様・制限・クォータ
- プロトコル: MQTT 3.1.1、AMQP 1.0、HTTPS 1.1 に対応し、MQTT / AMQP over WebSocket は 443 番を使える。通信は TLS で保護する
- メッセージサイズ: D2C は最大 256 KB、C2D は最大 64 KB。大きなファイルはファイルアップロード機能で Blob Storage へ直接送る
- D2C 保持: 組み込みエンドポイントの保持は既定 1 日、最大 7 日。長期保存先ではない
- C2D 保持: 端末ごとのキューは少なくとも1回配信。TTL は 1〜48 時間(既定 1 時間)、最大配信回数は 1〜100(既定 10)
- メッセージ単位課金: 有料層は 4 KB 単位、無料層は 0.5 KB 単位でメッセージ数に換算する
- 層(Tier): 無料層・Basic 層・Standard 層がある。Basic 層は D2C のみで、デバイスツインやダイレクトメソッドなどの双方向機能は Standard 層が必要
- 日次容量: 1 ユニットあたり S1/B1 は 400,000、S2/B2 は 6,000,000、S3/B3 は 300,000,000 メッセージ/日。サイズ1/2は最大200ユニット、サイズ3は最大10ユニット
- デバイスツイン: タグは 8 KB、希望プロパティと報告プロパティは各 32 KB が上限
- 登録数: 1 ハブのデバイスとモジュールの合計は最大 1,000,000。レート上限は層・ユニットごとに別途適用される
内部の仕組み
横にスクロール
IoT Hub は、登録済みデバイスからの接続を デバイスごとの資格情報(SAS トークンまたは X.509 証明書)で認証し、TLS で保護された常時接続を維持します。デバイスが送る D2C テレメトリは、まずハブの組み込みエンドポイント(Event Hubs 互換)に入り、ここから メッセージルーティングによって条件に応じた宛先へ振り分けられます。
クラウドからの制御には複数の経路があります。即時の指示には ダイレクトメソッド(要求応答)、キュー型の片方向配信には C2D メッセージ、設定の宣言的な同期には デバイスツインを使います。デバイスツインでは、クラウドが希望状態(desired プロパティ)を書き込み、デバイスが再接続時にそれを取得して適用し、結果を報告状態(reported プロパティ)として書き戻します。これにより、オフラインだったデバイスも復帰後に最新の設定へ収束できます。
大規模な初期登録は DPS(デバイスプロビジョニングサービス)が担い、デバイスを地理やルールに応じて適切な IoT Hub へ自動割り当てします。現場側で前処理が必要な場合は IoT Edge をゲートウェイに置き、フィルタリングやローカル推論を行ってからクラウドへ送る構成にできます。
即時の指示は ダイレクトメソッド(要求応答・オンライン時)、宣言的な設定同期は デバイスツイン(再接続時に収束)、キュー型の片方向コマンドは C2D メッセージ。要件が「すぐ応答が欲しい」「状態を合わせたい」「届けば良い」のどれかで選びます。
設計パターン / ベストプラクティス
- テレメトリの後段はルーティングで分離: メッセージルーティングで、ホット分析は Event Hubs・Stream Analytics へ、長期保存は Blob Storage へと宛先を分ける
- 大量デバイスは DPS でゼロタッチ登録: 製造時にデバイスへ資格情報を焼き込み、初回接続時に DPS が自動で割り当てる
- 設定配布はデバイスツイン: 個別のコマンド送信ではなく、希望プロパティで宣言的に構成を配り、報告プロパティで適用結果を確認する
- 大きなデータはファイルアップロード: 画像やログなどはメッセージに載せず、SAS で Blob Storage へ直接アップロードする
- 現場前処理は IoT Edge: 帯域や遅延が問題なら、エッジでフィルタリング・集約・推論してから送る
- 冪等なメッセージ処理: 再送や重複に備え、後段の処理はメッセージ ID で冪等に設計する
運用・監視
- Azure Monitor のメトリクスで、テレメトリ送信数・接続デバイス数・スロットルやエラーの発生を監視する
- 接続イベントのログで、デバイスの接続・切断・認証失敗を追跡し、頻繁な切断や認証エラーを早期に検知する
- メッセージルーティングのフォールバック経路を用意し、どの条件にも一致しないメッセージを取りこぼさないようにする
- 診断設定でログを Log Analytics へ送り、デバイス単位のトラブルシュートと傾向分析に使う
- スロットルが出たら ユニット数の増設や層の見直しを検討する
コスト
課金は主に 層・サイズ・ユニット数で決まり、各ユニットの日次メッセージ枠を超えるとスロットルされます。有料層は 4 KB 単位で数え、双方向機能が不要なら Basic、ツイン・C2D・ダイレクトメソッド・IoT Edge が必要なら Standard を選びます。
| 層 | 主な機能 | 向いている用途 |
|---|---|---|
| 無料層(F1) | Standard相当の機能、8,000メッセージ/日 | 検証・学習・PoC。1サブスクリプション1ハブ |
| Basic 層 | デバイスからクラウドの送信中心 | テレメトリ収集のみで双方向制御が不要な構成 |
| Standard 層 | 双方向通信・ツイン・メソッド・Edge | S1/S2/S3で40万/600万/3億メッセージ/日・ユニット |
セキュリティ
- デバイス認証: デバイスごとに SAS トークンまたは X.509 証明書で認証する。大規模・高セキュリティでは証明書ベースを推奨
- 最小権限: デバイスは自分の ID の範囲でしか操作できないよう権限を絞り、サービス側アクセスは用途別のポリシーや RBAC で分離する
- 転送の暗号化: 通信はすべて TLS で保護される
- マネージド ID と Entra ID: ルーティング先などへの接続はマネージド ID を使い、接続文字列のハードコードを避ける
- ネットワーク制御: プライベートエンドポイントや IP フィルタで公開アクセスを制限できる
- 資格情報の失効: 漏洩や廃棄に備え、デバイス資格情報を個別に無効化・ローテーションできるようにする
IoT Hub と Azure Device Registry、Microsoft 管理 X.509 証明書を統合する機能は公開プレビューです。新規 Hub / DPS と対応リージョンが必要で、既存 Hub のアップグレード経路はありません。本番の前提にせず、GA 状況・制限・移行経路を確認してください。
全デバイスで同一の共有キーや接続文字列を使い回すのは NG。1 台漏洩すると全体が危険にさらされ、個別失効もできません。デバイスごとに固有の資格情報を発行し、可能なら X.509 証明書と DPS で安全に配布してください。
Well-Architected の観点
- セキュリティ: デバイスごとの個別認証、TLS、最小権限、プライベートエンドポイントで攻撃面を絞る。共有資格情報を避け、失効とローテーションを運用に組み込む
- 信頼性: 一時切断に強いデバイスツインで設定を収束させ、ルーティングのフォールバックでメッセージを取りこぼさない。DPS と複数ハブで大規模・地理分散にも対応する
- 運用: メトリクスと接続ログで接続品質を可視化し、スロットルや認証失敗を早期に検知する
- コスト: 双方向機能の要否で層を選び、ユニット数とメッセージ数を需要に合わせて調整する
試験で問われるポイント
- デバイスからクラウドの送信だけで良いか、双方向制御が要るかで層を選ぶ。ツイン・ダイレクトメソッド・C2D が要件なら Standard 層
- 即時応答はダイレクトメソッド、状態同期はデバイスツイン、片方向コマンドは C2D メッセージという3手段の使い分け
- 大量デバイスのゼロタッチ登録は DPS、現場での前処理やオフライン耐性は IoT Edge、という役割分担
- デバイスごとの個別認証(SAS トークンまたは X.509 証明書)が基本で、共有資格情報の使い回しは非推奨
- テレメトリを後続へ振り分けるのはメッセージルーティングで、Event Hubs・Service Bus・Storage などへ送れること
- AWS の相当サービスは IoT Core。対応関係を問う設問で迷わないこと
関連サービス・比較
IoT Hub は AWS の IoT Core に相当し、デバイス接続・認証・双方向通信・ルールによる転送を担います。主な対応関係を示します。
| 観点 | Azure IoT Hub | AWS IoT Core |
|---|---|---|
| 位置づけ | デバイス接続・双方向通信のハブ | デバイス接続・双方向通信のハブ |
| プロトコル | MQTT / AMQP / HTTPS | MQTT / HTTPS / WebSocket |
| デバイス状態 | デバイスツイン | デバイスシャドウ |
| 即時の遠隔呼び出し | ダイレクトメソッド | ジョブ / MQTT トピック |
| テレメトリの振り分け | メッセージルーティング | ルールエンジン |
| 大量登録 | デバイスプロビジョニングサービス | フリートプロビジョニング |
| エッジ実行 | Azure IoT Edge | AWS IoT Greengrass |
| 認証 | SAS トークン / X.509 証明書 | X.509 証明書 / カスタム認証 |
IoT Hub はあくまで接続とルーティングのハブです。ストリーム分析は Azure Stream Analytics、大規模取り込みは Event Hubs、保存は Blob Storage、可視化やデバイス管理を含む一括ソリューションは Azure IoT Operations や関連サービスと組み合わせて構成します。
ハンズオン / CLI例
# リソースグループを作成
az group create --name demo-rg --location japaneast
# IoT Hub を作成(双方向機能を使うため Standard 層を指定)
az iot hub create \
--resource-group demo-rg \
--name demo-iothub-0614 \
--location japaneast \
--sku S1
# デバイス ID をレジストリに登録(対称キー認証)
az iot hub device-identity create \
--hub-name demo-iothub-0614 \
--device-id sensor-001
# デバイスツインの希望プロパティを設定(設定を宣言的に配布)
az iot hub device-twin update \
--hub-name demo-iothub-0614 \
--device-id sensor-001 \
--desired '{"telemetryInterval": 30}'
# クラウドからデバイスの関数を即時呼び出し(ダイレクトメソッド)
az iot hub invoke-device-method \
--hub-name demo-iothub-0614 \
--device-id sensor-001 \
--method-name reboot \
--method-payload '{}'
Azure Service
Azure IoT Hubを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
IoT
比較で見る軸
クラウド: Azure / カテゴリ: IoT / 難易度: intermediate
導入後に効く点
上りは条件ルートで複数宛先へ、下りは用途別の手段で届ける。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- IoT
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- security / reliability
判断チェックリスト
- 自社の用途が「IoT / security」に近いか確認する。
- 強みである「端末ごとの資格情報で接続を認証し、双方向通信を仲介する。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。