ServiceAccount 令牌是什么
应用访问 K8s API 的身份凭据:优先使用投射令牌(TokenRequest 投射到 Pod 卷),自动轮换、绑定受众与过期时间;旧的长期 Secret 型令牌在 1.24 以后默认不再自动创建。原则是按需授权、限制受众、不用时撤销。多数应用并不需要访问 API Server——不需要就别挂,减少凭据暴露面。
基本信息
| 现代方式 | TokenRequest 投射到 Pod 卷,自动轮换、绑定受众与有效期 |
|---|---|
| 旧方式 | 长期 Secret 型令牌(1.24+ 默认不再自动创建) |
| 原则 | 按需授权、限制受众、不用时撤销 |
| 受众 | audience 限定令牌用途,跨服务不可复用 |
| 审计 | 权限范围由 RBAC 决定,决定泄露影响 |
典型使用场景
- 控制器访问 API:应用以投射令牌调用 API Server
- CI 临时身份:短有效期令牌供流水线内一次任务使用
- 最小权限:配合 RBAC 只授予所需动词与资源
- 撤销:身份不再需要时删除授权与令牌
- 排障:403 先查 RBAC,再核对受众是否匹配
- 外网调用:不带 K8s 令牌,按用途拆独立身份
投射令牌片段
投射令牌片段
volumes:
- name: token
projected:
sources:
- serviceAccountToken:
path: token
expirationSeconds: 3600 # 短有效期,自动轮换
audience: api # 受众限定用途新旧方式对照
| 维度 | 投射令牌 | 长期 Secret |
|---|---|---|
| 有效期 | 短且自动轮换 | 长期有效 |
| 受众 | 可绑定 audience | 一般无受众限制 |
| 创建 | TokenRequest 按需签发 | 手动创建 Secret |
| 风险 | 泄露影响窗口小 | 泄露后长期可用 |
| 现状 | 推荐方式 | 1.24+ 不再自动创建 |
多数应用并不需要访问 API Server:不需要就别挂,减少凭据暴露面。
自动轮换意味着应用要能读取文件变化,而不是启动时缓存一次。
权限用 RBAC 收紧:令牌泄露的影响范围就是 RBAC 的授权范围。
排障与联调
- 卷挂载检查:确认容器实际挂载了投射卷再排查权限
- 联调对齐:接收方校验受众时值不一致会被拒,先对齐 audience
续签不用自己做:投射令牌由节点组件自动轮换,应用只管读取文件。