暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

云原生安全红队实录:绕过K8s老版本SA令牌漏洞的防御之道

Linux运维智行录 2025-02-25
12

自Kubernetes 1.24版本起,服务账户(ServiceAccount)的令牌管理机制发生重大变更,传统自动生成Secret的方式已被废弃。本文手把手教你破解新版本令牌获取难题,并演示三种权限验证姿势。

一、版本变更核心影响

🚨 关键变化:

停止自动创建Legacy Token Secret 强制使用TokenRequest API 令牌绑定生命周期(默认1小时)

新旧版本对比:

功能项
1.23及之前
1.24+
令牌生成方式
自动创建Secret
需手动创建Token Secret
令牌有效期
永久有效
可配置时效(默认1h)
安全特性
存在泄露风险
支持受众绑定验证

二、令牌获取实战演练

2.1 创建Token Secret模板

# sa-token.yaml  
apiVersion:v1
kind:Secret
metadata:
name:prom-sa-secret
namespace:kube-system
annotations:
    kubernetes.io/service-account.name:"prometheus"# 关键锚定SA
type:kubernetes.io/service-account-token# 指定令牌类型

复制

2.2 应用配置并提取令牌

# 创建Secret  
kubectl apply -f sa-token.yaml  

#
 提取Base64编码令牌  
TOKEN=$(kubectl -n kube-system get secret prom-sa-secret -ojsonpath='{.data.token}')  

复制

三、权限校验三大姿势

3.1 命令行快速验证

# --as值,所涉及的身份伪装功能
echo $TOKEN | base64 -d | awk -F. '{printf $2}' | base64 -d | python -m json.tool | grep sub
    "sub""system:serviceaccount:kube-system:prometheus"
    
# 校验节点读取权限  
kubectl auth can-i get nodes \  
  --as=system:serviceaccount:kube-system:prometheus  

# 检查Ingress操作权限(需对应RBAC配置)  
kubectl auth can-i create ingress \  
  --as=system:serviceaccount:kube-system:prometheus  

复制

3.2 模拟API请求验证

# 使用curl测试API访问  
curl -k -H "Authorization: Bearer $(echo $TOKEN | base64 -d)" \ 
  https://${API_SERVER}/api/v1/namespaces/kube-system/pods  

# 典型响应分析:  
# 200 OK - 有读取权限  
# 403 Forbidden - 权限不足  

复制

3.3 RBAC规则逆向追溯

# 查看绑定到SA的ClusterRole  
kubectl get clusterrolebindings -o json | jq '.items[] | select(.subjects[0].name=="prometheus")'   

# 可视化权限关系  
kubectl describe clusterrole prometheus

复制

四、常见故障排查

❌ 问题1:创建Secret后未生成令牌

✅ 解决步骤:

  1. 检查SA是否存在
  2. 验证annotation格式是否正确
  3. 查看kube-controller-manager日志

❌ 问题2:令牌报"Unauthorized"错误

✅ 诊断流程:

# 检查令牌有效期  
kubectl get secret prom-sa-secret -o jsonpath='{.metadata.annotations.expiration-timestamp}'

# 验证RBAC绑定  
kubectl get rolebinding,clusterrolebinding -A | grep prometheus  

复制

五、结语

Kubernetes 1.24以后服务账户(ServiceAccount)的令牌管理机制不再生成Secret。本文手把手教你破解新版本令牌获取难题

别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论