如何在Kubernetes中利用Eks-Pod-Identity实现基于角色的云资源鉴权

夜丽吖_3612

夜丽吖_3612

2026-04-25

195人浏览

原创

EKS Pod Identity 实现云资源鉴权需先确保集群启用 OIDC 提供者且服务账户正确绑定 IAM 角色,否则将触发 WebIdentityErr 或 NoCredentialProviders 错误;1.23+ 集群须验证 oidc.issuer 非空及 pod-identity-webhook 存在;服务账户须通过 eks.amazonaws.com/role-arn 注解关联具备 sts:AssumeRoleWithWebIdentity 权限的角色,其信任策略需精确匹配 OIDC Issuer 与 serviceaccount namespace/name;Pod 内 SDK 默认支持凭证链,但需 automountServiceAccountToken:true、/var/run/secrets/eks.amazonaws.com/serviceaccount/token 可读,且不可设置 AWS_ACCESS_KEY_ID 等静态密钥环境变量;权限变更后旧 Pod 不自动刷新凭证,必须重建 Pod 才生效。

如何在kubernetes中利用eks-pod-identity实现基于角色的云资源鉴权

直接用 EKS Pod Identity 实现云资源鉴权,前提是你的 EKS 集群已启用 OIDC 提供者且服务账户已正确绑定 IAM 角色——否则所有后续操作都会卡在 WebIdentityErr: failed to retrieve credentials 或 SDK 报错 NoCredentialProviders。

确认集群是否支持 EKS Pod Identity

不是所有 EKS 版本都默认开启该功能。1.23+ 集群需确保以下两点已就绪:

  • aws eks describe-cluster --name --query "cluster.identity.oidc.issuer" 返回非空值(如 https://oidc.eks..amazonaws.com/id/ABCD1234567890)
  • kubectl get mutatingwebhookconfigurations | grep pod-identity 应输出 pod-identity-webhook(这是 EKS 自动部署的组件,非手动安装)
  • 若使用 ack-pod-identity-webhook(阿里云 ACK 场景),则需额外验证其是否处于 Ready 状态:kubectl get pods -n ack-system | grep pod-identity-webhook

缺失任一条件,AssumeRoleWithWebIdentity 流程无法启动,SDK 就不会尝试从 /var/run/secrets/eks.amazonaws.com/serviceaccount/token 读取 JWT。

创建带 IAM 角色绑定的服务账户

服务账户本身不带权限,必须通过 Annotations 显式关联一个具备 sts:AssumeRoleWithWebIdentity 权限的 IAM 角色。关键点在于注解格式和角色信任策略:

  • 服务账户 YAML 中必须包含:eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/my-pod-role
  • 对应 IAM 角色的信任策略中,Condition 必须精确匹配你的 OIDC Issuer 和 service account namespace/name,例如:"sub": "system:serviceaccount:default:my-app"
  • 不要复用节点角色(NodeInstanceRole),否则容器可能意外获取更高权限;也不要省略 namespace —— default:my-app 和 prod:my-app 是两个完全独立的信任主体

错误示例:eks.amazonaws.com/role-arn 指向一个未配置 Web Identity 信任策略的角色,会导致 Pod 启动后日志持续刷出 Failed to refresh credentials,但容器进程不会崩溃,容易误判为逻辑正常。

Kubernetes Network Policy Generator
Kubernetes Network Policy Generator

使用加权评分卡在12项标准上评估和比较隐私解决方案供应商。适用于选择隐私管理软件、比较数据保护方案等场景。

下载

Pod 内应用如何正确使用 AWS SDK

AWS SDK(v2+)默认启用凭证链自动发现,无需改代码,但必须满足运行时环境约束:

  • Pod 必须挂载服务账户令牌:automountServiceAccountToken: true(默认为 true,但若所在命名空间或 SA 显式设为 false,则需手动修复)
  • 确保容器内路径 /var/run/secrets/eks.amazonaws.com/serviceaccount/token 可读(非 root 用户需有 read 权限)
  • 避免设置 AWS_ACCESS_KEY_ID 等环境变量——一旦存在,SDK 会跳过 Web Identity 流程,直接尝试使用静态密钥,导致权限与预期不符
  • 调试时可用 aws sts get-caller-identity --endpoint https://sts..amazonaws.com 验证当前有效身份(注意:需在容器内执行,且 CLI 版本 ≥ 2.13.0)

常见陷阱是本地开发时用 ~/.aws/credentials 跑通了,上集群后因环境变量残留或镜像内硬编码密钥,绕过了 Pod Identity,造成权限测试失效。

权限变更后凭据不会热更新

服务账户注解或 IAM 角色策略修改后,已有 Pod 不会自动刷新凭证——JWT 有效期默认 10 小时,且 SDK 缓存凭据直到过期或主动触发刷新。这意味着:

  • 加权限?必须重建 Pod(kubectl delete pod 或滚动更新 Deployment)
  • 删权限?旧 Pod 仍可继续调用,直到 token 过期或容器重启
  • 没有类似 kubectl rollout restart 的“重载权限”命令,一切依赖 Pod 生命周期

这点和传统节点级 IAM 角色完全不同,也是最容易被忽略的运维盲区:你以为权限已回收,其实 Pod 还拿着旧 token 在跑。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

kubernetes

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

2025.12.22

116

5

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

2026.06.29

208

19

轻量应用服务器和云服务器的区别
轻量应用服务器和云服务器的区别

随着科技的快速发展,越来越多的企业和个人开始依赖于服务器来托管其应用程序和网站。然而,在选择服务器时,很多人对轻量应用服务器和云服务器之间的差异不够了解。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.27

562

3

注册云服务器的作用
注册云服务器的作用

注册云服务器的作用:1、可放置公司网站、电子商务平台、APP和其他应用程序等;2、使用云服务器来存储和共享数据,不仅高度安全,而且可以随时随地在线访问;3、当内存不够时,站长可自行增加,使资源充沛,保障了页面加载速度和优质的用户体验。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.13

3584

9

云服务器的全部用途
云服务器的全部用途

云服务器的用途广泛,包括网站托管、应用程序部署、数据存储和备份、虚拟化和容器化、大数据处理、游戏服务器以及开发测试环境等。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

13859

12

云服务器价格性价比高的服务商介绍
云服务器价格性价比高的服务商介绍

性价比较高的云服务器服务商,包括阿里云、腾讯云、亚马逊AWS和华为云。这些服务商提供丰富的产品线、亲民的价格、完善的生态体系和技术支持。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

3627

9

云服务器的使用教程
云服务器的使用教程

使用云服务器需要遵循以下步骤:选择可靠的云服务提供商,注册账号并购买所需实例,配置安全组和网络,连接到服务器,配置服务器环境,定期管理和监控服务器,优化性能和成本。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

5777

10

云服务器作用介绍
云服务器作用介绍

云服务器作为云计算的关键组成部分,广泛应用于弹性计算、数据存储处理、应用程序部署托管、灾备容灾、开发测试环境、虚拟化容器化等领域。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.03.21

1665

12

云服务器是什么
云服务器是什么

云服务器是一种在云计算环境中提供的虚拟服务器,它具有弹性、可扩展性和按需付费等特点。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

2024.06.21

11336

7

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习