Skip to content

本文为 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_socketWorkload API 套接字(socket)的路径(仅限 Unix;例如 SPIRE Agent 的 API 套接字)
experimental可能随时变更或移除的实验性(experimental)选项

以下是当前的实验性配置:

experimental说明默认值
workload_api_named_pipe_nameWorkload 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"
            }
        }
    }