MS_AzureIoTHubDPS - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

Azure IoT Hub Device Provisioning Service

概要

  • 適切な IoT ハブへのゼロタッチの JIT プロビジョニングを
    人の介入を必要とせずに実現する、IoT Hub のヘルパー サービス

  • シンプルな「Plug & Play」のプロビジョニング

    • 手動から自動化へ。
    • HSM 連携(セキュリティ)
    • 全世界で利用可能

補足(何が問題で、DPS が何を解決するのか): IoT Hub
デバイスを接続するには、そのデバイス固有の接続文字列が要る。
デバイスが 10 台なら手作業でよいが、10 万台では不可能である。

【DPS なし】
  工場 ─ 1 台ずつ接続文字列を書き込む ─▶ 出荷
         ↑ 接続先の IoT Hub を出荷前に決めておく必要がある

【DPS あり】
  工場 ─ 全台に同じ DPS のエンドポイントを書き込む ─▶ 出荷
                                                       │ 初回起動
                                                       ▼
                                       DPS が証明書で本人確認し、
                                       適切な IoT Hub を割り当てて
                                       接続情報を返す

つまり DPS の本質は、
**「出荷時に接続先を決めなくてよくなる」**ことにある。
後からリージョンを増やしたり、
特定のハブに寄せたりといった変更が、デバイスに触れずにできる。

詳細

シナリオ

不明

シーケンス

不明

補足(原文が「不明」のため、流れを補う)

① デバイス起動
     │ DPS のグローバル エンドポイント(global.azure-devices-provisioning.net)へ
     ▼
② 構成証明(X.509 証明書 / TPM / 対称キー)で本人確認
     │
     ▼
③ 登録一覧(enrollment)と照合
     │  ・個別登録(1 台ずつ)
     │  ・グループ登録(同じ中間 CA で署名された全デバイス)
     ▼
④ 割り当てポリシーに従って IoT Hub を決定
     │
     ▼
⑤ IoT Hub にデバイスを登録し、接続情報をデバイスに返す
     │
     ▼
⑥ 以降、デバイスは直接 IoT Hub と通信(DPS は経由しない)

⑥ が重要で、DPS は初回(および再プロビジョニング時)だけ
使われる。定常運用中の通信路には入らない。

機能

安全な構成証明

  • X.509
  • TPM ベースの ID

補足: 現在は上記に加えて対称キーも選べる
(実装は容易だが、鍵の管理が課題になるため本番では非推奨)。
大量生産では、中間 CA で署名した証明書を使い、
グループ登録でまとめて許可する
のが定石。
こうすると、デバイスを 1 台ずつ登録する作業自体が不要になる。

登録一覧

  • 任意の時点で登録できるデバイスまたはデバイス グループの完全なレコード
  • いつでも更新することができる、デバイスの望ましい構成情報

複数の割当ポリシ

  • DPS がデバイスを IoT Hub に割当る方法を制御。

    • 静的な構成
    • 均等な分布
    • 最短待ち時間
      待ち時間は Traffic Manager と同じ方法を使用して決定
  • Azure Functions でホストされている Webhook を使用して
    独自の割り当てポリシを実装できるカスタム割当サポート

補足: 「Traffic Manager と同じ方法」とは、
パフォーマンス(レイテンシ)ルーティングのことで、
Microsoft が収集しているネットワーク遅延の実測値に基づいて
最も近い IoT Hub を選ぶ。

監視および診断ログ

すべての機能が正常に動作していることを確認

マルチハブのサポート

  • DPS でデバイスを複数の IoT Hub に割当る。
  • 複数の Azure サブスクリプションにわたって IoT Hub と対話。

リージョン間のサポート

デバイスを他のリージョンの IoT Hub に割当

保存データの暗号化

DPS 内のデータは、FIPS 140-2 に準拠

補足(再プロビジョニング): 原文には無いが、実運用で効いてくるのが
再プロビジョニング ポリシーである。
デバイスが再度 DPS に接続してきたときの挙動を決める。

ポリシー 動作
変更しない(既定) 既存の IoT Hub に留まる
再プロビジョニングしてデータを保持 別のハブへ移すが、デバイス ツインを引き継ぐ
再プロビジョニングして初期化 別のハブへ移し、状態をリセット

これがあるため、IoT Hub の障害時や移行時に
デバイスを別リージョンへ寄せ替える
ことができる。
DPS を「初回登録の道具」とだけ捉えると、この用途を見落とす。

参考

Qiita

microsoft.com


Tags: 移行, クラウド, IoT, Azure

⚠️ **GitHub.com Fallback** ⚠️