IoT Hub Device Provisioning Service (DPS) は、IoT Hub へのゼロタッチ デバイス プロビジョニングを可能にする IoT Hub のヘルパー サービスです。 Device Provisioning Service を使用すると、セキュリティで保護されたスケーラブルな方法で何百万ものデバイスをプロビジョニングできます。
デバイスのプロビジョニングは、2 つの部分で構成されるプロセスです。
- 最初の部分では、デバイスを登録することで、デバイスと IoT ソリューションの間の初期接続 を 確立します。
- 2 番目の部分では、ソリューションの特定の要件に基づいてデバイスに適切な 構成 を適用します。
両方の手順が完了すると、デバイスが完全 にプロビジョニングされます。 Device Provisioning Service では、両方の手順を自動化して、デバイスにシームレスなプロビジョニング エクスペリエンスを提供します。
この記事では、 サービスの管理に適用できるプロビジョニングの概念の概要について説明します。 この記事は、デバイスをデプロイする準備をする クラウドセットアップ手順 に関与するペルソナに最も関連しています。
サービス操作エンドポイント
サービス操作エンドポイントは、サービス設定を管理し、登録リストを維持するためのエンドポイントです。 このエンドポイントは、サービス管理者のみが使用します。デバイスでは使用されません。
デバイス プロビジョニング エンドポイント
デバイス プロビジョニング エンドポイントは、デバイスがプロビジョニングに使用するエンドポイントです。 すべての DPS インスタンスは同じグローバル エンドポイント ホスト名 (global.azure-devices-provisioning.net) を使用しますが、各デバイスは、プロビジョニング プロセス中に特定の DPS インスタンスを識別する一意の ID スコープ も提供する必要があります。 つまり、異なる DPS インスタンスにプロビジョニングするデバイスは、異なる ID スコープ値を使用するため、複数のプロビジョニング サービスを含むシナリオ (100 万を超えるデバイスを含む展開など) で異なる DPS インスタンス間でデバイスを移動するときに、デバイスの構成またはファームウェアの更新が必要になります。
リンクされた IoT ハブ
Device Provisioning Service は、デバイスにリンクされている IoT ハブにのみデバイスをプロビジョニングできます。 IoT ハブを Device Provisioning Service のインスタンスにリンクすると、サービスは IoT ハブのデバイス レジストリに対する読み取り/書き込みアクセス許可を付与します。 このリンクを使用すると、Device Provisioning Service でデバイス ID を登録し、デバイス ツインで初期構成を設定できます。 リンクされた IoT ハブは、任意の Azure リージョンに存在する可能性があります。 他のサブスクリプションのハブをプロビジョニング サービスにリンクできます。
詳細については、「IoT ハブをリンクおよび管理する方法」を参照してください。
割り当てポリシー
割り当てポリシーは、Device Provisioning Service が IoT ハブにデバイスを割り当てる方法を決定するサービス レベルの設定です。 サポートされている割り当てポリシーは 4 つあります。
均等に重み付けされた分散: リンクされた IoT ハブには、デバイスがプロビジョニングされている可能性が高くなります。 既定の設定。 デバイスを 1 つの IoT ハブのみにプロビジョニングする場合は、この設定を維持できます。
待機時間が最も短い: デバイスは、デバイスへの待機時間が最も短い IoT ハブにプロビジョニングされます。 複数のリンクされた IoT ハブが同じ最短待機時間を提供する場合、プロビジョニング サービスはそれらのハブ間でデバイスをハッシュします
登録リストを使用した静的構成: 登録リスト内の目的の IoT ハブの指定が、サービス レベルの割り当てポリシーよりも優先されます。
カスタム (Azure 関数の使用): カスタム割り当てポリシーを使用すると、デバイスを IoT ハブに割り当てる方法をより詳細に制御できます。 カスタム割り当てポリシーでは、Azure 関数を使用して IoT ハブにデバイスを割り当てます。 デバイス プロビジョニング サービスは、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 としても使用されます。
ヒント
必要な初期構成を共有する多数のデバイス、またはすべてのデバイスが同じテナントに移動する場合は、登録グループを使用することをお勧めします。
個人登録
個別登録は、1つのデバイスの登録記録です。 個々の登録では、構成証明メカニズムとして 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 を確認するときに使用する方法をプロビジョニング サービスに指示します。
注
IoT Hub では、そのサービスの同様の概念に対して "認証スキーム" が使用されます。
Device Provisioning Service では、次の認証方法がサポートされています。
- 標準の X.509 証明書認証フローに基づく X.509 証明書。 詳細については、 X.509 構成証明を参照してください。
- nonce チャレンジに基づくトラステッド プラットフォーム モジュール (TPM)。キーの TPM 標準を使用し、署名された Shared Access Signature (SAS) トークンを提示します。 これにはデバイス上の物理 TPM は必要ありませんが、サービスは TPM 仕様に従って保証キーを使用して構成証明を行う必要があります。詳細については、「 TPM 構成証明」を参照してください。
- Shared Access Signature (SAS) SAS トークンに基づく対称キー。ハッシュ署名と埋め込み有効期限が含まれます。 詳細については、「 対称キーの構成証明」を参照してください。
ハードウェア セキュリティ モジュール
ハードウェア セキュリティ モジュール (HSM) は、デバイス シークレットのセキュリティで保護されたハードウェア ベースのストレージに使用され、最も安全な形式のシークレット ストレージです。 X.509 証明書と SAS トークンの両方を HSM に格納できます。
ヒント
デバイスで HSM を使用して、デバイスにシークレットを安全に格納することを強くお勧めします。
デバイス シークレットはソフトウェア (メモリ) に格納することもできますが、HSM よりも安全性の低い形式のストレージです。
ID 範囲
ID スコープは、作成時に Device Provisioning Service に割り当てられ、特定のプロビジョニング サービスを一意に識別するために使用されます。 ID スコープはサービスによって生成され、不変であるため、一意性が保証されます。 ID スコープの一意性は、実行時間の長いデプロイ操作と合併と取得のシナリオで重要です。
登録レコード
登録レコードは、デバイス プロビジョニング サービスを介して IoT Hub に正常に登録/プロビジョニングされたデバイスのレコードです。 登録レコードは自動的に作成されます。削除することはできますが、更新することはできません。
登録 ID
登録 ID は、Device Provisioning Service とのデバイス登録を一意に識別するために使用されます。 登録 ID は、プロビジョニング サービス ID スコープで一意である必要があります。 各デバイスには登録 ID が必要です。 登録 ID は、英数字と特殊文字 ( - . _ :) の大文字と小文字を区別しない文字列です。 最後の文字は英数字またはダッシュ (-) である必要があります。 DPS では、最大 128 文字の登録 ID がサポートされます。
- TPM 構成証明では、登録 ID は TPM 自体によって提供されます。
- X.509 ベースの構成証明では、登録 ID はデバイス証明書のサブジェクト共通名 (CN) に設定されます。 このため、共通名は登録 ID 文字列形式に従う必要があります。 ただし、登録 ID は X.509 証明書のサブジェクト共通名の最大長であるため、64 文字に制限されています。
Device ID
デバイス ID は、IoT Hub に表示される ID です。 必要なデバイス ID は登録エントリで設定できますが、設定する必要はありません。 目的のデバイス ID の設定は、個々の登録でのみサポートされます。 登録リストに必要なデバイス ID が指定されていない場合、登録 ID はデバイスの登録時にデバイス ID として使用されます。 IoT Hub のデバイス ID の詳細を確認します。
オペレーション
操作は、Device Provisioning Service の課金単位です。 1 つの操作は、サービスに対する 1 つの命令の正常な完了です。 操作には、デバイスの登録と再登録のほか、登録リスト エントリの追加や更新などのサービス側の変更を含めることができます。