TL

Cloud Service

Azure Event Grid Namespaces (MQTT)

多数の IoT デバイスを MQTT で相互接続し、デバイス間 pub/sub と Azure へのイベント取り込みをマネージドで実現。AWS IoT Core の MQTT ブローカに相当する位置づけ。

中級セキュリティ信頼性運用上の優秀性コスト最適化
最終更新: 2026-06-28公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.Event Grid 名前空間が提供するフルマネージドな MQTT v3.1.1/v5.0 ブローカ。
  • 2.デバイス間の pub/sub に加え、メッセージを Azure サービスへルーティングできる。
  • 3.X.509 証明書や Entra ID で認証し、トピック単位の細かいアクセス制御を行う。

解決する課題

多数の IoT デバイスやクライアントを標準プロトコルの MQTT でつなぎ、デバイス同士のメッセージ交換と、クラウド側でのイベント処理の両方をマネージドに実現できます。

  • 大量のデバイスを標準の MQTT で双方向接続し、ブローカ運用の手間をなくしたい
  • デバイス間で直接 pub/sub(command/telemetry のやり取り)をしたい
  • 受け取ったメッセージをAzure サービスへルーティングしてクラウド処理につなげたい
  • デバイスごと・トピックごとにきめ細かい認可をかけ、なりすましや横取りを防ぎたい

主要概念と用語

  • 名前空間(Namespace): MQTT ブローカや Event Grid のプル/プッシュ機能を束ねる管理単位。MQTT を使うにはこの名前空間で MQTT 機能を有効化する
  • MQTT ブローカ: 接続したクライアント間でメッセージを中継する pub/sub の中核。MQTT v3.1.1 と v5.0 をサポート
  • クライアント: ブローカへ接続するデバイスやアプリ。クライアント認証情報(証明書のサブジェクトなど)で識別する
  • トピック(MQTT トピック): メッセージの宛先を表す階層的な文字列。発行者は特定トピックへ publish し、購読者は subscribe する
  • トピック空間(Topic space): ワイルドカードを含むトピックフィルタの集合。誰がどのトピックへ publish/subscribe できるかをこの単位でまとめて定義する
  • パーミッションバインディング: クライアントグループとトピック空間を結びつけ、publishersubscriber の権限を付与する設定
  • ルーティング: ブローカが受け取った MQTT メッセージを、CloudEvents として Event Grid 名前空間トピックへ流し、Azure サービスへ届ける仕組み
  • MQTT セッション: クライアントとブローカ間の接続状態。永続セッションでは切断中のメッセージ保持や再開ができる
従来の Event Grid Topics とは別系統

HTTP プッシュ配信の従来型 Event Grid Topics とは独立した機能です。MQTT は必ず Event Grid 名前空間(Namespaces) 側で提供され、デバイス向けの pub/sub とクラウド取り込みを担います。

仕様・制限・クォータ

  • 対応プロトコル: MQTT v3.1.1 と v5.0。接続は TLS で暗号化し、平文接続は許可しない
  • QoS: QoS 0 と QoS 1 をサポート。少なくとも 1 回配信のため、受信側は重複を前提に冪等に設計する
  • 保持/共有購読など: MQTT v5.0 の機能(ユーザープロパティ、共有サブスクリプション、メッセージ有効期限など)に対応。利用可否は仕様の更新で変わり得るため公式を確認する
  • メッセージサイズ・接続数・スループット: 1 メッセージのペイロード上限や同時接続クライアント数、毎秒のスループットなどに上限があり、必要に応じて引き上げを検討する。具体値は変動するため断定しない
  • ルーティング先: MQTT メッセージは CloudEvents として名前空間トピックへルーティングでき、そこから Event Hubs や Service Bus などのハンドラへつなげられる

内部の仕組み

クライアントは TLS 接続でブローカへハンドシェイクし、提示した認証情報(X.509 証明書のサブジェクトや Entra ID トークンなど)でクライアントとして識別されます。識別されたクライアントはクライアントグループに分類され、グループに紐づくパーミッションバインディングによって、どのトピック空間へ publish/subscribe できるかが決まります。

発行者があるトピックへ publish すると、ブローカはそのトピックに一致するフィルタで subscribe している購読者すべてへメッセージを中継します。これがデバイス間 pub/sub の基本動作です。ワイルドカードを含むトピックフィルタにより、1 つの購読で複数トピックをまとめて受け取れます。

クラウド連携が必要な場合は、ブローカがメッセージを CloudEvents 形式に包んで Event Grid 名前空間トピックへルーティングします。そこから先は Event Grid のプル/プッシュ配信に乗り、Azure Functions や Event Hubs、Service Bus などへ届けてクラウド側の処理を起動できます。

デバイス間とクラウド取り込みを1つで

ブローカは「デバイス同士の直接 pub/sub」と「クラウドへの一方向の取り込み」を同じ基盤で扱えます。コマンド配信はデバイス間トピックで、テレメトリ集約はルーティング経由で、と役割を分けると設計が整理しやすくなります。

