IoT Hub Device Provisioning Service (DPS) の用語

IoT Hub Device Provisioning Service (DPS) は、ゼロタッチでの大規模なデバイス プロビジョニングを可能にする、IoT Hub のヘルパー サービスです。 Device Provisioning Service を使用すると、セキュリティで保護されたスケーラブルな方法で何百万台ものデバイスをプロビジョニングできます。

デバイス プロビジョニングのプロセスには、2 つの部分があります。

  1. 最初の部分では、デバイスを登録することで、デバイスと IoT ソリューション間の初期接続を確立します。
  2. 2 番目の部分では、ソリューションの特定の要件に基づいて、デバイスに適切な構成を適用します。

両方のステップを完了すると、デバイスが完全にプロビジョニングされたことになります。 デバイス プロビジョニング サービスでは、デバイスにシームレスなプロビジョニング エクスペリエンスを提供するために、両方のステップを自動化しています。

この記事では、サービスの管理に適用されるプロビジョニングの概念に関する概要を説明します。 この記事は、デプロイのために準備されたデバイスを取得するクラウド セットアップ手順に関わるユーザーに最も役立ちます。

サービス操作エンドポイント

サービス操作エンドポイントは、サービス設定を管理し加入契約リストを保持するためのエンドポイントです。 このエンドポイントは、サービス管理者によってのみ使用されます。デバイスからは使用されません。

デバイス プロビジョニングのエンドポイント

デバイスのプロビジョニング エンドポイントは、すべてのデバイスがプロビジョニングに使用する単一のエンドポイントです。 URL はすべてのプロビジョニング サービス インスタンスで同じであるため、サプライ チェーンのシナリオで新しい接続情報を使用してデバイスを再フラッシュする必要はありません。 ID スコープは、テナントの分離を確認します。

リンクされた IoT Hub

デバイス プロビジョニング サービスでは、このサービスにリンクされた IoT Hub にのみデバイスをプロビジョニングできます。 IoT ハブを Device Provisioning Service のインスタンスにリンクすると、サービスは IoT ハブのデバイス レジストリに対する読み取り/書き込みアクセス許可を取得します。 このリンクにより、Device Provisioning Service でデバイス ID を登録し、デバイス ツインの初期構成を設定できます。 リンクされた IoT Hub は、任意の Azure リージョン内に置くことができます。 お使いのプロビジョニング サービスに他のサブスクリプションのハブをリンクすることもできます。

詳細については、「IoT ハブのリンクおよび管理方法」をご覧ください。

割り当てポリシー

割り当てポリシーは、Device Provisioning Service によって IoT ハブにデバイスが割り当てられる方法を決定するサービス レベルの設定です。 次の 4 つの割り当てポリシーがサポートされています。

  • Evenly weighted distribution\(均等に重み付けされた分散\): リンクされた各 IoT Hub にデバイスが同程度にプロビジョニングされます。 既定の設定です。 デバイスを 1 つの IoT ハブにのみプロビジョニングする場合は、この設定のままでかまいません。

  • Lowest latency\(最も短い待機時間\): デバイスに対する待機時間が最も短い IoT Hub にデバイスをプロビジョニングします。 複数の IoT Hub にリンクしていて、同様に最も短い待機時間になっている場合、プロビジョニング サービスはそれらのハブ全体のデバイスをハッシュします。

  • Static configuration via the enrollment list\(加入契約リストによる静的構成\): 加入契約リストの目的の IoT Hub の仕様が、サービス レベルの割り当てポリシーよりも優先されます。

  • カスタム (Azure 関数を使用): カスタム割り当てポリシーを使用すると、デバイスを IoT ハブに割り当てる方法をより細かく制御できます。 カスタム割り当てポリシーでは、Azure Function を使用して IoT ハブにデバイスを割り当てます。 Device Provisioning Service により、デバイスと登録に関するすべての関連情報をコードに提供する Azure 関数コードが呼び出されます。 関数コードが実行され、デバイスのプロビジョニングに使用する IoT ハブ情報が返されます。 詳細については、「カスタム割り当てポリシーについて」を参照してください。

詳細については、「割り当てポリシーの使用方法」を参照してください。

登録

登録とは、自動プロビジョニングで登録できるデバイスまたはデバイス グループのレコードのことです。 登録レコードには、次のようなデバイスまたはデバイス グループに関する情報が含まれています。

  • デバイスで使用される構成証明メカニズム
  • オプションの初期目的構成
  • 目的の IoT ハブ
  • 目的のデバイス ID

Device Provisioning Service によってサポートされている登録の種類には、個々の登録と登録グループの 2 種類があります。

加入グループ

加入グループは、特定の構成証明メカニズムを共有するデバイスのグループです。 加入グループは、X.509 証明書または対称キーの構成証明をサポートします。

登録グループの名前と、デバイスによって提示される登録 ID は、英数字と特殊文字 (- . _ :) で構成される、大文字と小文字の区別がない文字列である必要があります。 最後の文字は、英数字またはダッシュ (-) である必要があります。 加入グループ名の最大長は 128 文字です。 対称キーの加入グループでは、デバイスによって提示される登録 ID の長さは最大 128 文字です。 ただし、X.509 加入グループでは、X.509 証明書のサブジェクトの共通名の最大長が 64 文字であるため、登録 ID は 64 文字に制限されます。

X.509 加入グループ内のデバイスによって、同じルートまたは中間証明機関 (CA) によって署名された X.509 証明書が提示されます。 各デバイスのエンド エンティティ (リーフ) 証明書のサブジェクトの共通名 (CN) が、そのデバイスの登録 ID になります。 対称キー加入グループ内のデバイスによって、グループ対称キーから派生した SAS トークンが提示されます。

