谈 Pomerium,最容易失真之处,常常出现在“VPN 替代”这一层口号里。这个说法有方向感,信息颗粒度却偏粗。更有用的入口要收得更窄一些。Pomerium 是一个身份感知访问代理,它试图把访问控制从网络位置挪到请求路径本身:先借助外部 IdP 完成身份校验,再跑一遍策略判断,随后决定一个具名 route 是否应该把流量转发给一个具名服务。[1][8]
这条设计线索之所以重要,是因为它和 NIST 在 SP 800-207 里写出的 zero trust 逻辑扣得很紧:保护对象是资源本身,并非网络分段;物理位置与网络位置都不自动生成信任;在企业资源会话建立之前,认证与授权都要先完成。[8] 顺着这个尺度回头读 Pomerium 的官方架构文档,整件事就会清楚很多。项目并不从“用户站在哪个子网里”起笔,它先问的是:用户是谁,策略允许什么,这条 route 应该把请求送往何处。[1]
配图说明:题图选用的是 Google 官方数据中心园区照片,而并非锁头图标或拓扑示意图。这样更贴合本文的讨论对象,因为文章关心的是现实基础设施环境里的访问控制:用户、代理、IdP 与上游服务如何在真实请求路径上对接。[10]
1)系统边界落在请求路径上,不落在子网里
Pomerium 的架构文档把核心流量形状写得很清楚。Proxy 服务先承接客户端请求,随后通过 gRPC 调用 Authorization 服务;若当前没有有效 session,它会把用户引向 Authentication 服务;session 数据再交给 Databroker;完成这些步骤之后,请求才会根据 route 配置被映射到上游服务。[1] 这几步连在一起,也就把项目最核心的设计交代清楚了。
放在运维语境里看,Pomerium 最适合保护那些能够被明确命名、明确建模的资源:内部 Web 应用、管理面板、SSH 或 TCP 端点、可以由策略描述的 route,以及带有独立登录流程的程序化访问入口。[1][4][5] 顺着官方文档与 NIST 的 zero trust 语境继续往前推,结论就会更明确:当团队希望身份与策略跟着每一次访问决定一起移动,而并非先把整片网络划成一个可信区域时,Pomerium 的形状会格外顺手。[1][8]
这也是它和传统 VPN 分野最清楚的地方。VPN 先解决 reachability,再把策略补在后面。Pomerium 把 route 本身设成策略对象。很多内部应用因此获得更清楚的访问边界,同时也要求团队把注意力放回 route、policy 与 upstream service 这些更细的对象之上,而并非依赖一整块被默认信任的区域。
2)Databroker 才是真正的有状态中心
在整个栈里,最值得细读的页面之一,其实是 persistence 文档。它解释了项目为何从以 cookie 为中心的旧路径转出来:单页应用会在 session 过期后直接失衡,已有 session 缺少集中可见性,组成员信息也会被锁死在 session 创建时刻。[2] 文档给出的答案就是 databroker。它成为权威状态存储,速度更高的服务保留本地缓存,或者在需要时实时查询它。[2]
这一点比“Pomerium 可以对接 Okta”或“Pomerium 支持 SSO”更能说明架构。这里看到的,并非一个简单挂在 Envoy 前面的无状态认证过滤层。它内部有一个控制状态中心,而这个中心的运行方式,会直接决定部署是否具备基础设施级的韧性。
官方文档对这条边界写得很直白:
- Databroker 默认走内存后端,部署轻,持久性与高可用都不成立;[2]
- 文件后端可以跨重启保留数据,单实例限制仍然存在;[2]
- Postgres 后端支持多个 Databroker 实例,也能跨重启保留状态,文档同时建议把 Pomerium 放进一个专用 Postgres 实例里,以换取更强的安全性与性能保证。[2]
真正的生产分界线就在这里。严肃部署不只关乎 IdP 怎么接、route policy 怎么写,也关乎团队愿不愿意把这个状态层当成真正的状态层来运行。Databroker 若停留在默认内存路径上,Pomerium 会是一套很好理解的演示系统,也会是一处脆弱控制点。把 Postgres 配上,把 session 当作耐久状态来管理,整套设计的质感才会真正转向基础设施级。[2]
3)它的安全模型对“分层”这件事有明确主张
Pomerium 的安全文档之所以值得看,正在于它给出的承诺很具体,而并非泛泛喊一句 zero trust。官方页面写明,Pomerium 会在把请求转发给上游服务之前主动剥离 _pomerium 认证 cookie,用意就是阻止认证token泄漏到后端服务中。[3] 这是一条很明确的分层规则。应用接收到的是一个已经过授权判断的请求,而并非代理自身拿来维持 session 的 cookie。
同一页文档还给出另一条非常有操作意义的边界:HTTP route 的授权粒度落在 request 级别,TCP 服务的授权粒度落在 session 级别。[3] 这件事在营销语境里很容易被抹平,在部署评审里却关键。HTTP 可以随着每个请求的头信息、route 上下文一起细粒度判断;更原始的协议则继承更粗的 session 粒度。项目依旧支持这些协议,执行尺度已经换了形状。[3][6]
外部信号也比常见的“信任中心”页面更有分量。Pomerium 公开发布过 Cure53 安全审计说明,并给出过“高影响问题已经在后续更新里修复”的公开表述。[9] 这并不等于软件天然自证安全,含义却很清楚:维护者愿意让项目接受外部审视,这种姿态比抽象口号更能说明问题。[9]
4)表面在变宽,中心没有漂移
Pomerium 到 2026 仍然值得看,一个重要原因在于它的功能表面在变宽,控制模型却没有被冲散。保留路径 /.pomerium 给项目留出了一整套内部端点:用户信息、登出、发现文档、JWKS 发布、设备注册,以及程序化登录 API。[4] 这些 route 都由代理自身接管,不会被原样转发给上游服务。[4] 这样一来,很多运维功能都能留在同一张架构图内,而不用散落成一堆附属 sidecar 与辅助服务。
程序化访问尤其能把这套逻辑照亮。官方文档描述的流程是:登录 API 先返回一个带签名的登录 URL,用户在浏览器里完成身份验证之后,客户端拿到一个不透明的 pomerium_jwt,随后用 Authorization: Pomerium ... 的形式把它带回被代理的端点。[5] 这并非附带的小功能,而是同一套设计哲学向 CLI 与自动化场景的延伸:身份先完成,route 级授权随后发生,token表达的是代理边界里的访问资格,而并非上游应用原生凭证体系本身。[5]
Routes Portal 也沿着同一方向往前走。文档把它定义成一个个性化页面,用户能在其中看到自己当前有权访问的全部 route;若 route 属于非 HTTP 资源,页面还会给出对应的 CLI 连接指令。[6] 顺着当前文档继续往下看,能看到的图景很统一:项目正在向 route 目录与访问入口扩展,心智模型依旧落在“离散资源”而并非“整片网络可达性”上。[4][6]
截至 2026 年 3 月 30 日,GitHub 上最新的稳定 release 是 v0.32.4,发布时间是 2026 年 3 月 17 日。[7] 这个版本本身属于增量修正,并没有重写项目中心。对于这类基础设施项目而言,这反而是更健康的维护信号。架构早已站住,后续问题落在维护者能否继续打磨细部,同时守住边界。[7]
5)适合它的边界,与会让它变紧的边界
当一个组织可以把访问描述成一组具名资源,并且希望在资源边缘由 IdP 驱动策略判断时,Pomerium 会非常合适。内部控制台、管理工具、开发者服务、需要通过 SSH 接入的主机,以及其他可以 route 化的服务,都很自然地落在这个模型里。[1][4][5][6]
另一种环境会把这套设计的紧度迅速放大出来:
- 访问目标更接近整片网络,而并非一组具名 route;
- 信任仍然主要依赖粗粒度网络区域;
- 管理员难以维持资源级命名与策略编排;
- 希望每一种协议都获得与 HTTP 相同的 request 级判断粒度。[3][8]
这并不构成项目缺陷,它只是让架构把自己的真实边界说得更清楚。
结尾
Pomerium 在 2026 最有价值的地方,不在“现代化安全访问”这类宽口号里。它真正交出来的是一套更收束的控制中心:请求路径、route 定义、Databroker 里的会话状态,以及那一次决定流量是否继续向前的策略判断。[1][2][3]
如果团队要保护的是一组具名资源,并且愿意把身份感知策略压到那个边界上,Pomerium 会是一套逻辑完整的 OSS 设计。若目标更接近普遍化网络可达性,同时又希望 route 建模尽量淡出视野,它带来的感受就会比宣传语更紧。这种紧度,也正是它值得细读的原因。
来源
- Pomerium 文档,《Architecture》:Proxy、Authenticate、Authorize 与 Databroker 之间的系统级与组件级请求流。
- Pomerium 文档,《Persistence & Data storage》:Databroker 的由来、后端取舍,以及 Postgres 作为生产边界的意义。
- Pomerium 文档,《Pomerium's Security Policy & Threat Model》:cookie 剥离、request 与 session 两种授权粒度,以及 TLS 规则。
- Pomerium 文档,《Special Routes》:保留的
/.pomerium端点、发现文档,以及程序化登录入口。 - Pomerium 文档,《Programmatic access》:带签名登录 URL 流程与不透明
pomerium_jwt的使用方式。 - Pomerium 文档,《Pomerium Routes Portal》:个性化 route 列表,以及非 HTTP 资源对应的 CLI 提示。
- GitHub API,
pomerium/pomerium最新 release 元数据:v0.32.4 于 2026 年 3 月 17 日发布。 - NIST Special Publication 800-207,《Zero Trust Architecture》:以资源为中心的访问模型,以及会话建立前完成认证与授权的原则。
- Pomerium,《Pomerium Completes Independent Security Audit by Cure53》:公开的 Cure53 审计说明与报告入口。
- Google Data Centers,《New Albany data center campus in central Ohio》:本文题图对应的官方照片来源。