Bound Service Account Token Improvements

Bound Service Account Token Improvements 详细介绍

Bound Service Account Token(绑定服务账户令牌)是 Kubernetes 针对传统服务账户令牌安全缺陷推出的增强机制,通过短期有效对象绑定受众限制自动轮换等特性,显著提升了容器化环境中服务身份认证的安全性与可审计性。下面从背景、核心功能、演进历程、安全优势、实现方式、使用方法和最佳实践等方面进行全面解析。


一、背景与问题

传统 Kubernetes 服务账户令牌存在四大核心安全隐患:

问题描述风险
无受众绑定令牌可被任何服务接受,无访问范围限制令牌被盗后可用于攻击任意服务
长期有效令牌与服务账户生命周期相同,无自动过期机制令牌泄露后长期可用,风险窗口大
存储不安全令牌存储在 Secret 中,节点上所有 Pod 可见扩大攻击面,增加泄露风险
无对象绑定令牌与 Pod/Secret 无强关联,可跨 Pod 复用难以追踪令牌使用,无法按 Pod 撤销权限
扩展性差每个服务账户生成一个令牌 Secret,集群规模大时资源消耗高增加 etcd 存储负担和管理复杂度

这些问题促使 Kubernetes 社区从 1.13 版本开始设计并逐步推出 Bound Service Account Token 机制,1.21 版本成为默认,1.24 版本彻底禁用自动生成长期 Secret 令牌。


二、核心功能与演进历程

2.1 核心特性概览

Bound Service Account Token 通过以下关键特性解决传统令牌问题:

  1. 短期有效:默认有效期 1 小时,支持 10 分钟至 1 年自定义配置,kubelet 自动轮换
  2. 受众绑定:通过aud声明限制令牌仅对特定服务 / API 有效,防止跨服务滥用
  3. 对象绑定:令牌可绑定到 Pod/Secret/Node 对象,对象删除时令牌自动失效
  4. 自动轮换:kubelet 在令牌过期前 20% 时间(约 48 分钟)自动刷新,无需重启 Pod
  5. 投射卷挂载:通过 Projected Volume 将令牌直接挂载到 Pod,避免 Secret 存储风险
  6. 精细权限控制:支持按 Pod/Node 粒度限制令牌权限,实现最小权限原则
  7. 增强审计能力:嵌入 JTI(JWT 唯一标识符),便于追踪令牌全生命周期操作

2.2 关键 KEP 与版本演进

KEP核心改进状态版本
KEP-1205基础绑定令牌机制(TokenRequest API、投射卷、对象绑定)GA1.21+
KEP-4193Node 绑定、JTI 审计、Pod-Node 关联信息嵌入Beta1.30+
LegacyServiceAccountTokenNoAutoGeneration禁用自动生成长期 Secret 令牌GA1.24+
KEP-4193 主要增强内容:
  • Node 信息嵌入:令牌中自动添加 Pod 运行节点的nameuid声明
  • Node 直接绑定:支持将令牌直接绑定到 Node 对象,节点删除时令牌立即失效
  • JTI 唯一标识:每个令牌添加 UUID,用于审计日志追踪令牌全生命周期
  • TokenReview 扩展:支持验证令牌绑定的 Node 对象是否存在,防止跨节点重放攻击

2.3 版本关键里程碑

版本关键变更
1.13Bound Service Account Token Alpha 版发布
1.20TokenRequest API 与投射卷默认启用
1.21成为默认令牌机制,传统令牌标记为废弃
1.24禁用自动生成长期 Secret 令牌(GA)
1.29KEP-4193 Alpha 版发布,支持 Node 绑定与 JTI
1.30KEP-4193 部分特性(JTI、Pod-Node 信息)升级 Beta
1.31KEP-4193 Node 绑定特性升级 Beta
1.32KEP-4193 核心特性升级 GA

三、技术实现细节

3.1 架构组件与流程

