Azure ロールベースのアクセス制御 (RBAC) とデバイス更新
デバイス更新では、Azure RBAC を使用し、ユーザーとサービス API の認証と認可が提供されます。 他のユーザーや他のアプリケーションでデバイス更新を利用するには、ユーザーまたはアプリケーションにこのリソースへのアクセス権限を付与する必要があります。 また、更新プログラムを正常にデプロイしてデバイスを管理するには、Azure Device Update サービス プリンシパルのアクセス権を構成する必要もあります。
アクセス制御ロールの構成
Device Update でサポートされているロールは次のとおりです。
ロール名 | 説明 |
---|---|
デバイス更新管理者 | あらゆるデバイス更新リソースにアクセスできます |
デバイス更新閲覧者 | すべての更新プログラムとデプロイを表示できます |
デバイス更新コンテンツ管理者 | 更新プログラムを表示、インポート、削除できます |
デバイス更新コンテンツ閲覧者 | 更新プログラムを表示できます |
デバイス更新デプロイ管理者 | 更新プログラムのデバイスへのデプロイを管理できます |
デバイス更新デプロイ閲覧者 | 更新プログラムのデバイスへのデプロイを表示できます |
ロールを組み合わせることで、正しいレベルのアクセス権限を提供できます。 たとえば、デバイス更新コンテンツ管理者ロールを利用することで開発者は更新プログラムをインポートしたり、管理したりできますが、更新プログラムの進捗状況を表示するにはデバイス更新デプロイ閲覧者ロールが必要になります。 これとは逆に、デバイス更新閲覧者ロールが付与されているソリューション オペレーターはあらゆる更新プログラムを表示できますが、特定の更新プログラムをデバイスにデプロイするにはデバイス更新デプロイ管理者ロールを使用する必要があります。
IoT Hub で Azure Device Update サービス プリンシパルのアクセス権を構成する
Device Update for IoT Hub は、デプロイの IoT Hub と通信して、大規模に更新プログラムを管理します。 Device Update がこれを行えるようにするには、ユーザーは、IoT Hub のアクセス許可で Azure Device Update サービス プリンシパルに IoT Hub データ共同作成者アクセス権を設定する必要があります。
これらのアクセス許可が設定されていない場合、デプロイ、デバイスと更新の管理と診断アクションは許可されません。 ブロックされる操作には、次のものが含まれます。
- Create Deployment
- デプロイを取り消す
- デプロイを再試行する
- Get Device
アクセス許可は、IoT Hub Access Control (IAM) から設定できます。 「リンクされた IoT ハブで Azure Device Update サービス プリンシパルのアクセス権を構成する」を参照してください
デバイス更新 REST API に対する認証
デバイス更新では、REST API に対する認証に Microsoft Entra ID を使用します。 まず、クライアント アプリケーションを作成して構成する必要があります。
クライアント Microsoft Entra アプリを作成する
アプリケーションまたはサービスと Microsoft Entra IDを統合するには、まずクライアント アプリケーションを Microsoft Entra ID に登録します。 クライアント アプリケーションのセットアップは、必要な承認フロー (ユーザー、アプリケーション、またはマネージド ID) によって異なります。 たとえば、デバイス更新の呼び出し元が、以下であるとします。
- モバイルまたはデスクトップ アプリケーションの場合、リダイレクト URI として
https://login.microsoftonline.com/common/oauth2/nativeclient
を使用して [モバイル アプリケーションとデスクトップ アプリケーション] プラットフォームを追加します。 - 暗黙的なサインオンを使用する Web サイトの場合、[Web] プラットフォームを追加し、[アクセス トークン (暗黙的なフローに使用)] を選択します
Note
Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 暗黙的フロー認証では、アプリケーションで非常に高い信頼度が要求されるため、他のフローには存在しないリスクが伴います。 このフローは、マネージド ID など、より安全なフローが実行可能ではない場合にのみ使用してください。
権限の構成
次に、アプリにデバイスの更新を呼び出すためのアクセス許可を追加します。
- アプリの [API のアクセス許可] ページに移動し、[アクセス許可の追加] を選択します。
- [所属する組織で使用している API] に移動し、[Azure Device Update] を検索します。
- user_impersonation 権限を選択し、[アクセス許可の追加] を選択します。
認証トークンを要求する
デバイス更新 REST API には、要求ヘッダーに OAuth 2.0 認証トークンが必要です。 次のセクションでは、認証トークンを要求する方法の例をいくつか示します。
Azure CLI の使用
az login
az account get-access-token --resource 'https://api.adu.microsoft.com/'
PowerShell MSAL ライブラリの使用
MSAL.PS PowerShell モジュールは、.NET 用 Microsoft Authentication Library (MSAL .NET) のラッパーです。 これにより、さまざまな認証方法がサポートされます。
"ユーザーの資格情報を使用する":
$clientId = '<app_id>'
$tenantId = '<tenant_id>'
$authority = "https://login.microsoftonline.com/$tenantId/v2.0"
$Scope = 'https://api.adu.microsoft.com/user_impersonation'
Get-MsalToken -ClientId $clientId -TenantId $tenantId -Authority $authority -Scopes $Scope
"ユーザーの資格情報とデバイス コードを使用する":
$clientId = '<app_id>’
$tenantId = '<tenant_id>’
$authority = "https://login.microsoftonline.com/$tenantId/v2.0"
$Scope = 'https://api.adu.microsoft.com/user_impersonation'
Get-MsalToken -ClientId $clientId -TenantId $tenantId -Authority $authority -Scopes $Scope -Interactive -DeviceCode
"アプリの資格情報を使用する":
$clientId = '<app_id>’
$tenantId = '<tenant_id>’
$cert = '<client_certificate>'
$authority = "https://login.microsoftonline.com/$tenantId/v2.0"
$Scope = 'https://api.adu.microsoft.com/.default'
Get-MsalToken -ClientId $clientId -TenantId $tenantId -Authority $authority -Scopes $Scope -ClientCertificate $cert
マネージド ID のサポート
マネージド ID は、Microsoft Entra ID で自動的に管理される ID を安全な方法で Azure サービスに提供します。 これにより、開発者は、ID を指定して資格情報を管理する必要がなくなります。 Device Update for IoT Hub では、システム割り当てマネージド ID がサポートされます。
システム割り当てマネージド ID
Azure portal でシステム割り当てマネージド ID を追加したり削除したりするには:
- Azure portal にサインインし、目的の Device Update for IoT Hub アカウントに移動します。
- Device Update for IoT Hub ポータルで [ID] に移動する
- IoT Hub ポータルで [ID] に移動します。
- [システム割り当て] タブで [オン] を選択し、[保存] をクリックします。
Device Update for IoT Hub アカウントからシステム割り当てマネージド ID を削除するには、[オフ] を選択し、[保存] をクリックします。