Workload Identity 連携のトラブルシューティング

このページでは、Workload Identity 連携の一般的なエラーの解決方法について説明します。

Google Cloud API が SecurityTokenService から発行された認証情報を受け入れない

次のエラーが発生した場合は、最初にサービス アカウントの認証情報と交換するのではなく、SecurityTokenService から発行された認証情報を使用して Google Cloud API に直接アクセスしようとしている可能性があります。

{
  "error": {
    "code": 401,
    "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
    "status": "UNAUTHENTICATED",
  }
}

このエラーを解決するには、GenerateAccessToken を呼び出して、SecurityTokenService で作成した認証情報をサービス アカウント トークンと交換します。詳細については、ID 連携により有効期間の短い認証情報を取得するをご覧ください。

Workload Identity 連携で使用する ID プロバイダを許可リストに登録する

許可されていない ID プロバイダを Workload Identity プール プロバイダとして構成しようとすると、次のエラーが発生します。

FAILED_PRECONDITION: Precondition check failed.
- '@type': type.googleapis.com/google.rpc.PreconditionFailure
  violations:
  - description: "Org Policy violated for value: '{PROVIDER}'."
    subject: orgpolicy:projects/{PROJECT}/locations/global/workloadIdentityPools/{POOL}
    type: constraints/iam.workloadIdentityPoolProviders

この問題を解決するには、ID プロバイダの構成を制限するの手順に沿って、Workload Identity 連携で使用する ID プロバイダを許可リストに登録します。

指定された認証情報の発行者への接続中にエラーが発生する

次のエラーが表示された場合、Google Cloud が IdP の OIDC メタデータ ドキュメントまたは JWKS を取得できないためにエラーが発生している可能性があります。

{
  "error": "invalid_grant",
  "error_description":"Error connecting to the given credential's issuer."
 }

このエラーは通常、公共のインターネットからエンドポイントにアクセスできるように構成されていないことが原因で発生します。このエラーを解決するには、OIDC エンドポイントが一般公開されていて OIDC 仕様に準拠していることを確認します。詳細については、外部 ID プロバイダの準備をご覧ください。

それでもエラーが表示される場合は、トークン発行元(トークンの iss クレーム)が正しいことを確認します。