架构
慢路径决策,快路径转发
整个平台只有一条最核心的规则:授权决策与数据转发彻底分开。控制面可以慢、可以复杂、可以随时升级;数据面必须快、必须简单、必须没有可被利用的状态。
01 / 拓扑
一次访问经过什么
接入终端经加密通道到达网关。网关内部两个平面各司其职,业务资源不暴露公网入口。
02 / 边界
每个组件做什么,不做什么
把「不做什么」写进架构约束,比写「做什么」更能防止系统在演进中退化。
| 组件 | 所属平面 | 职责 | 明确不做 |
|---|---|---|---|
| 授权决策服务 | 控制面 | 校验会话与设备、富化上下文、评估策略、输出决策 | 不做任何数据包转发 |
| 代理与转发 | 数据面 | L4 / L7 代理、连接建立与转发 | 不实现业务授权逻辑 |
| 内核网络层 | 数据面 | 透明重定向、保留原始目的地址 | 不做授权判断 |
| 策略引擎 | 控制面 | 在授权决策时评估策略文档 | 不在数据路径上被调用 |
| 控制面服务 | 控制面 | 身份、设备、资源、会话、策略、审计 | 不接触业务流量 |
| 持久化与缓存 | 控制面 | 多租户隔离的数据存储与协调 | 数据路径不可访问 |
| 客户端 SDK | 端点 | 建立加密通道、执行端点侧限制清单 | 不参与网关的转发决策 |
这些约束不是建议。它们决定了系统在压力下和故障时的行为,任何为了短期便利绕过它们的改动都会在故障时刻暴露代价。
03 / 时序
新连接怎么被授权
授权只发生在新连接上。这是整条路径上唯一一次策略评估,也是唯一一次可能的拒绝。
- 终端发起连接 经加密通道到达网关,通道已绑定用户、设备与会话三要素。
- 内核重定向 按策略路由把流量交给数据面,保留原始目的地址。
- 转发前授权检查 数据面在建立连接之前,向控制面发起一次授权检查。
- 控制面评估 校验会话、设备与资源,调用策略引擎得出决策。
- 返回决策 放行 / 拒绝 / 二次验证 / 人工审批 / 限制放行。
- 执行 放行则建立连接并转发;否则连接在网关侧终止,不触达后端。
- 留痕 决策结果、策略标识与判定理由写入审计。
04 / 已建立连接
连接建好之后
已授权的连接直接转发,不再回调授权服务。这是性能的来源,也是撤销机制必须做实的原因。
-
不重复鉴权
已授权的连接直接走转发路径,不再逐包或逐请求回调授权服务。这是「慢路径决策、快路径转发」的直接含义。
-
决策带缓存
授权结论按 TTL 缓存,敏感资源的缓存时间更短。拒绝、二次验证与审批类结论不缓存。
-
撤销走推送
会话或设备被撤销时,控制面把事件推到各网关,本地缓存立即失效——不依赖缓存自然过期。
-
在途连接有明确处置
高敏感环境立即断开;普通资源可按策略做优雅收敛,让进行中的操作有个收尾窗口。
05 / 撤销
撤销怎么传到每个网关
撤销不能等到缓存过期。控制面把撤销事件推到各网关,本地缓存立即失效,下一次访问马上拒绝。
管理员撤销会话或设备 控制面发布撤销事件 各网关本地缓存失效 后续访问立即拒绝
推送通道中断时,已授权的连接不受影响,缓存内的决策继续生效——代价是撤销改为等待缓存过期。这是一个明确的权衡,不是被忽略的失败模式。
06 / 故障
每一类故障的落点
默认拒绝不是一句口号,它是每一条失败分支的落点。
- 15 ms 授权决策热路径 实测,目标 p99 < 50 ms
- 5.2 µs 控制面请求处理 不含策略评估
- 0 次 已建立连接 不重复鉴权,直接转发
- 0 条 降级放行路径 任一环节不可用一律拒绝
故障时的行为
默认拒绝不是一句口号,它是每一条失败分支的落点。下表是各类故障下的实际行为。
| 故障 | 行为 |
|---|---|
| 授权评估服务不可用 | 新连接拒绝;已建立连接继续转发 |
| 会话缺失、过期或已撤销 | 拒绝 |
| 资源未登记或不存在 | 拒绝 |
| 租户上下文不一致 | 拒绝 |
| 设备已撤销 | 拒绝 |
| 策略版本不匹配 | 拒绝评估 |
| 策略推送通道中断 | 已授权连接不受影响;缓存内决策继续生效,撤销改为等待缓存过期 |