加入グループ内のデバイスの場合、登録 ID は、IoT Hub に登録されているデバイス ID としても使用されます。

ヒント

必要な初期構成を共有するデバイスが多数ある場合や、デバイスがすべて同じテナントに属する予定の場合は、加入グループを使用することをお勧めします。

個別加入

個別加入は、登録する単一のデバイスのエントリです。 個々の登録では、構成証明メカニズムとして X.509 リーフ証明書または SAS トークン (物理 TPM または仮想 TPM から) を使用できます。

個々の登録における登録 ID は、英数字と特殊文字 (- . _ :) で構成される、大文字と小文字の区別がない文字列です。 最後の文字は、英数字またはダッシュ (-) である必要があります。 DPS では、最大長 128 文字の登録 ID がサポートされます。

X.509 での個々の登録については、証明書のサブジェクト共通名 (CN) は登録 ID と一致する必要があるため、共通名は登録 ID 文字列の形式に従う必要があります。 サブジェクトの共通名の最大長が 64 文字であるため、X.509 加入の登録 ID は 64 文字に制限されます。

個別加入では、必要な IoT ハブ デバイス ID が加入エントリに指定されている場合があります。 指定されていない場合、登録 ID は、Iot Hub に登録されているデバイス ID となります。

ヒント

固有の初期構成を必要とするデバイスや、TPM 構成証明を介した SAS トークンを使用してのみ認証できるデバイスには、個別登録を使用することをお勧めします。

構成証明メカニズム

構成証明メカニズムは、デバイスの ID の確認に使用される方法です。 構成証明メカニズムを登録エントリに対して構成すると、登録時にデバイスの ID の確認に使用する方法がプロビジョニング サービスに通知されます。

Note

IoT Hub は、そのサービスでの同様の概念として "認証スキーム" を使用します。

デバイス プロビジョニング サービスは、以下の形式の構成証明をサポートします。

  • 標準の X.509 証明書の認証フローに基づくX.509 証明書。 詳細については、X.509 の構成証明に関する記事をご覧ください。
  • nonce チャレンジに基づくトラステッド プラットフォーム モジュール (TPM)。キーの TPM 標準を使用し、署名された Shared Access Signature (SAS) トークンを提示します。 このトークンでは、デバイス上の物理 TPM は必須ではありませんが、TPM 仕様ごとに保証キーを使用して証明するために、サービスからは物理 TPM が期待されます。詳細については、「TPM の構成証明」を参照してください。
  • 共有アクセス署名 (SAS) SAS トークンに基づく対称キー。これにはハッシュの署名と埋め込みの有効期限が含まれています。 詳細については、「対称キーの構成証明」を参照してください。

ハードウェア セキュリティ モジュール

ハードウェア セキュリティ モジュール (HSM) は、デバイス シークレットの安全なハードウェア ベースのストレージに使用されます。これは、最も安全な形式のシークレット ストレージです。 X.509 証明書と SAS トークンの両方を HSM に格納できます。

ヒント

デバイス上に安全にシークレットを保管するために、デバイスに HSM を使用することを強くお勧めします。

デバイス シークレットもソフトウェア (メモリ) に保存できますが、これは HSM よりも安全性の低い形式のストレージです。

ID スコープ

ID スコープは、作成時に Device Provisioning Service に割り当てられ、特定のプロビジョニング サービスを一意に識別するために使用されます。 サービスによって ID スコープが生成され、この ID スコープが不変であるため、一意性が保証されます。 実行時間の長いデプロイ操作や、統合と取得のシナリオでは、一意性が重要です。

登録レコード

登録レコードは、Device Provisioning Service 経由で IoT Hub に正常に登録/プロビジョニングされるデバイスのレコードです。 登録レコードは自動的に作成されます。また、削除はできますが、更新はできません。

登録 ID

登録 ID は、Device Provisioning Service のデバイス登録を一意に識別するために使用されます。 登録 ID は、プロビジョニング サービスの ID スコープ内で一意である必要があります。 各デバイスに登録 ID が必要です。 登録 ID は、英数字と特殊文字 - . _ : で構成される、大文字と小文字が区別されない文字列です。 最後の文字は、英数字またはダッシュ (-) である必要があります。 DPS では、最大長 128 文字の登録 ID がサポートされます。

  • TPM 構成証明を使う場合、登録 ID は TPM 自体によって提供されます。
  • X.509 ベースの構成証明を使う場合、登録 ID は、デバイス証明書のサブジェクトの共通名 (CN) として設定されます。 このため、共通名は、登録 ID 文字列の形式に従う必要があります。 ただし、X.509 証明書のサブジェクトの共通名の最大長は 64 文字であるため、登録 ID は 64 文字に制限されます。

デバイス ID

デバイス ID は、IoT Hub に表示される ID です。 登録エントリに目的のデバイス ID を設定できますが、必須ではありません。 希望するデバイス ID の設定は、個別の登録でのみサポートされています。 加入契約リストに目的のデバイス ID が指定されていない場合、デバイスの登録時の登録 ID がデバイス ID として使用されます。 詳細については、IoT Hub のデバイス ID に関する記事をご覧ください。

操作

操作は、デバイス プロビジョニング サービスの課金単位です。 1 つの操作は、サービスに対する 1 つの手順の正常な完了です。 操作には、デバイスの登録や再登録および、登録リスト エントリの追加や更新といったサービス側の変更が含まれます。