本文为 SPIRE 官方文档 plugin_agent_nodeattestor_http_challenge 的中文译本,以英文原文为准。 🔗 穿越源码分析:Agent 详解 · NodeAttestor
Agent 插件:NodeAttestor "http_challenge"
必须与服务端 http_challenge 插件配合使用
http_challenge 插件通过 HTTP 进行握手(handshake),以确保 Agent 运行在一个有效的 DNS 名称上。
服务端 http_challenge 插件所生成的 SPIFFE ID 基于 Agent 的 DNS 名称。该 SPIFFE ID 形如:
xml
spiffe://<trust_domain>/spire/agent/http_challenge/<hostname>| 配置项 | 说明 | 默认值 |
|---|---|---|
hostname | 用于握手的主机名(hostname)。若未设置,将自动检测。 | |
agentname | 本主机上该 Agent 的名称。如果你在同一主机上有多个 Agent 分别绑定到不同的 SPIRE Server 并共享同一端口,该项会很有用。 | "default" |
port | 监听的端口。若未指定,将使用一个随机值。 | random |
advertised_port | 告知 Server 回调(call back)时使用的端口。 | $port |
如果 advertised_port != port,你将需要在这两个端口之间设置一个 HTTP 代理。如果你已经在 80 端口上运行了一个 Web 服务器,这会很有用。
一个示例配置:
hcl
NodeAttestor "http_challenge" {
plugin_data {
port = 80
}
}代理(Proxies)
假设你希望使用 80 端口进行校验,以便对互联网防火墙更友好。如果你已经在 80 端口上运行了一个 Web 服务器,或者希望让多个 Agent 使用不同的 SPIRE Server 却共用同一端口,你可以让你的 Web 服务器通过设置代理,将 /.well-known/spiffe/nodeattestor/http_challenge/$agentname 代理转发到 http://localhost:$port/.well-known/spiffe/nodeattestor/http_challenge/$agentname,从而转发给 SPIRE Agent。
一个 SPIRE Agent 配置示例:
hcl
NodeAttestor "http_challenge" {
plugin_data {
port = 8080
advertised_port = 80
}
}