SPIRE 源码解读
基于 SPIRE v1.15.2 源码的深度解读,聚焦"把机制讲透"。所有代码引用采用 文件路径:行号 格式(相对 SPIRE 仓库根),均经实际核对。
阅读方式:文中
pkg/server/ca/ca.go:33这类引用可在 SPIRE 仓库 对应版本查看。建议git clone --depth 1 https://github.com/spiffe/spire到本地对照阅读。
通读:架构与流程
| 文档 | 内容 | 适合 |
|---|---|---|
| 整体架构 | Server/Agent 双组件、启动装配、插件化 catalog、9 个 v1 API、方法级 OPA 授权、整体架构图与数据流 | 建立全局观 |
| SVID 颁发全流程 | 三条颁发链路(节点认证 → 工作负载认证 → CA 签名)的代码级走读,端到端时序图,关键函数速查表 | 搞懂"证书怎么签出来的" |
分组件 · 插件详解
SPIRE 的能力几乎都由插件提供。下面把代码按三大组件拆开,逐个插件类型详解(接口、内置实现、配置、关键代码走读):
| 组件 | 讲什么 |
|---|---|
| Server 详解 | spire-server 内部 + 全部 server 插件:NodeAttestor · KeyManager · UpstreamAuthority · DataStore · Notifier · BundlePublisher · CredentialComposer |
| Agent 详解 | spire-agent 内部 + 全部 agent 插件:NodeAttestor · KeyManager · WorkloadAttestor · SVIDStore |
| K8S Agent 详解 | Kubernetes 上的 agent 与两个 k8s 专属插件:节点认证 k8s_psat · 工作负载认证 k8s(其余复用通用 Agent) |
30 秒建立认知
- 两个二进制:
spire-server(信任域的信任根与控制面,持有/轮换 CA、签发 SVID)+spire-agent(节点本地守护进程,通过工作负载 API 把 SVID 下发给工作负载)。 - 一切皆插件:节点认证(NodeAttestor)、工作负载认证(WorkloadAttestor)、密钥管理(KeyManager)、上游 CA(UpstreamAuthority)、数据存储(DataStore)…… 内置与外部插件都走 gRPC。
- 核心安全思想:主体不能自证身份 —— 私钥在本地生成,但身份(SPIFFE ID)由 Server 依据"节点认证结果 / 注册条目"决定。
配套:官方文档中文版
源码解读讲为什么这么设计,官方文档讲每一项怎么配,两边对照最省事。本站已把 SPIRE 官方 doc/ 全量译成中文:
- 配置参考:SPIRE Server · SPIRE Agent
- 逐插件配置:源码文档总览 —— 覆盖全部 50+ 内置插件
每篇官方文档顶部都带「🔗 穿越源码分析」链接,点回本栏对应章节。
延伸阅读
- 想了解规范本身:SPIFFE 协议中文版
- 想做生产部署:高可用与大集群部署 · 云上落地 · 上游 CA 与无缝轮换