次の方法で共有


Azure Resource Manager Workload Identity サービス接続のトラブルシューティングを行います。

Workload Identity サービス接続に関する一般的な問題のデバッグに関するヘルプを入手します。 必要に応じてサービス接続を手動で作成する方法も学習します。

トラブルシューティングのチェックリスト

Workload Identity サービス接続に関する問題のトラブルシューティングを行うには、次のチェックリストを使用してください。

  • パイプライン タスクをレビューして、Workload Identity がサポートされていることを確認します。
  • Workload Identity フェデレーションがテナントに対してアクティブであることを確認します。
  • 発行者の URL とフェデレーション サブジェクト識別子が正確であることを確認してください。

次のセクションでは、問題とその解決方法について説明します。

パイプライン タスクを確認する

Microsoft Entra で認証を行うほぼすべてのパイプライン タスクは、ワークロード ID をサポートします。 次の表に、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://login.microsoftonline.comで始まります。

  Azure DevOps 発行者 Microsoft Entra 発行者 (新しいサービス接続)
発行者 https://vstoken.dev.azure.com/<organization id> https://login.microsoftonline.com/<microsoft entra tenant id>/v2.0
サブジェクト sc://<organization name>/<project name>/<service connection name> <microsoft entra prefix>/sc/<organization id>/<service connection id>

発行者の URL を修正するには、サービス接続を編集して保存することで発行者の URL を更新します。 Azure DevOps が ID を作成しなかった場合は、発行者の URL を手動で更新する必要があります。 Azure ID の場合、発行者の URL は自動的に更新されます。

一般的な問題

次のセクションでは、一般的な問題を特定し、その原因と解決策について説明します。

Microsoft Entra テナントでサービス プリンシパルを作成する権限がありません

適切なアクセス許可がない場合、Azure DevOps サービス接続構成ツールは使用できません。 サービス プリンシパルを作成する権限がない場合、または Azure DevOps ユーザーとは異なる Microsoft Entra テナントを使用している場合、ツールを使用するには権限レベルが不十分です。

アプリ登録を作成するための Microsoft Entra ID のアクセス許可を持っているか、適切なロール (アプリケーション開発者など) を持っている必要があります。

問題を解決するには 2 つのオプションがあります。

自動化でワークロード ID フェデレーション サービス接続を作成するにはどうすればよいですか?

ワークロード ID フェデレーションは、ID とサービス接続の間の双方向の関係を定義します。 その結果、オブジェクトは特定の順序で作成する必要があり、フェデレーション資格情報はサービス接続の作成後にのみ作成できます。 ワークロード ID サービス接続の作成を自動化する方法については、「 スクリプトを使用してワークロード ID サービス接続を使用して Azure Resource Manager を自動化する」を参照してください。

エラー メッセージ

次の表は、一般的なエラー メッセージと、それが生成される可能性がある問題を示しています。

メッセージ 考えられる問題
トークンを要求できません: ?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://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX サービス接続を編集して保存することで、発行者の URL を修正できます。 Azure DevOps によって ID が作成されなかった場合は、発行者を手動で更新する必要があります。 正しい発行者は、サービス接続の編集ダイアログ、または REST API を使用している場合は応答で確認できます。
AADSTS70021: 提示されたアサーションに一致するフェデレーション ID レコードが見つかりません。 アサーションの発行者: https://login.microsoftonline.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://login.microsoftonline.com/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX) は、使用しているワークロード ID の種類 (アプリの登録やマネージド ID) とのワークロード ID フェデレーションを使用できません。 Microsoft Entra テナント管理者または管理チームに、Azure DevOps 組織の Workload Identity フェデレーションを許可するよう依頼してください。
AADSTS70052: ID は、マネージド ID、シングル テナント アプリ、またはサービス アカウントである必要があります 現在、 signInAudience: AzureADMultipleOrgs を持つマルチテナント アプリの登録は、Microsoft Entra 発行者ではサポートされていません。 代わりに、 signInAudience: AzureADMyOrg を使用し、複数のテナントへのアクセスを分割して、テナントごとに異なるサービス接続を使用します。 1 つの要求で複数のテナントにアクセスする ARM 操作 (仮想ネットワークのクロステナント ピアリングなど) に依存している場合は、サポートに連絡して、Azure DevOps 組織に代わりに Azure DevOps 発行者を使用させることができます。
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 認証および認証エラー コード」を参照してください。