署名キーを取得する - Amazon EKS

署名キーを取得する

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 CLI のインストール、更新、およびアンインストールAWS Command Line Interfaceを参照してください。AWS CLI のインストール後は、設定も行っておくことをお勧めします。詳細については、 ユーザーガイドのaws configure でクイック設定AWS Command Line Interfaceを参照してください。

OIDC パブリック署名キーを取得する (AWS CLI)
  1. AWS CLI を使用して Amazon EKS クラスターの OIDC URL を取得します。

    $ aws eks describe-cluster --name my-cluster --query 'cluster.identity.oidc.issuer' "https://oidc.eks.us-east-1.amazonaws.com/id/8EBDXXXX00BAE"
  2. curl、または同様のツールを使用して、パブリック署名キーを取得します。結果は、JSON Web Key Set (JWKS) です。

    重要

    Amazon EKS は、OIDC エンドポイントへの呼び出しをスロットリングします。パブリック署名キーをキャッシュする必要があります。レスポンスに含まれる cache-control ヘッダーを考慮します。

    重要

    Amazon EKS は OIDC 署名キーを 7 日ごとにローテーションします。

    $ curl https://oidc.eks.us-east-1.amazonaws.com/id/8EBDXXXX00BAE/keys {"keys":[{"kty":"RSA","kid":"2284XXXX4a40","use":"sig","alg":"RS256","n":"wklbXXXXMVfQ","e":"AQAB"}]}