獲取簽名密鑰以驗證OIDC令牌 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

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

獲取簽名密鑰以驗證OIDC令牌

Kubernetes向每個發ProjectedServiceAccountToken出一個KubernetesService Account。這個令牌是一個OIDC令牌,它進一步是一種類型JSON web token (JWT)。Amazon EKS 會為每個叢集託管一個公有OIDC端點,其中包含權杖的簽署金鑰,以便外部系統可以對其進行驗證。

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

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

  • AWS CLI— 用於處理包括 Amazon EKS 在內的 AWS 服務的命令行工具。如需詳細資訊,請參閱《 AWS Command Line Interface 使用者指南》中的安裝、更新和解除安裝 AWS CLI。安裝之後 AWS CLI,我們建議您也對其進行配置。如需詳細資訊,請參閱《 AWS Command Line Interface 使用者指南》中的使用 aws configure 進行快速組態設定

獲取OIDC公共簽名密鑰(AWS CLI)
  1. 使用擷取 Amazon EKS 叢集的 OIDC URL。 AWS CLI

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