Microsoft Entra ID を使って Azure IoT Hub Device Provisioning Service (DPS) へのアクセスを制御する (プレビュー)
Microsoft Entra ID を使用して、デバイス ID の作成やダイレクト メソッドの呼び出しといった、Azure IoT Hub Device Provisioning Service (DPS) API に対する要求を認証できます。 Azure のロールベースのアクセス制御 (Azure RBAC) を使用して、これらの同じサービス API を認可することもできます。 これらのテクノロジを一緒に使用すると、Azure IoT Hub Device Provisioning Service (DPS) API にアクセスするためのアクセス許可を Microsoft Entra のセキュリティ プリンシパルに付与できます。 このセキュリティ プリンシパルは、ユーザー、グループ、またはアプリケーション サービス プリンシパルの場合があります。
Microsoft Entra ID を使用してアクセスを認証し、Azure RBAC を使用してアクセス許可を制御することで、セキュリティ トークンよりも優れたセキュリティと使いやすさを実現できます。 セキュリティ トークンに固有の潜在的なセキュリティ問題を最小限に抑えるために、可能な限り、Microsoft Entra ID と共に Azure IoT Hub Device Provisioning Service (DPS) を使用することをお勧めします。
Note
Azure IoT Hub Device Provisioning Service (DPS) デバイス API では、Microsoft Entra ID を使った認証はサポートされていません (デバイスの登録やデバイス登録状態のルックアップなど)。 対称キー、X.509、または TPM を使って、Azure IoT Hub Device Provisioning Service (DPS) に対してデバイスを認証します。
認証と権限承認
Microsoft Entra セキュリティ プリンシパルで Azure IoT Hub Device Provisioning Service (DPS) API へのアクセスを要求すると、プリンシパルの ID が最初に "認証" されます。 認証では、実行時にその要求に OAuth 2.0 アクセス トークンが含まれている必要があります。 トークンを要求する場合のリソース名は https://azure-devices-provisioning.net
です。 アプリケーションは、Azure VM、Azure Functions アプリ、Azure App Service アプリなどの Azure リソース内で実行される場合、マネージド ID として表すことができます。
Microsoft Entra プリンシパルが認証されたら、次の手順は "認可" です。 この手順で、Azure IoT Hub Device Provisioning Service (DPS) は Microsoft Entra ロールの割り当てサービスを使って、プリンシパルが持つアクセス許可を判断します。 プリンシパルのアクセス許可が要求されたリソースまたは API と一致する場合、Azure IoT Hub Device Provisioning Service (DPS) はその要求を認可します。 そのため、このステップでは、セキュリティ プリンシパルに 1 つ以上の Azure ロールを割り当てる必要があります。 Azure IoT Hub Device Provisioning Service (DPS) には、共通のアクセス許可グループがある組み込みロールがいくつか用意されています。
Azure RBAC ロールの割り当てを使って Azure IoT Hub Device Provisioning Service (DPS) へのアクセスを管理する
Microsoft Entra ID と RBAC を使用する場合、Azure IoT Hub Device Provisioning Service (DPS) では、API を要求するプリンシパルに、認可のために適切なレベルのアクセス許可があることが求められます。 プリンシパルにアクセス許可を付与するには、ロールの割り当てを付与します。
- プリンシパルがユーザー、グループ、またはアプリケーション サービス プリンシパルの場合、「Azure portal を使用して Azure ロールを割り当てる」のガイドラインに従ってください。
- プリンシパルがマネージド ID の場合は、「Azure portal を使用してリソースにマネージド ID アクセスを割り当てる」のガイダンスに従ってください。
特権を最小限にするには、常に、可能な限り最も低いリソースのスコープ (おそらく、Azure IoT Hub Device Provisioning Service (DPS) のスコープ) で適切なロールを割り当てます。
Azure IoT Hub Device Provisioning Service (DPS) には、Microsoft Entra ID と RBAC を使って DPS API へのアクセスを認可するために、次の Azure 組み込みロールが用意されています。
Role | 説明 |
---|---|
Device Provisioning Service データ共同作成者 | Device Provisioning Service データ プレーン操作へのフル アクセスを許可します。 |
Device Provisioning Service データ閲覧者 | Device Provisioning Service データ プレーン プロパティへのフル読み取りアクセスを許可します。 |
また、必要なアクセス許可を組み合わせて、Azure IoT Hub Device Provisioning Service (DPS) で使うカスタム ロールを定義することもできます。 詳細については、Azure のロールベースのアクセス制御のためのカスタム ロールを作成するに関するページを参照してください。
リソースのスコープ
セキュリティ プリンシパルに Azure RBAC ロールを割り当てる前に、セキュリティ プリンシパルに必要なアクセスのスコープを決定します。 常にできるだけ狭いスコープのみを付与するのが最善の方法です。 より広い範囲で定義されている Azure RBAC ロールは、その下のリソースによって継承されます。
次の一覧で、IoT Hub へのアクセスのスコープとして指定できるレベルを、最も狭いスコープから順に示します。
- Azure IoT Hub Device Provisioning Service (DPS)。 このスコープでは、ロールの割り当ては Azure IoT Hub Device Provisioning Service (DPS) に適用されます。 登録グループや個人登録のような、より小さなスコープでのロールの割り当てはサポートされていません。
- リソース グループです。 このスコープでは、ロールの割り当てがリソース グループ内のすべての IoT ハブに適用されます。
- サブスクリプション。 このスコープでは、ロールの割り当てがサブスクリプションにあるすべてのリソース グループ内のすべての IoT ハブに適用されます。
- 管理グループ。 このスコープでは、ロールの割り当てが、管理グループ内のすべてのサブスクリプションにあるすべてのリソース グループ内のすべての IoT ハブに適用されます。
Azure IoT Hub Device Provisioning Service (DPS) API のアクセス許可
次の表は、Azure IoT Hub Device Provisioning Service (DPS) の API 操作に使用できるアクセス許可について説明したものです。 クライアントで特定の操作を呼び出せるようにするには、クライアントの割り当て済み RBAC ロールで、その操作に十分なアクセス許可が提供されることを確認します。
RBAC アクション | 説明 |
---|---|
Microsoft.Devices/provisioningServices/attestationmechanism/details/action |
構成証明メカニズムの詳細を取得します |
Microsoft.Devices/provisioningServices/enrollmentGroups/read |
登録グループを読み取ります |
Microsoft.Devices/provisioningServices/enrollmentGroups/write |
登録グループを書き込みます |
Microsoft.Devices/provisioningServices/enrollmentGroups/delete |
登録グループを削除します |
Microsoft.Devices/provisioningServices/enrollments/read |
登録の読み取り |
Microsoft.Devices/provisioningServices/enrollments/write |
登録を書き込みます |
Microsoft.Devices/provisioningServices/enrollments/delete |
登録を削除します |
Microsoft.Devices/provisioningServices/registrationStates/read |
登録状態を読み取ります |
Microsoft.Devices/provisioningServices/registrationStates/delete |
登録状態を削除します |
Azure CLI 用 Azure IoT 拡張機能
Azure IoT Hub Device Provisioning Service (DPS) に対するコマンドのほとんどは、Microsoft Entra 認証をサポートしています。 key
または login
値を受け取る --auth-type
パラメーターを使用して、コマンドの実行に使用される認証の種類を制御できます。 key
値が既定値です。
--auth-type
の値がkey
である場合、CLI が Azure IoT Hub Device Provisioning Service (DPS) と対話するときに適切なポリシーが自動的に検出されます。--auth-type
の値がlogin
の場合、プリンシパルでログインした Azure CLI からのアクセス トークンがこの操作に使用されます。現在、次のコマンドは
--auth-type
をサポートしています。az iot dps enrollment
az iot dps enrollment-group
az iot dps registration
詳細については、Azure CLI 用の Azure IoT 拡張機能のリリース ページを参照してください。
SDK とサンプル
- Node.js Provisioning Service 用 Azure IoT SDK
- Azure IoT SDK for Java のプレビュー リリース
- • Microsoft Azure IoT SDK for .NET のプレビュー リリース
Azure portal からの Microsoft Entra ID アクセス
Note
Azure portal からの Microsoft Entra アクセスは、プレビュー段階である現在は使用できません。
次のステップ
- アプリケーションで Microsoft Entra ID を使用する利点の詳細については、Microsoft Entra ID との統合に関する記事を参照してください。
- Microsoft Entra ID からユーザーやサービス プリンシパルのアクセス トークンを要求する方法の詳細については、「Microsoft Entra ID の認証シナリオ」をご覧ください。