# 核心组件 ## SPIRE Server ### 概述 SPIRE Server 是中央授权机构,负责: - 颁发和管理 X.509 和 JWT SVID - 维护注册条目(定义工作负载身份映射) - 存储信任包和已证明节点信息 - 验证 Agent 的节点证明 ### 启动流程 ```{mermaid} 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: 启动后台任务 ``` ### 配置示例 ```hcl 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 过期前自动轮换 ### 启动流程 ```{mermaid} 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: 开始同步循环 ``` ### 配置示例 ```hcl 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 日志 ### 配置示例 ```hcl 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 位 | ## 下一步 了解 {doc}`/3.architecture/data-flow` 以理解数据在组件之间的流动。