次の方法で共有


Azure IoT Hub Device Provisioning Service とは

IoT Hub Device Provisioning Service (DPS) は、IoT Hub のヘルパー サービスです。適切な IoT Hub へのゼロタッチの Just-In-Time プロビジョニングを人間の介入を必要とせずに行うことができます。 クラウドベースのソリューションでは、DPS を使用すると、セキュリティで保護されたスケーラブルな方法で何百万ものデバイスをプロビジョニングできます。 プロビジョニングに従来必要だった手動の手順の多くは DPS で自動化されるので、IoT デバイスのデプロイにかかる時間を短縮し、手動によるエラーのリスクを軽減できます。

デバイス プロビジョニング サービスのしくみ

次の図は、DPS を使用してデバイスをプロビジョニングする処理の背後でどのような処理が行われているかについて説明しています。

デバイス、Device Provisioning Service、IoT Hubがどのように連携しているかを示す図。

デバイス プロビジョニング フローが開始する前に、準備する手動の手順が 2 つあります。

  • デバイス側では、デバイスの製造元が、認証資格情報と割り当てられた Device Provisioning Service ID とエンドポイントを使用してデバイスを事前構成することで、プロビジョニング用にデバイスを準備します。
  • クラウド側では、お客様またはデバイスの製造元が、有効なデバイスを識別し、それらのプロビジョニング方法を定義する登録を使用して Device Provisioning Service インスタンスを準備します。

デバイスとクラウドをプロビジョニング用に設定すると、デバイスの電源が初めてオンになると、次の手順が自動的に開始されます。

  1. デバイスの電源が初めてオンになり、DPS エンドポイントに接続され、その認証資格情報が表示されます。
  2. DPS インスタンスにより、デバイスの ID が登録リストと照合されます。 デバイス ID が検証されると、DPS によってデバイスが IoT ハブに割り当てられ、ハブに登録されます。
  3. DPS インスタンスは、割り当てられたハブからデバイス ID と登録情報を受け取り、その情報をデバイスに返します。
  4. デバイスは、その登録情報を使用して、割り当てられた IoT ハブに直接接続し、認証します。
  5. デバイスと IoT ハブが直接通信を開始します。 デバイスを再プロビジョニングする必要がない限り、DPS インスタンスは中継局としての役割を果たしません。

Device Provisioning Service を使用する場合

デバイスを IoT Hub に接続し、構成する際に DPS が最適な選択肢になるプロビジョニング シナリオは多数あります。次に例を示します。

  • 工場 (初期設定) で IoT Hub 接続情報をハードコーディングすることなく、ゼロタッチで単一の IoT ソリューションにプロビジョニングできます
  • 複数のハブ間でデバイスの負荷を分散します
  • 販売トランザクション データに基づいて、デバイスをデバイス所有者の IoT ソリューションに接続します (マルチテナント)
  • ユースケースに応じて特定の IoT ソリューションにデバイスを接続します (ソリューションの分離)
  • 最低限の待機時間でデバイスを IoT ハブに接続します (geo シャーディング)
  • デバイスの変化に基づいて再プロビジョニングします
  • デバイスが IoT Hub に接続するときに使用するキーをローリングします (接続に X.509 証明書を使用しない場合)

DPS では、入れ子になった IoT Edge デバイス (親子階層) のプロビジョニングはサポートされていません。

プロビジョニング プロセス

DPS を使用したデバイス プロビジョニングの前に、次の 2 つの手順が実行されます。

  • 製造手順では、工場でデバイスが作成され、準備されます。
  • クラウドのセットアップ手順では、Device Provisioning Service が自動プロビジョニング用に構成されます。

これらの手順はどちらも、既存の製造プロセスとデプロイ プロセスに組み込むことができます。 デバイスで接続情報を取得するために手動作業が必要な一部のデプロイ プロセスが、DPS によってさらに簡易化されます。

製造手順

この手順は、製造ラインで実行されるすべての作業です。 この手順に関連する役割には、シリコン デザイナー、シリコン製造元、インテグレーター、デバイスのエンド 製造元などがあります。 この手順は、ハードウェア自体の作成に関係しています。

DPS によって製造プロセスに新しい手順が加わることはありませんが、初期ソフトウェアと (理想的には) ハードウェア セキュリティ モジュール (HSM) をデバイスにインストールする既存の手順に関係しています。 この手順でデバイス ID を作成する代わりに、プロビジョニング サービス情報を使用してデバイスがプログラムされ、プロビジョニング サービスを呼び出して、オンになったときに接続情報/IoT ソリューションの割り当てを取得できます。

