本文为 SPIRE 官方文档 plugin_server_upstreamauthority_spire 的中文译本,以英文原文为准。
🔗 穿越源码分析:Server 详解 · UpstreamAuthority · 上游 CA 与无缝轮换
服务端插件:UpstreamAuthority "spire"
spire 插件使用从 Workload API 获取的凭据,去调用同一信任域(trust domain)内的一个上游 SPIRE server,请求一份中间签名证书(intermediate signing certificate),作为本 server 的 X.509 签名权威(signing authority)。
在嵌套(nested)配置中签发的 SVID 在整个信任域内都有效,而不仅限于产生该 SVID 的 server 范围内。
对于 X509-SVID,这很容易实现,得益于 X.509 所具有的链式(chaining)语义。另一方面,对于 JWT-SVID,这一能力是通过将每一个 JWT-SVID 公开签名密钥传播到整个拓扑来达成的。
该插件接受以下配置项:
| 配置项 | 说明 |
|---|---|
| server_address | 同一信任域内上游 SPIRE server 的 IP 地址或 DNS 名称 |
| server_port | 同一信任域内上游 SPIRE server 的端口号 |
| workload_api_socket | Workload API 套接字(socket)的路径(仅限 Unix;例如 SPIRE Agent 的 API 套接字) |
| experimental | 可能随时变更或移除的实验性(experimental)选项 |
以下是当前的实验性配置:
| experimental | 说明 | 默认值 |
|---|---|---|
| workload_api_named_pipe_name | Workload API 命名管道(named pipe)的管道名(仅限 Windows;例如 SPIRE Agent API 命名管道的管道名) | |
| require_pq_kem | 要求在 TLS 握手中使用抗量子(post-quantum-safe)的密钥交换方法 | false |
配置示例(Unix):
hcl
UpstreamAuthority "spire" {
plugin_data {
server_address = "upstream-spire-server",
server_port = "8081",
workload_api_socket = "/tmp/spire-agent/public/api.sock"
}
}配置示例(Windows):
hcl
UpstreamAuthority "spire" {
plugin_data {
server_address = "upstream-spire-server",
server_port = "8081",
experimental {
workload_api_named_pipe_name = "\\spire-agent\\public\\api"
}
}
}