黑石智算
产品 03 · 平台与底座 · 零信任接入

Zero

零信任网络接入平台

零信任网络接入:策略决策做到微秒级,端口默认不暴露。

零信任的核心不是「登录一次就放行」,而是每一次访问都要重新回答三个问题:这台设备现在还可信吗、这次操作该不该被允许、放行之后谁在看着。Zero 把这三件事拆成三段可测的工程件:终端算度量、边缘判策略、网关发限时凭证,最后所有动作都落到审计里。决策本身压到微秒级——不然零信任会变成运维最讨厌的那个中间件。

产品矩阵
  • PDP 决策 1.40 µs(L1 命中)
  • 31 个 crate · Rust 全栈
  • 923 个单测用例
  • 国密可选
Zero:一次访问的六个判定点一次访问的六个判定点1终端 Agent先在本机算:TPM / TCM 取硬件信任根、启动度量、系统与进程状态。2边缘 PDP三级缓存先答:L1 会话映射 → L2 策略键 → 都不中才进 OPA Rego。3判定与义务允许可附带义务(录屏 / 只读 / 限流);拒绝分直接丢弃与重定向蜜网。4运维网关放行才签 JIT 限时凭证,绑定资源、命令白名单与有效期,到期自动吊销。5目标资源未授权来源连端口都看不到:SPA 验证之后端口才开,且只开 30 秒。6审计落库SSH 命令逐条入库,高危命令命中即拦,脱敏后存档,事后可按人会话回溯。放行之后· JIT 限时凭证(绑定资源与命令)· 运维网关(沙箱内操作)· 目标资源(端口只开 30 秒)义务随放行一起下发:录屏 / 只读 / 限流拒绝之后· 直接丢弃(不回任何包)· DNAT 进数字孪生蜜网· 画像升级 + 审计留痕两条路都不静默:都要落一条审计
结构示意 · 六步是真实模块的调用顺序(agent-core → edge-pdp → ops-gateway)。悬停或点任一步看它做什么;右侧两条去向是判定之后的分支,不是并列功能。
1.40 µsL1 缓存命中的决策开销

同一会话再次判定直接返回上次结果;会话缓存 TTL 300 s、空闲 120 s 淘汰。

6.37 µsL3 OPA Rego 评估

策略编译成 Wasm 在网关进程内跑,不起 sidecar、不跨网络。

< 0.1 ms端到端决策

要求是 ≤ 20 ms,实测落在百微秒量级。

1000设备并发注册压测

200 req/s 持续 60 s、12,000 次请求 100% 成功,p99 2.71 ms。

决策 1.40 µs:三级缓存先答,OPA 兜底

零信任最容易被骂的地方是「加了它以后ssh都卡」。所以判定路径按「能不算就不算」排序:同一会话的结论直接复用,策略键命中只做一次哈希查表,两级都没命中才进 OPA 评估。策略仍然集中在一处维护(Rego),执行却发生在网关进程内,没有额外一跳。

Zero:三级缓存把 OPA 挡在后面L1 会话缓存1.40 µs命中:同一会话已在本网关判定过L2 策略缓存一次哈希查表命中:请求属性离散化后命中已有键L3 OPA Rego6.37 µs命中:前两级都未命中端到端< 0.1 ms含网关转发与度量校验L1 会话缓存1.40 µs命中条件同一会话已在本网关判定过这一层做什么会话结论直接复用:TTL 300 秒,空闲 120 秒即淘汰;设备或用户被改权时可定向失效。条长 = 相对开销(示意,非线性刻度)
结构示意 · 时延数字取源仓 README 的实测值(L1 1.40 µs / L3 OPA 6.37 µs / 端到端 < 0.1 ms)。点任一层看它的命中条件与失效口径。
为什么能这么快
  • 缓存按对象失效,不是只靠 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 分钟)——设备离线不代表它一直可信。分级之后直接生成微隔离规则,信任掉了不是只弹个告警。

Zero:信任分与它触发的防火墙规则信任分随「没有新度量」的时间衰减0.90.70.50.3060 min宽容期 5 minC 级 · ≥ 0.50A≥ 0.90B≥ 0.70C≥ 0.50D≥ 0.30F< 0.301.0 分 = 五维全部达标;离线不保持可信五维权重(Full 模式)硬件信任根0.25启动度量0.15操作系统完整性0.20应用状态0.15行为0.25C 级下发什么拒入站 22(SSH)/ 3389(RDP)只对设备实际监听的端口下发,v4 + v6 各一条。
结构示意 · 曲线按 scorer 的默认参数示意(宽容期 5 min、半衰期 30 min);点 A–F 看这一级会下发哪些微隔离规则,规则来自 microseg_rules_for。
三种 Agent 形态
Full 标准 Agent
TPM/TCM + IMA + 传感器全开,五维满配(0.25 / 0.15 / 0.20 / 0.15 / 0.25)。
Lightweight 轻量 Agent
只报身份与进程列表:硬件与启动两维权重归零,行为维提到 0.50 兜住判断。
GatewayProxy 网关代理
终端装不了 Agent 的场景,由边缘网关代为建立信任锚。
宽容期 5 分钟,半衰期 30 分钟