Bound Service Account Token 机制涉及四大核心组件协作:

  1. kube-apiserver:提供 TokenRequest API,签发绑定令牌,验证令牌有效性
  2. kubelet:代表 Pod 向 apiserver 请求令牌,管理令牌轮换,通过投射卷挂载令牌
  3. Service Account Admission Controller:自动为 Pod 注入投射卷配置
  4. TokenReview API:验证令牌有效性、受众、绑定对象状态

令牌生命周期流程

  1. Pod 创建时,Admission Controller 注入投射卷配置
  2. kubelet 调用 TokenRequest API 为 Pod 请求绑定令牌(含 Pod UID 绑定)
  3. apiserver 验证 kubelet 权限,签发短期、绑定 Pod 的 JWT 令牌
  4. kubelet 将令牌通过投射卷挂载到 Pod 的/var/run/secrets/kubernetes.io/serviceaccount目录
  5. 令牌过期前,kubelet 自动请求新令牌并更新挂载文件
  6. 应用通过客户端库自动读取新令牌,无需重启

3.2 JWT 令牌结构增强

Bound Service Account Token 在标准 JWT 基础上扩展了以下关键声明:

声明类型描述安全价值
aud数组令牌受众,如["https://kubernetes.default.svc.cluster.local"]限制令牌使用范围
exp/nbf/iat时间戳令牌有效期窗口防止长期滥用
kubernetes.io/serviceaccount对象服务账户信息(name、namespace、uid)身份标识
kubernetes.io/pod对象绑定 Pod 信息(name、uid)按 Pod 撤销权限
kubernetes.io/node对象绑定 Node 信息(name、uid)防止跨节点重放
kubernetes.io/jti字符串令牌唯一标识符(UUID)审计追踪与异常检测
kubernetes.io/warnafter时间戳建议刷新时间触发 kubelet 自动轮换

3.3 投射卷安全配置

投射卷默认配置示例:

yaml

volumes: - name: kube-api-access-xxxxx projected: defaultMode: 420 # 0644,可根据安全需求调整 sources: - serviceAccountToken: expirationSeconds: 3600 # 1小时 path: token - configMap: items: - key: ca.crt path: ca.crt name: kube-root-ca.crt - downwardAPI: items: - fieldRef: apiVersion: v1 fieldPath: metadata.namespace path: namespace

权限优化策略

  • 若 Pod 设置fsGroup:令牌文件权限设为 0600,通过 fsGroup 机制控制访问
  • 若 Pod 所有容器使用相同runAsUser:令牌文件属主设为该用户,权限 0600
  • 其他情况:默认 0644(兼容传统配置),建议升级应用以支持更严格权限

三、安全优势与应用场景

3.1 核心安全价值

安全能力具体实现防护效果
最小权限原则按 Pod/Node/ 受众限制令牌权限减少权限泄露影响范围
缩短风险窗口短期令牌 + 自动轮换令牌泄露后可用时间有限
精准访问控制受众绑定 + 对象绑定防止令牌跨服务 / 跨 Pod / 跨节点滥用
可追溯性JTI + 审计日志快速定位令牌来源与操作轨迹
自动撤销对象绑定 + 过期机制无需手动撤销,降低管理成本
减少攻击面投射卷替代 Secret 存储避免节点上 Secret 泄露风险

3.2 典型应用场景

  1. Pod 间安全通信:通过自定义受众限制令牌仅用于特定服务间认证
  2. 云服务集成:如 AWS IAM、GCP Workload Identity,通过绑定令牌实现 Pod 身份与云服务权限映射
  3. 镜像拉取认证:kubelet 使用 Pod 绑定令牌向容器注册表认证,替代节点级长期凭证Kubernetes
  4. CSI 驱动安全:CSI 驱动使用 Pod 绑定令牌访问 API,实现卷操作与 Pod 身份强关联Kubernetes
  5. 多租户隔离:通过 Node 绑定令牌限制租户 Pod 只能访问本节点资源
  6. 蜜罐防御:为 Kubepot 等蜜罐系统配置短期、绑定特定 Node 的令牌,快速识别异常访问

