Zero
零信任网络接入:策略决策做到微秒级,端口默认不暴露。
零信任的核心不是「登录一次就放行」,而是每一次访问都要重新回答三个问题:这台设备现在还可信吗、这次操作该不该被允许、放行之后谁在看着。Zero 把这三件事拆成三段可测的工程件:终端算度量、边缘判策略、网关发限时凭证,最后所有动作都落到审计里。决策本身压到微秒级——不然零信任会变成运维最讨厌的那个中间件。
- PDP 决策 1.40 µs(L1 命中)
- 31 个 crate · Rust 全栈
- 923 个单测用例
- 国密可选
同一会话再次判定直接返回上次结果;会话缓存 TTL 300 s、空闲 120 s 淘汰。
策略编译成 Wasm 在网关进程内跑,不起 sidecar、不跨网络。
要求是 ≤ 20 ms,实测落在百微秒量级。
200 req/s 持续 60 s、12,000 次请求 100% 成功,p99 2.71 ms。
决策 1.40 µs:三级缓存先答,OPA 兜底
零信任最容易被骂的地方是「加了它以后ssh都卡」。所以判定路径按「能不算就不算」排序:同一会话的结论直接复用,策略键命中只做一次哈希查表,两级都没命中才进 OPA 评估。策略仍然集中在一处维护(Rego),执行却发生在网关进程内,没有额外一跳。
- 缓存按对象失效,不是只靠 TTL 保底:invalidate_by_device / by_user / by_resource / 低于信任阈值,四条路径都直连缓存层。
- 策略语言是 OPA Rego,执行引擎是 Wasm——策略集中评审,执行留在数据面,避免每次判定跨一次网络。
- 执行点有四类动作:放行、拒绝、限流(按 Mbps)、重定向(进蜜网),不是一个二值开关。
- 限流按优先级分桶:高优 50%、中优 35%、低优 15% 的令牌配额,业务高峰期先保关键通道。
- 缓存实现
- moka(L1 / L2)+ DashMap 反向索引
- 策略引擎
- OPA Rego 编译为 Wasm,wasmtime 进程内执行
- 失效粒度
- 设备 / 用户 / 资源 / 信任阈值,另加 TTL 兜底
信任是连续量:五维打分、会随时间掉,也会自己长回来
「可信设备」不是一张白名单。Zero 按五个维度给每台设备打 0–1 的分:硬件信任根、启动度量、操作系统完整性、应用状态、行为。分数用 EWMA 平滑(α=0.3)以免抖动,超过宽容期没有新度量就开始指数衰减(半衰期 30 分钟)——设备离线不代表它一直可信。分级之后直接生成微隔离规则,信任掉了不是只弹个告警。
- Full 标准 Agent
- TPM/TCM + IMA + 传感器全开,五维满配(0.25 / 0.15 / 0.20 / 0.15 / 0.25)。
- Lightweight 轻量 Agent
- 只报身份与进程列表:硬件与启动两维权重归零,行为维提到 0.50 兜住判断。
- GatewayProxy 网关代理
- 终端装不了 Agent 的场景,由边缘网关代为建立信任锚。
超过宽容期没有新度量,分数按 exp(-λt) 衰减,λ = ln2 / 30min;衰减后收到正常度量,EWMA 让它快速回升——掉分慢一点、回分快一点,是刻意的取舍。
- 微隔离规则只针对设备真实监听的端口生成——设备没监听 22 就不会下发拒 22,避免堆无效规则。
- 每条拒规则都要 v4 与 v6 双条:链是 inet 双栈,只匹配 IPv4 会让 IPv6 绕过。
- 信任分下降触发的是防火墙规则变化 + 审计事件,不是一句「风险提示」。
端口从未打开过:SPA 单包敲门 + JIT 限时授权
零信任网关本身就是被攻击面。Zero 的做法是让服务端口默认不存在:客户端先发一个 97 字节的 UDP 单包(HMAC-SHA256 或国密 SM3 签名),验证通过才对该源 IP 开放端口,而且只开 30 秒。监听端口本身还按小时变频,扫描器连该敲哪个端口都不知道。人这一侧的权限同理:不常开,按需签发、到期吊销。
- 申请
- 按目标设备、服务类型与时长发起,写清用途。
- 审批
- 审批人决定放不放行;不批就没有凭证可签。
- 签发
- 签发 JWT 凭证:绑定资源、有效期分钟数,restrictions 里 cmd: 前缀转成命令白名单。
- 自动吊销
- 签发时即注册到期任务,到点吊销;密钥轮换间隔可配(0 = 不轮换)。
- SPA 防的是「端口被发现」,不是「凭证被偷」:拿到有效 JIT 凭证的人仍要在有效期内用完。
- NAT 后面的客户端 IP 可能被复用,开放窗口要按源 IP + 时间窗收敛,不可按网段放开。
- 小时变频容忍 ±1 小时时钟偏移;终端的时钟漂移会影响敲门成功率,交接前先对时。
一次判定不只看身份:四模态授信 + 端侧异常检测
身份过了不等于这次操作安全。Zero 在边缘侧同时看四类证据——身份、行为、上下文、运行环境——再用策略决定怎么合:严格模式要求全部达标,加权模式看总分,宽松模式任一项过线即可,动态模式按当前威胁等级切换。规则之外还有一层端侧 ML:把会话抽成 18 维特征做自编码器打分,用来抓「规则允许但看起来不对」的访问。
特征覆盖包大小均值/标准差、包速率、SYN 比例、目标端口多样性、每流字节数、每分钟操作数、操作间隔与标准差、突发次数、操作类型熵、非常见操作比例、时段、星期、当前信任分、设备类型、会话时长、地理偏离。推理引擎当前是纯 Rust 的 JSON 权重实现(未接 ONNX Runtime),训练脚本在 scripts/train_autoencoder.py。
- < 0.70
- 按规则结论执行 · 正常流量,ML 不改判。
- 0.70 – 0.90
- 放行 + 强制义务 · 追加 RecordSession 与命令只读限制,事后必查。
- ≥ 0.90
- 覆盖为拒绝 · ML 覆盖规则里的 Allow;规则本身拒绝时永远优先。
- 融合层不认识「模态」这个词,只拿到四路分数;换采集器不用改策略。
- ML 只做加法与覆盖放行:规则拒绝的流量不会再被模型「救回来」。
- 端侧推理的意义是断网也能判;网关不可达时不至于全部放行。
放行之后还有四道:沙箱、审计、防泄漏、蜜网
零信任最容易漏的是「进来之后」。Zero 把运维动作也收进同一条链路:远程运维默认先进沙箱(Web 或容器),命令逐条审计,敏感数据在剪贴板与文件出口处被拦,扫描与异常行为不打回去而是引到数字孪生蜜网里继续观察。
- 执行点带熔断:连续 5 次失败后断开 30 秒,半开阶段只放 3 个试探请求——下游策略服务抖动不会拖死整个网关。
- 限流与重定向都是「拒绝的软化形式」:能限速就不直接断,能进蜜网就不直接丢包。
- 审计与沙箱共用同一份 DLP 规则,不在两处各配一遍。
- 运维沙箱
- 会话在容器里,不在你的终端里
- 命令审计
- 8 类高危命令直接拦,3 次即告警
- 数据防泄漏
- 出口比入口更难守
- 蜜网与工控 DPI
- 打进来的流量不丢掉,送进孪生里看
策略要在多网关之间达成一致:BFT 共识 + 三种部署形态
边缘网关通常不止一台,策略下发最怕「两台网关判断不一致」。Zero 用轻量 BFT-2PC(Prepare / Vote / Commit)在网关之间同步策略,quorum 为 ⌊2n/3⌋+1,节点签名用 Ed25519,达不到 quorum 就不落库。规模定位很明确:N ≤ 7 的边缘网关,不是大联盟链。
- 提交门槛
- quorum = ⌊2n/3⌋+1;N=7 时是 5 票,N=3 时是 3 票。
- 消息三段
- Prepare → Vote → Commit;缺任一段或签名不全即失败,不做「尽力而为」。
- 降级路径
- 节点不足时进入降级流程,宁可暂停策略变更,也不让两台网关各判各的。
- 国际算法:ring(ECDSA / Ed25519 / AES-GCM / SHA-256)。
- 国密可选:SM2 签名、SM3 摘要、SM4-CTR + HMAC-SM3(Encrypt-then-MAC)。
- 密码学后端是 trait 抽象,切换走 feature flag,业务代码不改。
测试条件是 1000 台 Agent 并发注册并持续上报信任度量,注入 200 req/s 跑 60 秒、共 12,000 次请求:成功率 100%,均值 2.24 ms、p99 2.71 ms,服务端 CPU 峰值 9.3%。估算在当前硬件下要到 2000 设备 / 500 req/s 才见压力。
- 运行环境
- Linux(执行点依赖 nftables / eBPF);控制面可在 Docker Compose 或 Kubernetes
- 组件
- agent / edge-gateway(PDP + PEP)/ ops-gateway / ztna-relay
- 依赖
- PostgreSQL + Redis + NATS;策略用 OPA Rego
- 端口
- SPA 62201(UDP,小时变频)/ TLS 1.3 62202 / 控制台 8093
- 客户端
- Linux / macOS / Windows(ztna-relay 纯 Rust,无 nftables 依赖)
- 密码学
- ring 国际算法;国密 SM2 / SM3 / SM4 可选
- 端侧 ML 目前是纯 Rust 的 JSON 权重推理,未接 ONNX Runtime;模型要按现场数据重训,别指望开箱就对。
- 蜜网孪生仓库里只有 Modbus 与 OPC-UA 两份可构建镜像(Dockerfile + Python 服务),其余三种是端口与镜像约定。
- nftables 执行在非 Linux 平台是 Mock:macOS / Windows 只能跑控制面与 relay,真正的执行点必须落在 Linux 网关。
- 证书链当前按自签名证书解析;要接企业 PKI,需要按 CA 配置证书链,不能只换一张证书。
- BFT 共识面向 N ≤ 7 的边缘网关;超过这个规模应换成控制面集中下发,不要硬扩。
- 没有 TPM / TCM 的终端会降级为软件度量,硬件信任根那一维不可用——这是能力边界,不是配置项。
- 策略缓存与信任分级都不是「实时真相」:TTL 与失效路径决定了最坏情况下有多旧,敏感资源应该配更短的 TTL。
- 策略即代码
- Rego 文件进版本库、走评审;改策略和改代码同一套流程,不在控制台点出一份只存在于数据库的规则。
- 可核对而不只是可观测
- 决策带原因与命中层(L1 / L2 / OPA),审计带命令原文与脱敏后版本,便于复现一次判定。
- 密码学可替换
- 国际算法与国密走同一套 trait;换算法不动业务,也不要求客户换版本。
- 降级不静默
- 节点不足、策略服务异常、模型不可用都落到降级路径并留审计,不会悄悄放行。
- 规模说清
- BFT 面向 N ≤ 7;压测 1000 设备 / 200 req/s 的数字有条件和时间,页面写的是实测值不是容量承诺。
- 交付形态
- 私有化部署(Docker Compose / Helm);源码、部署脚本与单测一起交付,923 个用例是自证的一部分。
申请 Zero 试用
官网不提供安装包下载,也没有自助注册或系统登录入口。所有产品一律邮件申请试用:说明使用场景,我们回复开通演示环境或安排演示。