超过宽容期没有新度量,分数按 exp(-λt) 衰减,λ = ln2 / 30min;衰减后收到正常度量,EWMA 让它快速回升——掉分慢一点、回分快一点,是刻意的取舍。

分级到规则之间没有空档
  • 微隔离规则只针对设备真实监听的端口生成——设备没监听 22 就不会下发拒 22,避免堆无效规则。
  • 每条拒规则都要 v4 与 v6 双条:链是 inet 双栈,只匹配 IPv4 会让 IPv6 绕过。
  • 信任分下降触发的是防火墙规则变化 + 审计事件,不是一句「风险提示」。

端口从未打开过:SPA 单包敲门 + JIT 限时授权

零信任网关本身就是被攻击面。Zero 的做法是让服务端口默认不存在:客户端先发一个 97 字节的 UDP 单包(HMAC-SHA256 或国密 SM3 签名),验证通过才对该源 IP 开放端口,而且只开 30 秒。监听端口本身还按小时变频,扫描器连该敲哪个端口都不知道。人这一侧的权限同理:不常开,按需签发、到期吊销。

Zero:SPA 敲门与 JIT 临时授权运维终端(ztna-relay)边缘网关(edge-gateway)重放时序1. 敲门2. 验签3. 开门4. 隧道5. 转发6. 回收01申请点这里读这一步02审批点这里读这一步03签发点这里读这一步04自动吊销点这里读这一步点任一步读细节;点「重放时序」重播敲门动画敲门失败没有任何响应:扫描器拿不到 banner,也拿不到端口在不在。
结构示意 · 时序与参数取源仓:SPA 包 97 字节、重放窗口 30 s、端口只开 30 s、小时变频端口 62201 + HMAC % 1000。下方是 JIT 授权的四步生命周期。
97 B
单包大小
30 s
重放窗口
30 s
端口开放时长
1000
小时端口取值空间
JIT 授权的四步
01
申请
按目标设备、服务类型与时长发起,写清用途。
02
审批
审批人决定放不放行;不批就没有凭证可签。
03
签发
签发 JWT 凭证:绑定资源、有效期分钟数,restrictions 里 cmd: 前缀转成命令白名单。
04
自动吊销
签发时即注册到期任务,到点吊销;密钥轮换间隔可配(0 = 不轮换)。
边界写清楚
  • SPA 防的是「端口被发现」,不是「凭证被偷」:拿到有效 JIT 凭证的人仍要在有效期内用完。
  • NAT 后面的客户端 IP 可能被复用,开放窗口要按源 IP + 时间窗收敛,不可按网段放开。
  • 小时变频容忍 ±1 小时时钟偏移;终端的时钟漂移会影响敲门成功率,交接前先对时。

一次判定不只看身份:四模态授信 + 端侧异常检测

身份过了不等于这次操作安全。Zero 在边缘侧同时看四类证据——身份、行为、上下文、运行环境——再用策略决定怎么合:严格模式要求全部达标,加权模式看总分,宽松模式任一项过线即可,动态模式按当前威胁等级切换。规则之外还有一层端侧 ML:把会话抽成 18 维特征做自编码器打分,用来抓「规则允许但看起来不对」的访问。

Zero:四模态融合与端侧 ML 的三档融合四模态证据(点一条可模拟它掉分)身份0.92行为0.74上下文0.86运行环境0.65点击策略切换融合口径,右侧判定实时重算融合判定Weighted允许(可附带义务)加权总分 0.79 / 门槛 0.7加权总分 ≥ 0.70常规业务默认:允许某一维偏低,但总分要够。放行时若 ML 报警:追加录屏与只读命令Strict所有模态 ≥ 0.60Weighted加权总分 ≥ 0.70Lenient任一模态 ≥ 0.50Dynamic按威胁等级切换ML < 0.70按规则结论执行ML 0.70 – 0.90放行 + 强制义务ML ≥ 0.90覆盖为拒绝
结构示意 · 四路分数是为演示判定逻辑而设的示例值(点任一模态可把它拉到 0.45),策略与阈值取源仓 DecisionThresholds 的默认值 0.6 / 0.7 / 0.5。
18 维特征 × 自编码器重建误差

