EKSのOIDCエンドポイントがPrivateLink対応 — IRSA検証をインターネット経由なしで完結させる設計
EKSクラスターのOIDCディスカバリ/JWKSエンドポイントがAWS PrivateLinkに対応しました。IRSAが使う通信を3つのパスに分解し、新しいoidc-eksエンドポイントが閉じるのはどの経路で、STS呼び出しやトークン検証はなぜ別扱いなのかを設計判断として整理します。
- #Amazon EKS
- #AWS PrivateLink
- #IRSA
- #Kubernetes
- #セキュリティ
2026年7月27日、Amazon EKS がクラスターのOIDCディスカバリエンドポイントとJWKSの取得を AWS PrivateLink 経由で行えるようになったと発表しました。IRSA(IAM Roles for Service Accounts=KubernetesのサービスアカウントにIAMロールを紐づける仕組み)を使う閉域VPCでは、この経路のためだけにインターネット出口を残している構成が珍しくありませんでした。
この記事は、IRSAが使う通信を3つのパスに分解したうえで、新しい oidc-eks エンドポイントが閉じるのはどれで、閉じないのはどれかを整理します。対象は閉域網・フルプライベートVPCのEKS設計を担う読者です。なお、コントロールプレーンから外向きに出る通信の経路制御は別の機能であり、本記事の対象外です。
IRSAが使う通信は3つのパスに分かれている
EKSクラスターは、クラスターごとのOIDC issuer URL 上に OpenID Connect のディスカバリ文書と JWKS(JSON Web Key Set=トークンの署名を検証するための公開鍵の集合)を公開しています。IRSAはこのエンドポイントでクラスターの公開署名鍵を配布し、IRSAを設定するツールやトークンを検証する実装が、ここから鍵を取得します。
混同しやすいのは、「OIDCエンドポイントに誰がアクセスするのか」が一種類ではない点です。公式ドキュメントの記述に沿って分けると次の3つになります。
| パス | 呼ぶ主体 | 経路 | プライベート化の手段 |
|---|---|---|---|
| ① ディスカバリ文書・JWKSの取得 | VPC内のツール(eksctl、Terraform、AWS CLI、自作トークンバリデータ) | VPC → クラスターのissuerホスト名 | oidc-eks インターフェースエンドポイント(今回追加) |
② sts:AssumeRoleWithWebIdentity の呼び出し | ワークロード(Pod) | VPC → AWS STS | STSのインターフェースエンドポイント+リージョンSTSエンドポイントの設定 |
| ③ トークン検証時のJWKS取得 | AWS STS | AWS内部 | 利用者の設定対象外 |
③について公式ドキュメントは、ワークロードが AssumeRoleWithWebIdentity を呼んだとき、AWS STS はクラスターのJWKSを利用者のVPCやこのエンドポイントを通さずAWS内部から取得すると明記しています。このエンドポイントを作っても、VPC内でOIDCのDNSを上書きしても、トークン検証の挙動は変わりません。
この切り分けがないと、「IRSAが動かない原因はOIDCエンドポイントへの到達性だ」という誤った仮説から調査を始めることになります。今回追加されたのは①だけです。
周辺: エンドポイントは用途ごとにサービス名が違う
EKS関連のインターフェースエンドポイントは1つではなく、用途ごとに分かれています。
| サービス名 | 用途 |
|---|---|
com.amazonaws.region-code.eks | EKS API |
com.amazonaws.region-code.eks-fips | FIPS準拠のEKS API |
com.amazonaws.region-code.eks-auth | EKS Auth API(EKS Pod Identity) |
com.amazonaws.region-code.oidc-eks | クラスターのOIDCディスカバリ/JWKS(今回追加) |
EKS APIのエンドポイントで到達できるのはEKSのAPIアクションで、Kubernetes API そのものには使えません(こちらは別のプライベートエンドポイントを持ちます)。
設計上あわせて把握しておきたいのが eks-auth です。EKS Pod Identity は EKS Auth API から資格情報を取得する方式で、OIDCディスカバリ文書を引きません。Pod Identityに寄せた構成では①のパスがそもそも発生せず、代わりに eks-auth のエンドポイントが必要になります。
何が変わったか — oidc-eks エンドポイントとDNSの解決
サービス名 com.amazonaws.region-code.oidc-eks のインターフェースVPCエンドポイントを作ると、VPC内からOIDCディスカバリ文書とJWKSにプライベートに到達できます。公式が挙げる想定用途は、クラスターのIAM OIDCアイデンティティプロバイダを作成する場面(eksctl、Terraform、AWS CLI)と、VPC内で自作のトークンバリデータを動かす場面です。従来この到達にはインターネットアクセス、またはDNSの回避策が必要でした。
対象リージョンは、What’s Newの発表が「EKSが利用可能な全リージョン」、ユーザーガイドの記述が「ほとんどのAWSリージョン」となっています。設計に組み込む前に、対象リージョンでの提供状況を公式ドキュメントで確認してください。
料金は追加費用なしで、標準のAWS PrivateLink料金が適用されます。課金の軸はアベイラビリティーゾーンごとのエンドポイントの時間課金と、通過したデータの処理料金です。単価はリージョンで異なります。
issuerホスト名とprivate DNS
クラスターのOIDC issuerホスト名はクラスターのIPファミリで決まります。既定であるIPv4クラスターは oidc.eks.region-code.amazonaws.com、IPv6クラスターはデュアルスタックの oidc-eks.region-code.api.aws を使います。中国リージョンのデュアルスタックホスト名は oidc-eks.region-code.api.amazonwebservices.com.cn です。
インターフェースエンドポイントはこの両方のホスト名を登録します。private DNS(既定で有効)が効いていれば、どちらのホスト名もエンドポイントに解決され、トークンのissuer URLを辿ってディスカバリ文書とJWKSを取得するクライアントは、IPファミリがどちらでもプライベートに到達します。
private DNS を機能させるには、VPCの属性 enableDnsHostnames と enableDnsSupport が有効である必要があります。Route 53 Resolverのルールやプライベートホストゾーン、オンプレミスDNSへの転送で既に同じホスト名を扱っている環境では、解決順序が意図どおりになるかを適用前に確認しておきましょう。
実務での注意点
エンドポイントポリシーが使えない
このエンドポイントはVPCエンドポイントポリシーに対応せず、既定のフルアクセスポリシーだけを受け付けます。OIDCディスカバリ文書とJWKSは匿名で配信されるためです。これはOpenID Connect仕様の要求であり、検証側が資格情報を提示せずに公開鍵を取得するというIRSAの仕組みそのものです。リクエストにIAMプリンシパルもアクションも乗らないため、ポリシーには評価する対象がありません。誰が到達できるかは、エンドポイントのネットワークインターフェースに付けるセキュリティグループと、サブネットのルーティングで制御します。
プライベート接続は認可の境界ではない
PrivateLink経由にしても、そのトラフィックがAWSネットワーク内に留まるだけで、誰がIAMロールを引き受けられるかは制御されません。配信されるデータは公開鍵そのものです。IRSAの認可を強制するのは引き受け先ロールの信頼ポリシーで、評価されるのはワークロードが sts:AssumeRoleWithWebIdentity を呼んだ時点です。どのワークロードがロールを引き受けられるかは、信頼ポリシーの aud と sub の条件で絞ります。
STSの経路は別に閉じる
上の②です。多くのAWS SDKのv1系はグローバルSTSエンドポイント(sts.amazonaws.com)を既定で使い、これはSTSのVPCエンドポイントを通りません。出口のないクラスターでIRSAを使うには、STSのVPCエンドポイントを作り、SDKがリージョンSTSエンドポイント(sts.region-code.amazonaws.com)を使うよう設定する必要があります。
既存の手段との使い分け
今回のエンドポイントは、①の経路のために出口を残していた構成を、出口なしへ寄せる材料になります。一方、すでにegressが許可されていて他の用途でも出口が必要なら、エンドポイントを増やさない判断もあります。IRSA自体をPod Identityへ移すなら①のパスは消えます。3つは排他ではなく、移行期に oidc-eks を置きつつ段階移行する構成も取れます。
まとめ
- OIDCディスカバリ文書とJWKSを
com.amazonaws.region-code.oidc-eksのインターフェースVPCエンドポイント経由で取得できるようになりました。追加費用はなく標準のPrivateLink料金が適用されます。 - 閉じるのはVPC内のツールからの取得経路だけです。ワークロードの
AssumeRoleWithWebIdentity呼び出しはSTSのエンドポイント設定の担当で、AWS STSによる検証はAWS内部の経路で行われます。 - エンドポイントポリシーには対応せず、プライベート接続自体は認可の境界になりません。到達制御はセキュリティグループとサブネット、認可はロールの信頼ポリシーで行います。
出典
- Amazon EKS now supports AWS PrivateLink for the cluster OIDC discovery and JWKS endpoint
- Access Amazon EKS using AWS PrivateLink - Amazon EKS User Guide
- Deploy private clusters with limited internet access - Amazon EKS User Guide
- Configure the AWS Security Token Service endpoint for a service account - Amazon EKS User Guide
- AWS PrivateLink pricing