Kubernetes は、各 Kubernetes Service Account に ProjectedServiceAccountToken
を発行します。このトークンは OIDC トークンであり、さらに JSON web token (JWT) の一種です。Amazon EKS は、外部システムでトークンを検証できるように、トークンの署名キーを含むクラスターごとにパブリック OIDC エンドポイントをホストします。
ProjectedServiceAccountToken
を検証するには、JSON Web Key Set (JWKS) とも呼ばれる OIDC パブリック署名キーを取得する必要があります。アプリケーションでこれらのキーを使用してトークンを検証します。例えば、PyJWT Python ライブラリProjectedServiceAccountToken
の詳細については、「IAM、Kubernetes、および OpenID Connect (OIDC) の背景情報」を参照してください。
前提条件
-
クラスターの既存の AWS Identity and Access Management (IAM) OpenID Connect (OIDC) プロバイダー。既に存在しているかどうかを確認する、または作成するには「クラスターの IAM OIDC プロバイダーを作成する」を参照してください。
-
AWS CLI – Amazon EKS など AWS のサービスを操作するためのコマンドラインツールです。詳細については、AWS コマンドラインインターフェイスユーザーガイドの「インストール」を参照してください。AWS CLI のインストール後は、設定も行っておくことをお勧めします。詳細については、AWS コマンドラインインターフェイスユーザーガイドの「aws configure を使用したクイック設定」を参照してください。
手順
-
AWS CLI を使用して Amazon EKS クラスターの OIDC URL を取得します。
$ aws eks describe-cluster --name my-cluster --query 'cluster.identity.oidc.issuer' "https://oidc.eks.us-west-2.amazonaws.com/id/8EBDXXXX00BAE"
-
curl、または同様のツールを使用して、パブリック署名キーを取得します。結果は JSON ウェブキーセット (JWKS)
です。 重要
Amazon EKS は、OIDC エンドポイントへの呼び出しをスロットリングします。パブリック署名キーをキャッシュする必要があります。レスポンスに含まれる
cache-control
ヘッダーを考慮します。重要
Amazon EKS は OIDC 署名キーを 7 日ごとにローテーションします。
$ curl https://oidc.eks.us-west-2.amazonaws.com/id/8EBDXXXX00BAE/keys {"keys":[{"kty":"RSA","kid":"2284XXXX4a40","use":"sig","alg":"RS256","n":"wklbXXXXMVfQ","e":"AQAB"}]}