帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 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 快速配置。
过程
-
使用 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"
-
使用 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"}]}