核心组件

SPIRE Server

概述

SPIRE Server 是中央授权机构,负责:

  • 颁发和管理 X.509 和 JWT SVID

  • 维护注册条目(定义工作负载身份映射)

  • 存储信任包和已证明节点信息

  • 验证 Agent 的节点证明

启动流程

        sequenceDiagram
    participant Config as 配置加载器
    participant Server as SPIRE Server
    participant Catalog as 插件目录
    participant CA as CA 管理器
    participant Endpoints as API 端点
    
    Config->>Server: 加载配置
    Server->>Catalog: 初始化插件
    Catalog-->>Server: 插件就绪
    Server->>CA: 初始化 CA
    CA-->>Server: CA 就绪
    Server->>Endpoints: 启动 API 服务
    Endpoints-->>Server: 服务就绪
    Server->>Server: 启动后台任务
    

配置示例

server {
    bind_address = "0.0.0.0"
    bind_port = "8081"
    trust_domain = "example.org"
    data_dir = "/opt/spire/data/server"
    log_level = "INFO"
    
    ca_key_type = "ec-p256"
    ca_ttl = "24h"
    default_x509_svid_ttl = "1h"
    default_jwt_svid_ttl = "5m"
}

API 服务

服务

描述

Agent API

Agent 证明和 SVID 续期

Entry API

注册条目 CRUD 操作

Bundle API

信任包管理

SVID API

X.509 和 JWT-SVID 颁发

TrustDomain API

联邦信任域管理

SPIRE Agent

概述

SPIRE Agent 是节点本地守护进程,负责:

  • 向 Server 证明自身身份

  • 维护本地身份缓存

  • 在 Unix 套接字上暴露 Workload API

  • 持续从 Server 同步注册条目

  • 在 SVID 过期前自动轮换

启动流程

        sequenceDiagram
    participant Config as 配置加载器
    participant Agent as SPIRE Agent
    participant Storage as 本地存储
    participant Server as SPIRE Server
    participant Manager as 管理器
    participant API as Workload API
    
    Config->>Agent: 加载配置
    Agent->>Storage: 打开本地数据库
    Agent->>Agent: 初始化插件
    Agent->>Agent: 引导信任包
    Agent->>Server: 节点证明
    Server-->>Agent: 颁发 Agent SVID
    Agent->>Manager: 初始化管理器
    Agent->>API: 启动 Workload API
    Agent->>Agent: 开始同步循环
    

配置示例

agent {
    data_dir = "/opt/spire/data/agent"
    log_level = "INFO"
    trust_domain = "example.org"
    server_address = "spire-server"
    server_port = "8081"
    socket_path = "/tmp/spire-agent/public/api.sock"
}

Workload API

RPC

描述

FetchX509SVID

流式获取 X.509-SVID 和信任包

FetchX509Bundles

仅流式获取信任包

FetchJWTSVID

按需获取 JWT-SVID

FetchJWTBundles

获取 JWT 签名密钥

ValidateJWTSVID

验证 JWT-SVID

数据存储

支持的后端

  • PostgreSQL: 推荐用于生产环境

  • MySQL: 推荐用于生产环境

  • SQLite: 仅用于开发和测试

存储内容

  • 已证明节点信息

  • 注册条目

  • 信任包

  • CA 日志

配置示例

plugins {
    DataStore "sql" {
        plugin_data {
            database_type = "postgres"
            connection_string = "dbname=spire host=localhost user=spire password=secret sslmode=disable"
        }
    }
}

CA 管理器

职责

  • 生成和存储签名密钥

  • 颁发 X.509 证书和 JWT

  • 密钥轮换

密钥类型

类型

描述

ec-p256

ECDSA P-256 (推荐)

ec-p384

ECDSA P-384

rsa-2048

RSA 2048 位

rsa-4096

RSA 4096 位

下一步

了解 数据流 以理解数据在组件之间的流动。