四、使用方法与配置指南

4.1 基础使用方法

4.1.1 Pod 中使用投射卷令牌

Pod 规范中无需额外配置,Admission Controller 会自动注入默认投射卷。如需自定义配置:

yaml

apiVersion: v1 kind: Pod metadata: name: my-pod spec: serviceAccountName: my-service-account containers: - name: my-container image: my-image volumes: - name: my-token-volume projected: sources: - serviceAccountToken: expirationSeconds: 7200 # 2小时,最大1年 path: my-custom-token audience: ["https://my-service.example.com"] # 自定义受众
4.1.2 手动创建绑定令牌

使用 kubectl 创建绑定令牌Kubernetes:

bash

运行

# 创建Pod绑定令牌,有效期10分钟,受众为vault kubectl create token my-service-account --duration 10m --audience vault --bound-object-kind Pod --bound-object-name my-pod # 创建Node绑定令牌 kubectl create token my-service-account --bound-object-kind Node --bound-object-name my-node
4.1.3 验证令牌有效性

使用 TokenReview API 验证令牌:

yaml

apiVersion: authentication.k8s.io/v1 kind: TokenReview metadata: name: my-token-review spec: token: <your-token> audiences: ["https://my-service.example.com"] # 验证受众

4.2 关键配置参数

4.2.1 kube-apiserver 配置
参数描述默认值
--service-account-issuer令牌签发者 URL,必须为 HTTPS无,生产环境必填
--service-account-signing-key-file令牌签名私钥路径无,生产环境必填
--service-account-key-file令牌验证公钥路径无,生产环境必填
--api-audiencesAPI 服务器接受的受众列表--service-account-issuer相同
--service-account-max-token-expiration令牌最大有效期1 年
4.2.2 特性门控配置(KEP-4193 相关)
特性门控描述状态版本
ServiceAccountTokenJTI启用 JTI 唯一标识符Beta1.30+
ServiceAccountTokenPodNodeInfo嵌入 Pod 运行 Node 信息Beta1.30+
ServiceAccountTokenNodeBinding支持直接绑定 Node 对象Beta1.31+
ServiceAccountTokenNodeBindingValidation验证 Node 绑定令牌有效性Beta1.30+

4.3 迁移注意事项

  1. 客户端库升级:确保使用支持令牌自动重新加载的客户端库版本:

    • Go: >= v0.15.7
    • Python: >= v12.0.0
    • Java: >= v9.0.0
    • JavaScript: >= v0.10.3
  2. 处理令牌轮换:应用需从文件读取令牌(而非缓存),推荐使用kubernetes/client-goinclusterconfig自动处理轮换

  3. 临时兼容性措施

    bash

    运行

    # 临时延长令牌有效期(迁移期间使用) kube-apiserver --service-account-extend-token-expiration=true
  4. 监控与审计

    • 监控serviceaccount_stale_tokens_total指标,识别未升级的客户端
    • 审计日志中查找authentication.k8s.io/stale-token注解,定位使用旧令牌的 Pod

五、KEP-4193 高级特性详解

5.1 Node 信息嵌入与绑定

5.1.1 Pod-Node 信息自动嵌入

当 kubelet 为 Pod 请求令牌时,apiserver 会自动获取 Pod 调度的 Node 信息,嵌入令牌的kubernetes.io/node声明中:

json

{ "kubernetes.io/node": { "name": "node-1", "uid": "e7d8f9b0-1234-5678-9abc-def012345678" } }

外部服务可通过验证 Node 信息防止令牌在其他节点重放攻击。

5.1.2 直接绑定 Node 对象

使用kubectl create token创建直接绑定 Node 的令牌:

bash

运行

kubectl create token my-sa --bound-object-kind Node --bound-object-name node-1

此类令牌仅在 Node 存在时有效,Node 删除后立即失效,适用于节点级服务认证。

