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

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 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)背景信息

先决条件

  • 适用于集群的现有 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 密钥集(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"}]}