特征覆盖包大小均值/标准差、包速率、SYN 比例、目标端口多样性、每流字节数、每分钟操作数、操作间隔与标准差、突发次数、操作类型熵、非常见操作比例、时段、星期、当前信任分、设备类型、会话时长、地理偏离。推理引擎当前是纯 Rust 的 JSON 权重实现(未接 ONNX Runtime),训练脚本在 scripts/train_autoencoder.py。

ML 三档融合
< 0.70
按规则结论执行 · 正常流量,ML 不改判。
0.70 – 0.90
放行 + 强制义务 · 追加 RecordSession 与命令只读限制,事后必查。
≥ 0.90
覆盖为拒绝 · ML 覆盖规则里的 Allow;规则本身拒绝时永远优先。
融合层守的三条线
  • 融合层不认识「模态」这个词,只拿到四路分数;换采集器不用改策略。
  • ML 只做加法与覆盖放行:规则拒绝的流量不会再被模型「救回来」。
  • 端侧推理的意义是断网也能判;网关不可达时不至于全部放行。

放行之后还有四道:沙箱、审计、防泄漏、蜜网

零信任最容易漏的是「进来之后」。Zero 把运维动作也收进同一条链路:远程运维默认先进沙箱(Web 或容器),命令逐条审计,敏感数据在剪贴板与文件出口处被拦,扫描与异常行为不打回去而是引到数字孪生蜜网里继续观察。

Zero:放行之后的四道闸运维沙箱命令审计数据防泄漏蜜网与工控 DPI会话在容器里,不在你的终端里1两种形态:Web 沙箱(Guacamole)与 Docker 容器沙箱,同一套生命周期管理接口。2配置项是真实的:时长上限、USB 设备白名单(vendor/product/bus/device)、DLP 策略、屏幕水印。3会话结束容器回收;沙箱里能碰到的只有目标子网与白名单设备。页签切换是交互示意;四类能力共用同一份 DLP 与审计规则,不在两处各配一遍。
结构示意 · 四类能力各自独立部署:点页签切换。命令黑名单、DLP 规则与蜜网端口都取源仓常量,不是示意词。
执行点的动作不止「拦」
  • 执行点带熔断:连续 5 次失败后断开 30 秒,半开阶段只放 3 个试探请求——下游策略服务抖动不会拖死整个网关。
  • 限流与重定向都是「拒绝的软化形式」:能限速就不直接断,能进蜜网就不直接丢包。
  • 审计与沙箱共用同一份 DLP 规则,不在两处各配一遍。
每类闸门管什么
运维沙箱
会话在容器里,不在你的终端里
命令审计
8 类高危命令直接拦,3 次即告警
数据防泄漏
出口比入口更难守
蜜网与工控 DPI
打进来的流量不丢掉,送进孪生里看

策略要在多网关之间达成一致:BFT 共识 + 三种部署形态

边缘网关通常不止一台,策略下发最怕「两台网关判断不一致」。Zero 用轻量 BFT-2PC(Prepare / Vote / Commit)在网关之间同步策略,quorum 为 ⌊2n/3⌋+1,节点签名用 Ed25519,达不到 quorum 就不落库。规模定位很明确:N ≤ 7 的边缘网关,不是大联盟链。

Zero:部署形态与 BFT 策略共识Docker ComposeHelm ChartKubernetes Operator4 GB 内存 / 20 GB 磁盘即可跑通全栈;控制台在 8093,PG、Redis、NATS、Prometheus、Grafana 一起起。1234567在线 7 / 7需 5 票策略变更提交规则quorum = ⌊2n/3⌋+1,N=7 时为 5 票可提交:在线节点够数,Prepare → Vote → Commit节点签名用 Ed25519,签名不全即失败,不做尽力而为N ≤ 7 的边缘网关规模,不按大联盟链设计国密可选:SM2 签名 / SM3 摘要 / SM4-CTR + HMAC-SM3国际算法:ring(ECDSA / Ed25519 / AES-GCM)三种形态共用同一套策略与同一份审计;差别只在拉起方式与依赖是否托管。
结构示意 · quorum = ⌊2n/3⌋+1 取 bft-consensus/src/engine.rs 的实现;点任一节点模拟离线,看这次策略变更还能不能提交。
共识的三条硬规则
提交门槛
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 设备 / 200 req/s / p99 2.71 ms

测试条件是 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 试用

官网不提供安装包下载,也没有自助注册或系统登录入口。所有产品一律邮件申请试用:说明使用场景,我们回复开通演示环境或安排演示。