また、この手順では、製造元がデバイスのデプロイ担当者やオペレーターに識別キー情報を提供します。 この情報提供は、デバイスのデプロイ担当者やオペレーターによって指定された署名証明書から生成された X.509 証明書がすべてのデバイスにインストールされていることを確認するだけの単純な処理であることもあれば、各 TPM デバイスから TPM 保証キーの公開部分を抽出するほどの複雑な処理であることもあります。 多くのシリコン メーカーがこれらのサービスを提供しています。

クラウドのセットアップ手順

これは、適切な自動プロビジョニングのためにクラウドを構成する手順です。 通常、クラウドのセットアップ手順には 2 種類のユーザーが関係します。初期段階でデバイスをどのようにセットアップする必要があるかを把握しているユーザー (デバイス オペレーター) と、デバイスを IoT ハブ間で分割する方法を把握しているユーザー (ソリューション オペレーター) です。

プロビジョニング サービスの 1 回限りの初期セットアップがあり、ソリューション オペレーターが通常処理します。 プロビジョニング サービスを構成した後は、ユース ケースが変わらない限り、構成を変更する必要はありません。

自動プロビジョニング用にサービスを構成した後は、デバイスの登録を準備する必要があります。 この手順は、デバイスの必要な構成を認識し、プロビジョニング サービスがデバイスの ID を正しく証明できることを確認するデバイス オペレーターによって行われます。 デバイス オペレーターは、製造元から識別キー情報を取得し、登録一覧に追加します。 以降、新しいエントリが追加されたときや、デバイスに関する最新情報があり、既存のエントリが更新されたときに、登録が更新される可能性があります。

登録とプロビジョニング

プロビジョニングとは、この用語が使用される業界によって意味する処理が異なります。 IoT デバイスをクラウド ソリューションにプロビジョニングするという文脈では、プロビジョニングには 2 つのプロセスがあります。

  • 最初のプロセスでは、デバイスを登録することで、デバイスと IoT ソリューション間の初期接続を確立します。
  • 2 つ目のプロセスでは、登録先のソリューションが持つ特定の要件に基づいて、デバイスに適切な構成を適用します。

これらの手順の両方が完了すると、デバイスが完全にプロビジョニングされていると言えます。

Device Provisioning Service の機能

DPS は多くの機能を備えているため、デバイスのプロビジョニングに最適です。

  • 安全な構成証明。X.509 と TPM ベースの ID の両方をサポートしています。
  • 登録リスト には、ある時点で登録される可能性があるデバイスまたはデバイスのグループの完全なレコードが含まれています。 この登録リストには、デバイスが登録されたときのデバイスの望ましい構成に関する情報が含まれており、いつでも更新することができます。
  • 複数の割り当てポリシー。実際のシナリオに合わせて DPS がデバイスを IoT ハブに割り当てる方法を制御できます。最短待ち時間、均等に重み付けされた分布 (既定)、静的な構成。 カスタム割り当てでは、既定の 1 つを使用する代わりに、Azure Functions でホストされている Webhook を使用して独自の割り当てポリシーを実装できます。
  • 監視および診断ログ。すべての機能が正常に動作していることを確認できます。
  • マルチハブのサポート。DPS でデバイスを複数の IoT ハブに割り当てることができます。 DPS は、複数の Azure サブスクリプションにわたってハブと対話できます。
  • リージョン間のサポート。DPS でデバイスを他のリージョンの IoT ハブに割り当てることができます。
  • 保存データの暗号化。DPS 内のデータは、利用可能な最強のブロック暗号の 1 つである 256 ビット AES 暗号化を使って透過的に暗号化および暗号化解除され、FIPS 140-2 に準拠しています。

デバイス プロビジョニングに関連する概念と機能の詳細については、DPS の用語に関する記事、および同じセクション内の他の概念に関する記事をご確認ください。

クロスプラットフォームのサポート

DPS は、他のあらゆる Azure IoT サービスとまったく同じように、さまざまなオペレーティング システムとクロスプラットフォームで動作します。 Azure ではさまざまな言語でオープン ソース SDK が提供されており、容易にデバイスを接続して、サービスを管理できます。

