角色权限不够用了:ABAC 国标把"谁能干什么"拆成了三层属性

角色权限不够用了:ABAC 国标把

一、这份国标解决什么问题

GB/T 47697-2026《网络安全技术 鉴别与授权 基于属性的访问控制模型与管理规范》只做三件事:确立基于属性的访问控制(ABAC)模型、规定管理要求、描述对应的测试方法。适用范围写得很明确——网络应用机构、网络安全产品和服务提供商在规划、设计、开发、建设 ABAC 系统时用,也可供测评和监管参考。

换句话说,它不是一本"产品说明书",而是一套统一语言:让甲方描述需求、乙方交付系统、第三方做测评时,说的是同一件事。

二、ABAC 的判定逻辑:属性进、策略算、结果出

标准把 ABAC 定义为:根据分配给主体、客体的属性,环境属性,以及基于这些属性制定的一组策略,来判定主体对客体执行操作的请求是否允许。拆开就是四个概念:

概念标准定义要点
属性可被策略调用、用于控制客体访问权限的特征信息;包括主体属性、客体属性、环境属性,以及策略中用于控制访问的其他属性;以"名称-值对"形式定义
基于属性的访问控制依据主体/客体属性、环境属性与策略组,判定操作请求是否允许的访问控制方法
属性授权机构负责授权属性信息的创建、发布与管理的机构
策略执行访问控制决策所遵循的规则;由一组规则、一种规则组合算法标识等构成

三个属性维度里,"环境属性"是最容易被忽略、也最能体现 ABAC 价值的一层。它让"什么时间、从哪个网络位置、用什么设备"这类条件进入判定,而不再只看"你是谁"。

三、和角色权限的根本差别

角色模型(RBAC)把权限挂在角色上,人的权限等于角色权限的并集——角色一多,权限就膨胀,最后没人说得清某个角色到底能碰什么。ABAC 则把权限判断从"静态分配"改成"每次请求现算":主体属性 + 客体属性 + 环境属性 + 策略,四个输入决定一个结果。

代价也很直接:每次访问都要做一次策略评估,系统复杂度和性能开销都会上升。所以 ABAC 更适合权限规则复杂、合规要求高的场景,而不是所有系统都值得上。

四、真正的难点在"属性从哪来"

标准单独定义了"属性授权机构",这不是偶然。属性不是凭空产生的:部门、职级、项目归属来自 HR 系统,密级来自数据治理,设备与网络位置来自终端管理和网关。属性一旦失真,再精巧的策略也是错的。

落地时最常卡住的三个地方:

  1. 属性来源不统一。同一个"部门"在三个系统里三种写法,策略匹配直接失效,需要先做属性标准化。
  2. 授权机构缺位。谁有权发布"这个人是财务部"这条属性?没人负责,属性就会随意变更且无法追溯。
  3. 策略不可测。标准专门描述了测试方法,就是因为策略组合容易产生冲突和覆盖,必须靠用例验证而不是靠人工评审。

五、如果你要做选型或自评

  • 先问模型覆盖:系统是否支持主体、客体、环境三类属性,还是只做了"用户-资源"两元组。
  • 再问策略治理:策略的编写、评审、发布、回滚有没有流程,冲突检测怎么做。
  • 最后问可测性:能否给出决策日志——这次放行是基于哪几条属性、哪条规则,出问题能不能复盘。

ABAC 不是"更高级的权限表",而是把访问控制从配置工作变成治理工作。想清楚谁来管属性,比选哪家产品更重要。