Skip to content

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/ 全量译成中文:

每篇官方文档顶部都带「🔗 穿越源码分析」链接,点回本栏对应章节。

延伸阅读