擷取簽署金鑰以驗證 OIDC 權杖 - Amazon EKS

協助改進此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

擷取簽署金鑰以驗證 OIDC 權杖

Kubernetes 會為每個 Kubernetes Service 帳戶發出一個 ProjectedServiceAccountToken。此權杖是 OIDC 權杖,同時也是一種 JSON Web 權杖 (JWT)。Amazon EKS 為每個叢集託管公有 OIDC 端點,其中包含權杖的簽署金鑰,讓外部系統可以對其進行驗證。

若要驗證 ProjectedServiceAccountToken,您需要擷取 OIDC 公有簽署金鑰,也稱為 JSON Web Key Set (JWKS)。在應用程式中使用這些金鑰,以驗證權杖。例如,您可以使用 PyJWT Python 程式庫,以利用這些金鑰來驗證權杖。如需 ProjectedServiceAccountToken 的詳細資訊,請參閱 IAM, Kubernetes 和 OpenID Connect (OIDC) 背景資訊

先決條件

  • 叢集的現有 AWS Identity and Access Management (IAM) OpenID Connect (OIDC) 提供商。若要判定您是否已經擁有一個,或是要建立一個,請參閱 為您的叢集建立 IAM OIDC 身分提供者

  • AWS CLI:命令列工具,適用於使用 AWS 服務,包括 Amazon EKS。如需詳細資訊,請參閱《AWS 命令列介面使用者指南》中的安裝。安裝 AWS CLI 後,建議您也進行設定。如需詳細資訊,請參閱《AWS 命令列介面使用者指南》中的使用 aws configure 的快速組態

程序

  1. 使用 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"
  2. 使用 curl 或類似工具擷取公有簽署金鑰。結果為 JSON Web Key Set (JWKS)

    重要

    Amazon EKS 會調節對 OIDC 端點的呼叫。您應該快取公有簽署金鑰。遵守回應中包含的 cache-control 標題。

    重要

    Amazon EKS 每七天輪換一次 OIDC 簽署金鑰。

    $ 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"}]}