首页/开发/CI/CD 与发布速查/ServiceAccount 令牌管理
环境与配置管理60 条

ServiceAccount 令牌管理

应用访问 K8s API 的身份:优先使用投射令牌(绑定 audience 与过期时间),避免长期有效的静态令牌。

CI/CD 与发布速查开发更新于 2026-10-13

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
续签不用自己做:投射令牌由节点组件自动轮换,应用只管读取文件。

易错点

  • 假设 SA 无权限所以无需在意泄露:默认权限因集群配置而异,显式核对并收紧
  • 应用携带令牌访问外网服务:受众不匹配或意外泄露,按用途拆身份
  • 应用启动时缓存令牌:轮换后失效导致中断,改为按需读取文件
  • 长期 Secret 令牌继续沿用:无轮换且需手工维护,迁到投射令牌

数据来源与参考

  • Kubernetes 文档《Managing Service Accounts》
  • Kubernetes 文档《Bound Service Account Tokens》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