服务账户令牌(Service Account Token)
服务账户令牌(Service Account Token) 是什么?
服务账户令牌(Service Account Token)挂载在 Kubernetes Pod 中的 JWT 凭据,用于让工作负载向 API Server 以及信任集群身份提供方的其他服务进行认证。
Kubernetes ServiceAccount 代表由 Pod 使用的非人类身份。其关联的令牌是经签名的 JSON Web Token,在新版本中通过 TokenRequest API 投射到 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount/token,用于调用 API Server。Token 中包含 audience、过期时间、命名空间、Pod 等声明。由于令牌通过 RBAC 授权访问,一旦泄露后果严重:持有该令牌的攻击者可在 role binding 授权的范围内列出、修改甚至删除集群资源。最佳实践是使用绑定的、限定 audience 的短期令牌,在不需要时禁用自动挂载,将 role binding 配置为最小权限,并通过 OIDC、Workload Identity 或 IRSA 将工作负载身份联邦到云 IAM。
● 示例
- 01
Pod 通过 IRSA 使用 audience 为 "sts.amazonaws.com" 的投射 token 申请扮演一个 AWS IAM 角色。
- 02
攻击者逃逸出容器后读取 SA token,并以此进入 Kubernetes API。
● 常见问题
服务账户令牌(Service Account Token) 是什么?
挂载在 Kubernetes Pod 中的 JWT 凭据,用于让工作负载向 API Server 以及信任集群身份提供方的其他服务进行认证。 它属于网络安全的 云安全 分类。
服务账户令牌(Service Account Token) 是什么意思?
挂载在 Kubernetes Pod 中的 JWT 凭据,用于让工作负载向 API Server 以及信任集群身份提供方的其他服务进行认证。
服务账户令牌(Service Account Token) 是如何工作的?
Kubernetes ServiceAccount 代表由 Pod 使用的非人类身份。其关联的令牌是经签名的 JSON Web Token,在新版本中通过 TokenRequest API 投射到 Pod 的 /var/run/secrets/kubernetes.io/serviceaccount/token,用于调用 API Server。Token 中包含 audience、过期时间、命名空间、Pod 等声明。由于令牌通过 RBAC 授权访问,一旦泄露后果严重:持有该令牌的攻击者可在 role binding 授权的范围内列出、修改甚至删除集群资源。最佳实践是使用绑定的、限定 audience 的短期令牌,在不需要时禁用自动挂载,将 role binding 配置为最小权限,并通过 OIDC、Workload Identity 或 IRSA 将工作负载身份联邦到云 IAM。
如何防御 服务账户令牌(Service Account Token)?
针对 服务账户令牌(Service Account Token) 的防御通常结合技术控制与运营实践,详见上方完整定义。
服务账户令牌(Service Account Token) 还有哪些其他名称?
常见的别称包括: ServiceAccount Token, 投射的 SA Token。
● 相关术语
- cloud-security№ 600
Kubernetes 安全
对 Kubernetes 集群(API Server、控制平面、节点、工作负载与网络)的保护,防止配置错误、被攻陷以及横向移动。
- cloud-security№ 596
kube-bench
Aqua Security 推出的开源工具,可自动按照 CIS Kubernetes Benchmark 检查 Kubernetes 集群的配置。
- cloud-security№ 601
Kubescape
由 ARMO 开发的开源 Kubernetes 安全平台,用于扫描集群、清单和镜像中的错误配置、漏洞与策略偏移。
- cloud-security№ 1248
工作负载身份
为服务、容器或函数分配的加密身份,使其无需长期共享密钥即可对其他系统进行身份认证。