3.9 KiB
由 SPIRE 替代 workload-sts
| 项目 | 内容 |
|---|---|
| 状态 | Accepted |
| 日期 | 2026-09-13 |
| 影响 | 停止 workload-sts 开发,不部署现有 PoC |
决策
停止实现和部署 workload-sts。workload identity 的签发、轮换、workload attestation 与 OIDC/JWKS federation 改由 SPIRE 提供;OpenBao 继续负责 secret、policy、动态凭据和 自身 token 生命周期。
仓库保留为设计和 PoC 历史,不删除代码,但不再接受功能开发。若未来出现 SPIRE 和目标 Resource Server 无法表达的、已经确认的 token transformation 或 credential materialization 需求,应基于实际用例重新立项,而不是恢复本规格。
原因
workload-sts 原计划自行实现:
验证 Kubernetes 或其他 workload credential
-> workload principal 映射
-> audience/scope 策略
-> 短期 JWT 签发
-> OIDC metadata/JWKS
SPIRE 已原生提供其中决定系统安全性的部分:
- SPIRE Agent 和 Server 执行 node attestation 与 workload attestation;
- Kubernetes workload 可按 namespace、ServiceAccount 等 selector 注册 SPIFFE ID;
- Linux、VM 和容器 workload 可使用 Unix、systemd、Docker 及相应 node attestor;
- workload 通过 SPIFFE Workload API 获取自动轮换的 X.509-SVID 或指定 audience 的 JWT-SVID;
- SPIRE OIDC Discovery Provider 发布 discovery document 和 JWKS,使支持 OIDC/JWT 的 Resource Server 可以直接信任 JWT-SVID;
- SPIFFE federation 与 OIDC federation 覆盖后续跨环境信任。
继续开发 workload-sts 会重复实现 attestation 后的身份签发、密钥轮换和 federation, 同时引入新的数据库、策略、签名服务和高价值网络端点,安全收益为负。
替代架构
面向 OpenBao 的基本流程为:
workload
-> local SPIRE Agent Workload API
-> JWT-SVID (sub = SPIFFE ID, aud = OpenBao audience)
-> OpenBao JWT auth
-> OpenBao client token
OpenBao 直接按受信 issuer、sub、audience 和 bound claims 映射 role/policy。本系统不再
需要 OAuth Token Exchange、内部 principal UUID、Transit JWT signing key 或自己的
JWKS endpoint。
Kubernetes、长期 Linux 主机、PVE VM 和 microVM 的具体 node/workload attestation 由 新的 SPIRE 基础设施项目设计。PVE/microVM 生命周期和 vsock metadata 仍属于平台项目, 不进入身份控制面。
不再保留的需求
OAuth scope 和集中式 CEL 策略原本作为未来扩展点,但当前没有必须由中间 STS 统一
表达的实际授权需求。OpenBao policy、Kubernetes RBAC 和各 Resource Server 继续负责
最终授权。
如果以后出现下列具体需求,再单独评估小型 broker:
- Resource Server 无法直接验证 JWT-SVID;
- 必须进行跨 trust domain 的 claim/token transformation;
- 必须返回非 JWT 凭据,且 OpenBao 或目标平台不能原生签发;
- 已有明确消费者需要 OAuth RFC 8693,而不能直接使用 Workload API。
仅有“未来可能需要 scope”不足以恢复 workload-sts。
后续工作
新的 SPIRE 项目需要决定:
- SPIFFE trust domain 与 SPIFFE ID 命名规范;
- SPIRE Server/Agent 的部署和高可用边界;
- Kubernetes、长期主机及 VM 的 node/workload attestor;
- registration entry 的声明式管理方式;
- OIDC Discovery Provider 的稳定 HTTPS issuer;
- OpenBao JWT auth role、audience 和 SPIFFE ID 映射;
- SVID TTL、key rotation、federation 与灾难恢复。