設計パターン / ベストプラクティス

  • トピック設計を先に固める: 階層を region/site/device/telemetry のように設計し、トピック空間とワイルドカードで認可をまとめやすくする
  • 最小権限の認可: クライアントグループごとに publisher/subscriber を分け、デバイスは自分の領域のトピックだけ扱えるようにする
  • テレメトリはルーティングで集約: デバイスからのテレメトリは名前空間トピックへルーティングし、Event Hubs でストリーム処理、Service Bus で確実な業務連携、と後段を使い分ける
  • 冪等設計: QoS 1 の少なくとも 1 回配信を前提に、メッセージ ID 等で重複排除する
  • 証明書のライフサイクル管理: 失効・ローテーションの運用を整備し、CA ベースの認証で大量デバイスを扱いやすくする

運用・監視

  • Azure Monitor のメトリクスで、接続中クライアント数、publish/deliver の成否、ドロップ、ルーティングの配信状況などを監視する
  • 診断ログを Log Analytics / Storage / Event Hubs へ送り、接続失敗や認可拒否、切断理由を追跡できるようにする
  • 接続トラブルの切り分け: TLS のハンドシェイク、クライアント認証情報とクライアント識別の対応、パーミッションバインディングの権限、トピック空間のフィルタ一致を順に確認する
  • ルーティング先(名前空間トピックの先のハンドラ)でデッドレターや配信失敗を監視し、取りこぼしを検知する

コスト

MQTT 機能は Event Grid 名前空間で提供され、運用に応じた従量課金が基本です。常時起動の専用ブローカを自前で持つ必要がありません。

項目課金の考え方補足
接続/セッションクライアント接続や接続時間に応じて課金同時接続デバイス数が多いほど増える
メッセージ/操作publish・配信などの操作数で従量課金ファンアウトが多いと配信操作が増える
ルーティング名前空間トピックへの取り込み・配信で課金クラウド連携の量に比例
インフラ費用原則なし(マネージド)ブローカの構築・運用が不要

セキュリティ

  • 認証: クライアント証明書(X.509)による認証が基本で、CA ベースの一括登録に対応。アプリやサービスからの接続には Microsoft Entra ID 認証も利用できる
  • 認可: クライアントグループ × トピック空間 × パーミッションバインディングで、トピック単位の publish/subscribe 権限を最小権限で設計する
  • 通信の暗号化: 接続は TLS で保護され、平文の MQTT は許可しない
  • ネットワーク制御: プライベートエンドポイントや公開アクセスの制限で、ブローカへの到達経路を絞れる
アンチパターン

全デバイスを 1 つの広いトピック空間に publisher かつ subscriber として登録するのは NG。1 台が侵害されると全トピックを横取り・なりすましできてしまいます。クライアントグループを分け、各デバイスには必要なトピックの最小権限だけを与えてください。

関連サービス・比較

最も近いのは AWS の IoT Core(MQTT ブローカ部分) です。どちらもマネージドな MQTT pub/sub と、メッセージのクラウドルーティングを提供します。

観点Event Grid 名前空間 MQTTAWS IoT Core (MQTT)
役割マネージド MQTT ブローカと取り込みマネージド MQTT ブローカと取り込み
MQTT バージョンv3.1.1 / v5.0v3.1.1 / v5.0
認証X.509 証明書 / Entra IDX.509 証明書 / IAM / カスタム認証
認可トピック空間 + パーミッションバインディングIoT ポリシー
クラウド連携名前空間トピック経由で Azure へルーティングルールエンジンで AWS へルーティング
後段の連携先Event Hubs / Service Bus / Functions などLambda / Kinesis / SQS など
デバイス管理機能は範囲が異なる

本機能は MQTT メッセージングが中心で、デバイスのプロビジョニングやツインといった IoT デバイス管理までは含みません。デバイスライフサイクル管理が必要なら Azure 側の IoT 向けサービスと組み合わせて補完してください。

ハンズオン / CLI例

# リソースグループを作成
az group create --name demo-rg --location japaneast

# Event Grid 名前空間を作成し、MQTT を有効化
az eventgrid namespace create \
  --resource-group demo-rg \
  --name demo-ns \
  --location japaneast \
  --topic-spaces-configuration "{state:Enabled}"

# クライアントを登録(X.509 証明書のサブジェクト名で識別)
az eventgrid namespace client create \
  --resource-group demo-rg \
  --namespace-name demo-ns \
  --client-name device01 \
  --authentication-name "device01" \
  --state Enabled

# トピック空間を作成(このフィルタ集合へのアクセスをまとめて制御)
az eventgrid namespace topic-space create \
  --resource-group demo-rg \
  --namespace-name demo-ns \
  --name telemetry-space \
  --topic-templates "devices/+/telemetry"

# パーミッションバインディングで publisher 権限を付与
az eventgrid namespace permission-binding create \
  --resource-group demo-rg \
  --namespace-name demo-ns \
  --name device-publish \
  --client-group-name '$all' \
  --permission Publisher \
  --topic-space-name telemetry-space

Azure Service

Azure Event Grid Namespaces (MQTT)を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

アプリ統合

比較で見る軸

クラウド: Azure / カテゴリ: アプリ統合 / 難易度: intermediate

導入後に効く点

デバイス間の pub/sub に加え、メッセージを Azure サービスへルーティングできる。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Azure
カテゴリ
アプリ統合
難易度
intermediate
関連資格
設計柱
security / reliability / operational / cost

判断チェックリスト

  • 自社の用途が「アプリ統合 / security」に近いか確認する。
  • 強みである「Event Grid 名前空間が提供するフルマネージドな MQTT v3.1.1/v5.0 ブローカ。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

アプリ統合securityreliabilityoperationalcost