Azure Resource Manager Workload Identity サービス接続のトラブルシューティングを行います。
Workload Identity サービス接続に関する一般的な問題のデバッグに関するヘルプを入手します。 必要に応じてサービス接続を手動で作成する方法も学習します。
トラブルシューティングのチェックリスト
Workload Identity サービス接続に関する問題のトラブルシューティングを行うには、次のチェックリストを使用してください。
- パイプライン タスクをレビューして、Workload Identity がサポートされていることを確認します。
- Workload Identity フェデレーションがテナントに対してアクティブであることを確認します。
- 発行者の URL とフェデレーションの件名が正確であることを確認してください。
次のセクションでは、問題とその解決方法について説明します。
パイプライン タスクを確認する
すべてのパイプライン タスクがワークロード ID をサポートしているわけではありません。 具体的には、ワークロード ID フェデレーションを使用するのは、タスクの Azure Resource Manager サービス接続プロパティのみです。 次の表に、Azure DevOps に含まれるタスクに対するワークロード ID フェデレーションのサポートを示します。 Marketplace からインストールされたタスクのサポートは、拡張機能の発行元に問い合わせてください。
タスク | ワークロード ID フェデレーションのサポート |
---|---|
AutomatedAnalysis@0 | 年 |
AzureAppServiceManage@0 | 年 |
AzureAppServiceSettings@1 | 年 |
AzureCLI@1 | 年 |
AzureCLI@2 | 年 |
AzureCloudPowerShellDeployment@1 | AzureCloudPowerShellDeployment@2 の使用 |
AzureCloudPowerShellDeployment@2 | 年 |
AzureContainerApps@0 | 年 |
AzureContainerApps@1 | 年 |
AzureFileCopy@1 | AzureFileCopy@6 の使用 |
AzureFileCopy@2 | AzureFileCopy@6 の使用 |
AzureFileCopy@3 | AzureFileCopy@6 の使用 |
AzureFileCopy@4 | AzureFileCopy@6 の使用 |
AzureFileCopy@5 | AzureFileCopy@6 の使用 |
AzureFileCopy@6 | 年 |
AzureFunctionApp@1 | 年 |
AzureFunctionApp@2 | 年 |
AzureFunctionAppContainer@1 | 年 |
AzureFunctionOnKubernetes@0 | AzureFunctionOnKubernetes@1 の使用 |
AzureFunctionOnKubernetes@1 | 年 |
AzureIoTEdge@2 | 年 |
AzureKeyVault@1 | 年 |
AzureKeyVault@2 | 年 |
AzureMonitor@0 | AzureMonitor@1 の使用 |
AzureMonitor@1 | 年 |
AzureMysqlDeployment@1 | 年 |
AzureNLBManagement@1 | N |
AzurePolicyCheckGate@0 | 年 |
AzurePowerShell@2 | 年 |
AzurePowerShell@3 | 年 |
AzurePowerShell@4 | 年 |
AzurePowerShell@5 | 年 |
AzureResourceGroupDeployment@2 | 年 |
AzureResourceManagerTemplateDeployment@3 | 年 |
AzureRmWebAppDeployment@3 | 年 |
AzureRmWebAppDeployment@4 | 年 |
AzureSpringCloud@0 | 年 |
AzureVmssDeployment@0 | 年 |
AzureWebApp@1 | 年 |
AzureWebAppContainer@1 | 年 |
ContainerBuild@0 | 年 |
ContainerStructureTest@0 | 年 |
Docker@0 | 年 |
Docker@1 | Azure サービス接続: Y Docker レジストリ サービス接続: N |
Docker@2 | 年 |
DockerCompose@0 | 年 |
DockerCompose@1 | 年 |
DotNetCoreCLI@2 | 年 |
HelmDeploy@0 | Azure サービス接続: Y |
HelmDeploy@1 | Azure サービス接続: Y |
InvokeRESTAPI@1 | 年 |
JavaToolInstaller@0 | 年 |
JenkinsDownloadArtifacts@1 | 年 |
Kubernetes@0 | Kubernetes@1 の使用 |
Kubernetes@1 | 年 |
KubernetesManifest@0 | KubernetesManifest@1 の使用 |
KubernetesManifest@1 | 年 |
Maven@4 | 年 |
Notation@0 | 年 |
PackerBuild@0 | PackerBuild@1 を使用 |
PackerBuild@1 | 年 |
PublishToAzureServiceBus@1 | Azure サービス接続で PublishToAzureServiceBus@2 を使用 |
PublishToAzureServiceBus@2 | 年 |
ServiceFabricComposeDeploy@0 | N |
ServiceFabricDeploy@1 | N |
SqlAzureDacpacDeployment@1 | 年 |
VSTest@3 | 年 |
Workload Identity フェデレーションがアクティブであることを確認します
エラー メッセージAADSTS700223またはAADSTS700238が表示された場合は、Microsoft Entra テナントで Workload Identity フェデレーションが無効になっています。
フェデレーション認証情報をブロックする Microsoft Entra ポリシーが設定されていないことを確認します。
発行者の URL が正確かどうかを確認する
一致するフェデレーション ID レコードが見つかりませんというメッセージが表示された場合は、発行者の URL またはフェデレーション サブジェクトが一致しません。 正しい発行者の URL は https://vstoken.dev.azure.com
で始まります
発行者の URL を修正するには、サービス接続を編集して保存することで発行者の URL を更新します。 Azure DevOps が ID を作成しなかった場合は、発行者の URL を手動で更新する必要があります。 Azure ID の場合、発行者の URL は自動的に更新されます。
一般的な問題
次のセクションでは、一般的な問題を特定し、その原因と解決策について説明します。
Microsoft Entra テナントでサービス プリンシパルを作成する権限がありません
適切なアクセス許可がない場合、Azure DevOps サービス接続構成ツールは使用できません。 サービス プリンシパルを作成する権限がない場合、または Azure DevOps ユーザーとは異なる Microsoft Entra テナントを使用している場合、ツールを使用するには権限レベルが不十分です。
アプリ登録を作成するための Microsoft Entra ID のアクセス許可を持っているか、適切なロール (アプリケーション開発者など) を持っている必要があります。
問題を解決するには 2 つのオプションがあります。
エラー メッセージ
次の表は、一般的なエラー メッセージと、それが生成される可能性がある問題を示しています。
メッセージ | 考えられる問題 |
---|---|
トークンを要求できません: ?audience=api://AzureADTokenExchange: unsupported protocol scheme を受け取ります" |
タスクは Workload Identity フェデレーションをサポートしていません。 |
"ID が見つかりません" | タスクは Workload Identity フェデレーションをサポートしていません。 |
"Azure のアクセス トークンをフェッチできませんでした" | タスクは Workload Identity フェデレーションをサポートしていません。 |
AADSTS700016: 識別子「****」を持つアプリケーションが見つかりませんでした | サービス接続に使用されている ID は存在しないか、サービス接続から削除された可能性があるか、正しく構成されていません。 事前に作成された ID を使用してサービス接続を手動で構成する場合は、appID /clientId が正しく構成されていることを確認します。 |
"AADSTS7000215: Invalid client secret provided. (指定されたクライアント シークレットが無効です。)" | シークレットの有効期限が切れたサービス接続を使用しています。 サービス接続を Workload Identity federationに変換し、期限切れのシークレットをフェデレーション資格情報に置き換えます。 |
"AADSTS700024: クライアントのアサーションが有効な時間の範囲内にありません" | 約 1 時間が経過してからこのエラーが発生した場合は、代わりに Workload ID フェデレーションとマネージド ID によるサービス接続を使用してください。 マネージド ID トークンの有効期間は約 24 時間です。 10 分から 1 時間未満の間にエラーが発生した場合は、アクセス トークンを (暗黙的に) 要求するコマンド (Azure Storage へのアクセスなど) をスクリプトの先頭に移動します。 アクセス トークンは、後続のコマンド用にキャッシュされます。 |
AADSTS70021: 提示されたアサーションに一致するフェデレーション ID レコードが見つかりません。 アサーションの発行者: https://app.vstoken.visualstudio.com 。 |
フェデレーション資格情報が作成されていないか、発行者の URL が正しくありません。 正しい発行者の URL の形式はhttps://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX サービス接続を編集して保存することで、発行者の URL を修正できます。 Azure DevOps によって ID が作成されなかった場合は、発行者を手動で更新する必要があります。 REST API を使用する場合は、サービス接続の編集ダイアログまたは応答 (承認パラメーターの下) で正しい発行者を見つけることができます。 |
AADSTS70021: 提示されたアサーションに一致するフェデレーション ID レコードが見つかりません。 アサーションの発行者: https://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 。 アサーションのサブジェクト: sc://<org>/<project>/<service-connection>. |
発行者の URL またはフェデレーション サブジェクトのいずれかが一致しません。 ID のフェデレーション サブジェクトを更新せずに、Azure DevOps 組織またはプロジェクトの名前が変更されたか、手動で作成されたサービス接続の名前が変更されました。 |
AADSTS700211: 提示されたアサーション発行者に一致するフェデレーション ID レコードが見つかりません | フェデレーション資格情報が作成されていないか、発行者の URL が正しくありません。 |
AADSTS700213: 提示されたアサーション サブジェクトに一致するフェデレーション ID レコードが見つかりません | フェデレーション資格情報が作成されていないか、サブジェクトが正しくありません。 |
AADSTS700223 | Microsoft Entra テナントでワークロード ID フェデレーションが制約されているか無効になっています。 このシナリオでは、代わりにフェデレーションにマネージド ID を使用できる場合があります。 詳細については、「マネージド ID を使用した Workload Identity」を参照してください。 |
AADSTS70025: クライアント アプリケーションにフェデレーション ID 資格情報が構成されていません | フェデレーション資格情報がアプリの登録またはマネージド ID で構成されていることを確認します。 |
Microsoft Entra は、エラー コード AADSTS700238 を使用して Azure DevOps によって発行されたトークンを拒否しました | Microsoft Entra テナントでワークロード ID フェデレーションが制約されています。 組織の発行者 (https://vstoken.dev.azure.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX ) は許可されません Workload Identity フェデレーションを使用します。 Microsoft Entra テナント管理者または管理チームに、Azure DevOps 組織の Workload Identity フェデレーションを許可するよう依頼してください。 |
AADSTS900382: Confidential Client は、Cross Cloud でサポートされていません | 一部のソブリン クラウドは、ワークロード ID フェデレーションをブロックします。 |
サービス プリンシパル クライアント ID を使用した JSON Web トークン (JWT) の取得に失敗しました | フェデレーション ID 資格情報の構成が間違っているか、Microsoft Entra テナントが OpenID Connect (OIDC) をブロックしています。 |
"スクリプトが次のエラーで失敗しました: UnrecognizedArgumentError: 認識できない引数: --federated-token" | 以前のバージョンの Azure CLI がインストールされているエージェントで AzureCLI タスクを使用しています。 Workload Identity フェデレーションには、Azure CLI 2.30 以降が必要です。 |
Microsoft Entra ID でアプリを作成できませんでした。 エラー: Microsoft Graph で操作を完了するのに十分な特権がありません。 ユーザーに Microsoft Entra アプリケーションを作成するアクセス許可があることを確認してください。 | Microsoft Entra テナントの場合、アプリ登録を作成する機能は無効になりました。 サービス接続を作成しているユーザーにアプリケーション開発者Microsoft Entra ロールを割り当てます。 または、マネージド ID を使用してサービス接続を手動で作成します。 詳細については、「マネージド ID を使用した Workload Identity」を参照してください。 |
上記に示されていない AADSTS エラーは表示されますか? 「Microsoft Entra 認証および認証エラー コード」を参照してください。