You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes安全:如何查看ServiceAccount的Token及相关疑问

Kubernetes ServiceAccount Token 相关问题解答

操作步骤

  • 创建名为jenkins的ServiceAccount:
    kubectl create serviceaccount jenkins
    serviceaccount/jenkins created
    
  • 为该ServiceAccount生成Token:
    kubectl create token jenkins
    eyJhbGc****************iQS-AVXfIzA
    
  • 执行kubectl describe serviceaccount jenkins查看Token,结果显示Tokens为None:
    kubectl describe serviceaccount jenkins
    
    Name:                jenkins
    Namespace:           default
    Labels:              <none>
    Annotations:         <none>
    Image pull secrets:  <none>  
    Mountable secrets:   <none>
    Tokens:              <none>   <===== 此处注意!
    Events:              <none>
    

技术疑问解答

1. 执行kubectl describe查看ServiceAccount jenkins时显示Tokens为None,如何确认该ServiceAccount已关联Token?

kubectl create token生成的是短期Bearer Token,这类Token不会被存储为Kubernetes Secret资源,所以kubectl describe sa的Tokens字段不会显示它(该字段仅列出绑定到SA的长期Token Secret)。要确认关联关系,可通过以下方式验证:

  • 解码Token:用echo <生成的token> | base64 -d | jq(需安装jq工具)查看payload,其中sub字段值为system:serviceaccount:<namespace>:jenkins,明确指向目标SA;
  • 验证权限:执行kubectl --token=<生成的token> auth can-i <verb> <resource>,比如kubectl --token=eyJhbGc... auth can-i get pods,若返回正确权限结果,说明Token确实关联该SA;
  • 查看有效期:kubectl create token默认生成1小时有效期的Token,解码后可从exp字段看到过期时间戳,也可通过--duration参数自定义时长。

2. 多次执行kubectl create token jenkins命令,Kubernetes会为该账号创建多个Token还是覆盖原有Token?

会生成多个独立的有效Token,不会覆盖原有Token。每次执行命令都会生成新的短期Token,每个Token有独立的有效期,过期前均为有效状态,彼此无关联。

3. ServiceAccount与Token的映射关系是否为1:n?

是的,ServiceAccount与Token的映射关系为1:n。一个ServiceAccount可关联多个Token:

  • 手动通过kubectl create token生成多个短期Token;
  • 手动创建多个Secret并通过kubernetes.io/service-account.name注解绑定到同一SA,每个Secret对应一个长期Token;
  • 默认情况下Kubernetes会为SA自动创建一个默认Token Secret,加上手动创建的,一个SA可同时存在多个有效Token。

内容的提问来源于stack exchange,提问作者Ryan Lyu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 11:10:39