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

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

获取签名密钥

Kubernetes 向每个 ProjectedServiceAccountToken Kubernetes 颁发一个 Service Account。此令牌是一个 OIDC 令牌,进一步讲是一种 JSON web token (JWT)。Amazon EKS 为包含令牌的签名密钥的每个集群托管公有 OIDC 端点,这样外部系统就可以验证。

您需要获取 OIDC 公有签名密钥(也称为 JSON Web Key Set (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 Command Line Interface 用户指南中的安装、更新和卸载 Amazon CLI。在安装 Amazon CLI 后,建议您还要对其进行配置。有关更多信息,请参阅 Amazon Command Line Interface 用户指南中的如何使用 aws configure 快速配置

获取 OIDC 公有签名密钥 (Amazon CLI)
  1. 使用 Amazon CLI 检索适用于 Amazon EKS 集群的 OIDC URL。

    $ aws eks describe-cluster --name my-cluster --query 'cluster.identity.oidc.issuer' "https://oidc.eks.cn-north-1.amazonaws.com/id/8EBDXXXX00BAE"
  2. 使用 curl 或类似工具检索公有签名密钥。结果是 JSON Web Key Set (JWKS)

    重要

    Amazon EKS 会限制对 OIDC 端点的调用。您应该缓存公共签名密钥。请遵守响应中包含的 cache-control 标题。

    重要

    Amazon EKS 每七天轮换一次 OIDC 签名密钥。

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