ServiceAccount Token 是工作负载访问 Kubernetes API 或外部身份系统的凭证。默认挂载、长期 Secret token 和过宽 RBAC 会放大容器被入侵后的权限。
不需要就不要挂载
apiVersion: v1
kind: ServiceAccount
metadata:
name: worker
automountServiceAccountToken: false
对无需访问 API 的 Pod 关闭自动挂载。需要身份时使用 TokenRequest 或 projected volume 获取短期令牌,并设置准确 audience。
volumes:
- name: identity
projected:
sources:
- serviceAccountToken:
path: token
audience: internal-api
expirationSeconds: 3600
接收方必须校验签名、issuer、audience 和过期时间,不能把任意集群令牌当作通用 bearer token。
限制爆炸半径
- 每个工作负载使用独立 ServiceAccount
- Role 仅授权必要命名空间与资源动作
- 限制 Pod exec、Secret 读取和 token 创建权限
- 审计异常 userAgent、来源 IP 和跨命名空间访问
收尾清单
扫描旧式 kubernetes.io/service-account-token Secret 和默认账户权限。轮换签名密钥时规划验证窗口,并确认短期 token 能自动刷新。