AssumeRoleWithWebIdentity で InvalidIdentityToken エラーが発生するのはどうしてですか
困っていた内容
GitLab CI/CD や GitHub Actions などから AWS へ OIDC 認証を行う際に、以下のように AssumeRoleWithWebIdentity で InvalidIdentityToken エラーが発生します。
An error occurred (InvalidIdentityToken) when calling the AssumeRoleWithWebIdentity operation: Couldn't retrieve verification key from your identity provider, please reference AssumeRoleWithWebIdentity documentation for requirements
どのような原因が考えられるのか教えてください。
どう対応すればいいの?
このエラーは、AWS STS が OIDC ID プロバイダー(GitLab、GitHub Actions など)のエンドポイントにアクセスできない場合などに発生します。
OIDC 認証では、AWS STS がトークンを検証する際に、OIDC ID プロバイダーの以下のエンドポイントへアクセスする必要があります。
- .well-known/openid-configuration
- jwks_uri(JSON Web Key Set)
これらのエンドポイントにアクセスできないと、InvalidIdentityToken エラーとなります。
re:Post のナレッジ記事では、他にも以下のような状況でエラーが発生すると説明されています。
このエラーは、次の理由で発生する可能性があります。
- OIDC ID プロバイダーの .well-known および jwks_uri エンドポイントに、パブリックインターネットからアクセスできない。
- カスタムファイアウォールが API リクエストをブロックしている。
- OIDC ID プロバイダーから STS エンドポイントへの API リクエストに 5 秒を超える遅延がある。
- JSON Web キーセット (JWKS) に多数のキーがあり、STS が OIDC ID プロバイダーのキーを検証できないため、リクエストにスロットリングが発生している。
アクセスエラーを解消するには
OIDC ID プロバイダーの .well-known/openid-configuration と jwks_uri を、パブリックインターネットからアクセス可能な状態にする必要があります。
ファイアウォールやホワイトリストでアクセス制限を設けている場合は、以下の対処方法をご検討ください。
1. パブリックアクセスを許可する
.well-known/openid-configuration と jwks_uri へのパブリックアクセスを許可します。
2. ホワイトリストの範囲を広げる
特定の IP アドレス範囲のみ許可している場合、AWS STS からのアクセスが通るよう範囲を調整します。
ただし、AWS STS がトークン検証時に使用する送信元 IP アドレスの範囲は公開されていないため、確実な運用のためにはパブリックアクセスの許可を推奨します。
参考情報






