获取签名密钥以验证 OIDC 令牌 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

获取签名密钥以验证 OIDC 令牌

Kubernetes 向每个 Kubernetes 服务账户发放一个 ProjectedServiceAccountToken。此令牌是一个 OIDC 令牌,更是一种 JSON Web 令牌(JWT)。Amazon EKS 为包含令牌的签名密钥的每个集群托管公有 OIDC 端点,这样外部系统就可以验证。

您需要获取 OIDC 公有签名密钥 [又称 JSON Web 密钥集(简称 JWKS)] 才能验证 ProjectedServiceAccountToken。在应用程序中使用这些密钥来验证令牌。例如,您可以使用 PyJWT Python 库来验证使用这些密钥的令牌。有关 ProjectedServiceAccountToken 的更多信息,请参阅 IAM、Kubernetes 和 OpenID Connect(OIDC)背景信息

先决条件

  • 适用于集群的现有 Amazon Identity and Access Management(IAM)OpenID Connect(OIDC)提供者。要确定您是否已经拥有一个或是否要创建一个,请参阅为集群创建 IAM OIDC 提供商

  • Amazon CLI – 与 Amazon 服务(包括 Amazon EKS)结合使用的命令行工具。有关更多信息,请参阅《Amazon 命令行界面用户指南》中的安装。在安装 Amazon CLI 后,建议您还要对其进行配置。有关更多信息,请参阅《Amazon 命令行界面用户指南》中的使用 aws configure 快速配置

过程

  1. 使用 Amazon 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 密钥集(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"}]}