Azure Digital Twins の失敗したサービス要求のトラブルシューティング: エラー 403 (許可されていません)
この記事では、Azure Digital Twins へのサービス要求から 403 エラーを受信した場合の原因と解決手順について説明します。 この情報は、Azure Digital Twins サービスに固有のものです。
現象
このエラーは、Azure Digital Twins での認証を必要とするさまざまな種類のサービス要求で発生する可能性があります。 影響としては、API 要求が失敗して 403 (Forbidden)
のエラーの状態が返されます。
原因
原因 #1
多くの場合、Azure Digital Twins でこのエラーを受信することは、サービスに対して Azure ロールベースのアクセス制御 (Azure RBAC) のアクセス許可が正しく設定されていないことを示しています。 Azure Digital Twins インスタンスの多くのアクションを行うには、管理しようとしているインスタンスに対して、"Azure Digital Twins データ所有者" ロールを保持している必要があります。
原因 #2
アプリ登録で認証を行っている Azure Digital Twins と通信するためにクライアント アプリを使用している場合は、Azure Digital Twins サービスに対するアクセス許可がアプリ登録で設定されていないという理由で、このエラーが発生することがあります。
アプリ登録には、Azure Digital Twins API に対するアクセス許可が構成されている必要があります。 その後、アプリ登録に対してクライアント アプリが認証されると、そのアプリ登録に構成されたアクセス許可が付与されます。
ソリューション
解決策 #1
1 つ目の解決策として、管理しようとしているインスタンスに対して、Azure ユーザーが Azure Digital Twins データ所有者ロールを保持していることを確認します。 このロールがない場合は、設定します。
このロールは以下とは異なります
- 以前、プレビュー期間中に付けられていたこのロールの名前の Azure Digital Twins 所有者 (プレビュー)。 この場合、ロールは同じですが、名前が変更されています。
- Azure サブスクリプション全体に対する "所有者" ロール。 "Azure Digital Twins データ所有者" は、Azure Digital Twins 内のロールであり、この個別の Azure Digital Twins インスタンスにスコープが設定されています。
- Azure Digital Twins での "所有者" ロール。 これらは 2 つの個別の Azure Digital Twins 管理ロールであり、"Azure Digital Twins データ所有者" は管理に使用する必要があるロールです。
現在の設定を確認する
ロールの割り当てを正常に設定したことを確認するための 1 つの方法として、Azure portal で Azure Digital Twins インスタンスのロールの割り当てを表示します。 Azure portal で Azure Digital Twins インスタンスに移動します。 そこに移動するには、Azure Digital Twins インスタンスのページで検索するか、ポータルの検索バーでその名前を検索します。
次に、[アクセス制御 (IAM)] > [ロールの割り当て] で、それに割り当てられているすべてのロールを表示します。 ロールの割り当てが一覧に表示されます。
問題を修正する
このロールが割り当てられていない場合は、Azure サブスクリプション内で所有者ロールを保持するユーザーが次のコマンドを実行して、Azure ユーザーに Azure Digital Twins インスタンス上での Azure Digital Twins データ所有者ロールを付与します。
サブスクリプション上でご自身が所有者になっている場合は、このコマンドを自分で実行できます。 そうでない場合は、所有者に連絡して、このコマンドを代わりに実行してもらいます。
az dt role-assignment create --dt-name <your-Azure-Digital-Twins-instance> --assignee "<your-Azure-AD-email>" --role "Azure Digital Twins Data Owner"
このロールの要件と割り当てプロセスについて詳しくは、「ユーザーのアクセス許可を設定する」をご覧ください。
このロールが既に割り当てられており、かつクライアント アプリを認証するために Microsoft Entra アプリ登録を使用しており、この解決策で 403 の問題が解決されなかった場合は、次の解決策に進むことができます。
解決策 #2
クライアント アプリを認証するために Microsoft Entra アプリ登録を使用している場合は、2 つ目の解決策として、アプリ登録に Azure Digital Twins サービスに対するアクセス許可が構成されていることを確認します。 構成されていない場合は、設定を行います。
現在の設定を確認する
アクセス許可が正しく構成されたかどうかを確認するには、Azure portal の Microsoft Entra アプリ登録の概要ページに移動します。 ポータルの検索バーで "アプリの登録" を検索することで、このページに移動できます。
[すべてのアプリケーション] タブに切り替えると、サブスクリプションで作成されたすべてのアプリ登録が表示されます。
作成したアプリ登録がこの一覧に表示されます。 それを選択すると、その詳細が開かれます。
最初に、Azure Digital Twins のアクセス許可の設定が登録時に正しく設定されたことを確認します。メニュー バーから [マニフェスト] を選択して、アプリ登録のマニフェスト コードを表示します。 コード ウィンドウの一番下までスクロールし、requiredResourceAccess
の下のこれらのフィールドを探します。 値は、次のスクリーンショットの値と一致している必要があります。
次に、メニュー バーから [API のアクセス許可] を選択して、このアプリ登録に Azure Digital Twins に対する読み取り/書き込みアクセス許可が含まれていることを確認します。 次のようなエントリが表示されます。
問題を修正する
これが説明とは異なる表示になっている場合は、Azure Digital Twins にアクセスできるアプリの登録の作成に関する記事で説明されているアプリ登録の設定方法に関する手順のようにします。
次のステップ
新しい Azure Digital Twins インスタンスを作成して認証するための設定手順を確認してください。
Azure Digital Twins のセキュリティとアクセス許可の詳細を確認します。