5.2 JTI 审计追踪

每个令牌包含唯一 JTI(UUID),用于:

  1. 令牌溯源:通过审计日志中authentication.k8s.io/credential-id注解关联令牌操作
  2. 异常检测:识别同一令牌在多个 Node 上的访问行为
  3. 责任认定:快速定位令牌创建者与使用轨迹

审计日志示例:

json

{ "annotations": { "authentication.kubernetes.io/issued-credential-id": "550e8400-e29b-41d4-a716-446655440000", "authentication.kubernetes.io/credential-id": "550e8400-e29b-41d4-a716-446655440000" } }

六、安全最佳实践

  1. 使用默认短期令牌:避免设置过长有效期,特殊场景不超过 24 小时
  2. 配置最小受众:仅包含必要服务的受众,避免通配符
  3. 强制对象绑定:所有令牌绑定到 Pod/Node,确保权限可精准撤销
  4. 限制令牌权限:使用 RBAC 按最小权限原则配置服务账户权限
  5. 监控令牌使用:设置告警规则,监控异常令牌访问(如跨 Node 使用、过期令牌复用)
  6. 定期轮换签名密钥:配合 kube-apiserver 密钥轮换机制,增强令牌安全性
  7. 禁用自动挂载:对无需访问 API 的 Pod 设置automountServiceAccountToken: false

七、总结

Bound Service Account Token Improvements(特别是 KEP-1205 和 KEP-4193)彻底革新了 Kubernetes 服务账户认证机制,通过短期有效、对象绑定、受众限制和自动轮换等特性,大幅提升了容器环境的安全性与可管理性。对于云原生安全工程师、Kubernetes 集群管理员和应用开发者而言,掌握这一机制是构建安全可靠容器化应用的必备技能,尤其在涉及 Kubepot 蜜罐、RocketMQ 容器化应用和云服务集成等场景中,合理配置 Bound Service Account Token 能有效降低安全风险,实现精细化访问控制Kubernetes。

下一步建议:

  1. 升级集群至 1.24 + 版本,全面启用 Bound Service Account Token
  2. 迁移所有应用使用支持令牌自动轮换的客户端库
  3. 为关键服务配置自定义受众和对象绑定,强化访问控制
  4. 利用 KEP-4193 特性增强审计能力,提升集群安全态势感知

需要我把上述内容提炼成一份可直接执行的迁移与配置清单(含升级步骤、Pod 示例、kube-apiserver 参数、审计与监控指标、常见问题排查)吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1145634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI Agent在企业数据质量管理与治理自动化中的应用

AI Agent在企业数据质量管理与治理自动化中的应用 关键词:AI Agent、企业数据质量管理、数据治理自动化、数据质量评估、数据清洗 摘要:本文深入探讨了AI Agent在企业数据质量管理与治理自动化中的应用。首先介绍了相关背景,包括目的范围、预期读者等内容。接着阐述了AI Age…

灰狼优化算法(GWO)改进物理信息神经网络(PINN) - 光伏功率预测附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

k8s 各版本变更记录

https://kubernetes.io/zh-cn/releases/_print/

函数指针 + 结构体 = C 语言的“对象模型”?——从 C 到 C++ / Java 的本质统一

一、为什么 C 语言“没有对象”&#xff0c;却处处是对象&#xff1f;很多人说&#xff1a;C 是面向过程&#xff0c;C / Java 是面向对象。但你只要看过 Linux 内核、驱动、HAL、FFmpeg、libc&#xff0c;就会发现&#xff1a;&#x1f449; 到处都是 struct 函数指针。比如经…

2022蓝帽杯计算机取证

[蓝帽杯 2022 初赛]计算机取证[蓝帽杯 2022 初赛]计算机取证_1现对一个windows计算机进行取证&#xff0c;请您对以下问题进行分析解答。 从内存镜像中获得taqi7的开机密码是多少&#xff1f;F:\QZBS\volatility_2.6_win64_standalone\volatility_2.6_win64_standalone\volatil…

