信任模型
信任域
什么是信任域?
信任域(Trust Domain)代表管理控制和身份颁发的边界。它由一个类 DNS 的名称标识(例如 example.org),是 SPIRE 颁发的所有 SPIFFE ID 的根。
信任域配置
信任域在 Server 和 Agent 中都需要配置:
Server 配置:
server {
trust_domain = "example.org"
}
Agent 配置:
agent {
trust_domain = "example.org"
}
信任包(Trust Bundle)
定义
信任包包含用于验证 SVID 的根 CA 证书和 JWT 签名密钥。
信任包类型
本地信任包: 本信任域的 CA 证书
联邦信任包: 其他信任域的 CA 证书
信任包管理
flowchart LR
subgraph "Server"
BM[包管理器]
DS[数据存储]
end
subgraph "外部系统"
S3[AWS S3]
GCS[GCP Storage]
FD[联邦域]
end
BM --> DS
BM --> S3
BM --> GCS
BM <--> FD
证明机制
节点证明
节点证明(Node Attestation)在 Agent 首次连接 Server 时建立 Agent 的身份。
支持的证明方法:
方法 |
描述 |
|---|---|
|
AWS 实例身份文档 |
|
Azure 托管服务身份 |
|
GCP 实例身份令牌 |
|
Kubernetes 投影服务账户令牌 |
|
一次性加入令牌 |
工作负载证明
工作负载证明(Workload Attestation)确定工作负载应该接收哪些 SPIFFE ID。
证明流程:
工作负载连接到 Workload API Unix 套接字
Agent 通过
peertracker确定工作负载的 PIDWorkloadAttestor 插件生成选择器
Agent 将选择器与缓存的注册条目匹配
Agent 返回相应的 X.509-SVID
联邦
概述
联邦允许不同信任域中的工作负载相互认证。
配置示例
server {
federation {
bundle_endpoint {
address = "0.0.0.0"
port = 8443
}
federates_with "partner.org" {
bundle_endpoint_url = "https://spire.partner.org:8443"
bundle_endpoint_profile "https_spiffe" {
endpoint_spiffe_id = "spiffe://partner.org/spire/server"
}
}
}
}
安全考虑
安全提示
保护信任域名称,避免泄露
定期轮换 CA 密钥
限制注册条目的创建权限
监控异常的身份颁发活动
下一步
了解 SVID 类型 以理解 SPIRE 支持的身份凭证类型。