DPS は、次のプロトコルを使ったデバイスの接続をサポートしています。

  • HTTPS*
  • AMQP
  • Web ソケット経由の AMQP
  • MQTT
  • WebSocket 経由の MQTT

*DPS では、サービス操作の HTTPS 接続のみがサポートされます。

リージョン

DPS は多数のリージョンで利用できます。 すべてのサービスでサポートされているリージョンの一覧については、 Azure リージョンを参照してください。 Device Provisioning Service の可用性は、 Azure の状態 ページで確認できます。

回復性と信頼性を確保するために、 可用性ゾーンをサポートするいずれかのリージョンにデプロイすることをお勧めします。

データ所在地に関する考慮事項

デバイス プロビジョニング サービスでは、顧客データが格納されます。 既定では、ディザスター リカバリー シナリオをサポートするために、顧客データがセカンダリ リージョンにレプリケートされます。 東南アジアとブラジル南部のデプロイの場合、ディザスター リカバリーを無効にすることで、お客様はそのリージョン内でのみデータを保持することを選択できます。 詳細については、Azure でのリージョン間レプリケーションに関するページを参照してください。

Microsoft System Center Data Protection Manager は、すべてのプロビジョニング サービス インスタンスに対して同じデバイス プロビジョニング エンドポイントを使用し、使用可能な最も近いサービス エンドポイントへのトラフィック負荷分散を実行します。 このため、認証シークレットは、DPS インスタンスが最初に作成されたリージョンの外部に一時的に転送される可能性があります。 ただし、デバイスが接続されると、デバイス データは DPS インスタンスの元のリージョンに直接送られます。 データが元のリージョンや セカンダリーリージョンから離れないようにするために、プライベート エンドポイントを使用します。 プライベート エンドポイントを設定する方法については、「仮想ネットワーク向けの DPS サポート」を参照してください。

クォータと制限

各 Azure サブスクリプションには、IoT ソリューションのスコープに影響する可能性がある既定のクォータ制限が設定されています。 現在の制限は、サブスクリプションあたり 10 個のデバイス プロビジョニング サービス インスタンスです。

クォータ制限の詳細については、 Azure サブスクリプション サービスの制限に関するページを参照してください。

次の表は、Azure IoT Hub Device Provisioning Service のリソースに適用される制限の一覧です。

リソース 制限
Azure サブスクリプションあたりのデバイス プロビジョニング サービスの最大数 10
登録の最大数 1,000,000
個々の加入の最大数 1,000,000
加入グループの最大数 (X.509 証明書) 100
加入グループの最大数 (対称キー) 100
CA の最大数 二十五
リンクされた IoT Hub の最大数 50
メッセージの最大サイズ 96 KB

ヒント

対称キー登録グループのハード制限がブロックの問題である場合は、回避策として個々の登録を使用します。

Device Provisioning Service には、次のレートの制限があります。

料金 ユニットあたりの値
操作 1,000/分/サービス
デバイス登録 1,000/分/サービス
デバイスのポーリング操作 5/10 秒/デバイス

課金されるサービス操作と価格

DPS での各 API 呼び出しは、サービス API またはデバイス登録 API のどちらからでも、1 回の 操作として課金されます。

次の表は、各 DPS API 操作の現在の課金対象の状態を示しています。 DPS の価格の詳細については、Azure IoT Hub の価格 ページ上部の [価格表] を選択し、 [IoT Hub Device Provisioning Service] タブを選択して、お使いのサービスの通貨と地域を選択します。

API(アプリケーション・プログラミング・インターフェース) 操作 課金対象?
DPS デバイス API - ランタイムの登録 デバイス登録状態の参照 いいえ
操作の状態の検索 いいえ
デバイスの登録 はい
DPS サービス API - デバイス登録の状態 全て はい
DPS サービス API - 登録グループ 全て はい
DPS サービス API - 個別登録 全て はい
DPS 証明書 API 全て いいえ
IoT DPS リソース API 全て いいえ

DPS は Azure IoT Hub を使用してデバイス プロビジョニングを自動化しています。 詳細については、「IoT Hub のドキュメント」を参照してください。

IoT Central アプリケーションでは、内部 DPS インスタンスを使用してデバイス接続を管理します。 詳細については、「デバイスが IoT Central に接続する方法」を参照してください。

次のステップ

Azure portal で IoT Hub Device Provisioning Service を設定する

シミュレートされたデバイスの作成とプロビジョニング