Node.js用AsyncResource追踪异步操作

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 Node.js异步追踪的革命&#xff1a;深度解析AsyncResource的实战应用目录Node.js异步追踪的革命&#xff1a;深度解析AsyncResou…

1. 2025 年终总结 PPT 愁死人?这 3 款 AI

又到了年终总结的时候&#xff0c;职场人都在为制作一份高质量的年终总结 PPT 发愁。多少个夜晚&#xff0c;我们对着空白的 PPT 页面发呆&#xff0c;不知道该如何搭建框架&#xff0c;内容写得干巴巴&#xff0c;设计出来的 PPT 又毫无美观度可言。好不容易完成一份&#xff…

麻雀算法SSA 差分算法DE GA遗传算法的光伏阵列参数辨识附matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

【数据集】中国杰出青年名单数据集(1994-2024年)

数据简介&#xff1a;国家杰出青年科学基金是我国在基础研究领域为优秀青年学者提供的最高层级人才资助项目。该基金专项用于支持已取得显著科研成果的青年学者&#xff0c;资助其自主开展创新性研究工作&#xff0c;着力培养一批能够跻身世界科技前沿的学术领军人才。本数据集…

圆度误差的神经网络评定及测量不确定度研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

【SCI创新】ASL-QPSO-SVM时序预测算法研究——基于动态非线性收缩扩张因子、正余弦惯性权重与莱维-贪婪融合策略附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

数字员工如何通过AI销冠系统与AI提效软件系统推动企业智能化升级

数字员工在企业中扮演着愈发重要的角色&#xff0c;尤其是在优化业务流程和降低成本方面。通过引入AI销冠系统&#xff0c;数字员工不仅能够提升工作效率&#xff0c;还能有效减少企业在人工服务上的投入。例如&#xff0c;数字员工借助该系统可以实现全天候客户响应&#xff0…

数字员工是什么?AI销冠系统与AI提效软件系统的价值在哪里?

数字员工作为一种创新的AI销售工具&#xff0c;正逐渐成为企业优化业务流程和降低运营成本的重要手段。通过自动化处理各类销售任务&#xff0c;数字员工能够显著提升工作效率。AI销冠系统的引入&#xff0c;使得企业在客户沟通中更加高效。这个系统能够自主完成客户外呼、满意…

【SCI二区IEEE复现】基于混合有限集模型预测控制(FCS-MPC)的模块化多电平换流器(MMC)整流电路仿真模型附Simulink仿真

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

Agent Skills (Claude Skills) 详细攻略,一篇文章精通

Agent Skills 最近非常的火&#xff0c;起初&#xff0c;它还只是 Claude 中一个小功能模块&#xff0c;就在最近两个月&#xff0c;越来越多的人觉得 Skills 非常的好用。所以 Codex、Cursor、Opencode 等 AI 编程工具&#xff0c;陆续加入了对 Agent Skills 的支持。 2025年1…

基于AHP-EWM正态云模型的初中地理教学评价附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1…

【SCI复现】高比例可再生能源并网如何平衡灵活性与储能成本?虚拟电厂多时间尺度调度及衰减建模附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 &#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真…

【无人机追踪】基于Dubin和候选集的无人机UAV集群协同攻击目标的Matlab仿真程序,围绕无人机的目标搜索、冲突避免、联盟组建和任务执行展开考虑能和

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f34…

学长亲荐9个AI论文平台,研究生高效写作必备!

学长亲荐9个AI论文平台&#xff0c;研究生高效写作必备&#xff01; AI 工具助力论文写作&#xff0c;高效与精准并存 在研究生阶段&#xff0c;论文写作是不可避免的挑战&#xff0c;而随着 AI 技术的不断进步&#xff0c;越来越多的工具开始融入学术研究中。AI 降重工具不仅能…

【SCI一区】【电动车】基于ADMM双层凸优化的燃料电池混合动力汽车研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…