应用级访问控制
传统方案在用户通过认证后把他放进一个网络平面,此后能碰到什么取决于网络拓扑。ztg 的授权粒度是「谁、用什么设备、在什么环境下、对哪个资源、执行哪个动作」,结论精确到单次访问,而不是一次性的网络入场券。
- 授权对象是资源与动作,不是网段
- 同一用户对不同应用的结论可以完全不同
- 新增应用不需要改动网络拓扑,只在控制面登记资源
ztg 的每一项能力都建立在同一个前提上:授权决策与数据转发物理分离。控制面只回答该不该放行,数据面只负责把已放行的连接转过去。
授权不是「认证通过就放行」。结论由六项输入共同决定,任何一项缺失都落到默认拒绝。
经统一身份认证,身份即权限主体
平台签发的设备证书与设备状态
短时效令牌,绑定用户与设备
被访问的应用、系统或数据对象
读取、写入、导出、打印等具体操作
时段、网络位置、风险评分等上下文
这六项输入构成的不是一次性的「入场券」,而是每一次访问都要重新回答的问题。建立加密通道只证明设备到达了网关,不产生任何资源权限。
把二次验证、人工审批、限制放行做成一等公民,策略就不必为了绕开二元模型的限制而写得扭曲。
策略条件全部满足。
身份、设备、会话、资源、动作、环境六项输入齐备且均符合策略。
条件不满足,或任一环节信息缺失。
默认结论。策略明确拒绝、输入不完整、评估服务不可用,都落到这里。
风险等级要求追加身份验证。
身份有效但当前环境的风险评分高于该资源的常规阈值。
敏感资源需要审批后才放行。
资源被标记为高敏感,或动作属于高风险类别(如批量导出)。
放行,但附加数据使用限制。
访问本身合理,但数据分类要求对下载、打印、剪贴板等动作设限。
每一项都可以单独评估,也可以组合使用。
传统方案在用户通过认证后把他放进一个网络平面,此后能碰到什么取决于网络拓扑。ztg 的授权粒度是「谁、用什么设备、在什么环境下、对哪个资源、执行哪个动作」,结论精确到单次访问,而不是一次性的网络入场券。
身份不只是「谁」,还包括「从哪台设备」。设备持有由平台签发的 X.509 证书,经双向 TLS 完成接入认证;加密通道的建立被强制绑定到「用户 + 设备 + 会话」三要素,缺任意一项都无法成立。
「放行 / 拒绝」不足以表达真实的访问策略。ztg 的决策模型有五个取值,把「需要二次验证」「需要人工审批」「放行但要限制」都变成一等公民,策略不必为了绕开二元模型的限制而写得扭曲。
把授权规则放进代码仓库,意味着每次调整都要过一次发布;把判定引擎放进数据库,意味着没人能审出「这次访问为什么被放行」。ztg 把两者拆开:引擎是版本化的策略代码,租户策略是可版本化、可干跑、可回滚的数据。
访问控制和数据防泄漏如果分成两套系统,就会出现「放行了但没管住」的缝隙。ztg 让两者共享同一套策略:授权评估在给出结论的同时,按数据分类与动作产出限制清单,由端点侧执行。
业务资源不向公网开放监听端口,攻击面收敛到网关本身。未通过授权的连接请求不会到达后端,端口扫描看不到可用服务——这是「先认证、后连接」的直接结果,不是额外的防护插件。
判定引擎是版本化的策略代码,租户策略是控制面里的数据。调整授权规则走控制面,带完整的安全闸门。
引擎与策略数据的版本号强制对齐。 控制面把策略文档编好下发,引擎拿文档里的版本号跟自己那份比对,不相等即拒绝评估——防止新版引擎配旧版策略文档,两边互相看不懂。
控制台走统一身份认证登录,按角色划分权限。所有写操作都有审计记录。
身份、设备、资源、会话的完整管理权限
策略编辑、校验、干跑与发布
只读访问决策记录与操作日志
控制台只做控制面编排:查看状态、编辑策略、管理身份与设备。它不参与数据转发,也不接触业务流量。