2. 权限模型基础:RBAC、ABAC、ACL 模型简介及其在企业系统中的典型应用

权限校验失败是业务系统中最常见的安全异常之一。要设计针对性的测试方案,首先必须理解企业级系统中主流的权限模型。本章将系统介绍 RBAC(基于角色的访问控制)、ABAC(基于属性的访问控制) 和 ACL(访问控制列表) 三种模型的核心原理、适用场景及典型应用。

2.1 三种权限模型核心概念对比

下表从定义、授权粒度、动态性、管理复杂度四个维度对三种模型进行横向对比,帮助测试人员快速建立认知框架。

对比维度 RBAC(基于角色) ABAC(基于属性) ACL(基于列表)
核心定义 用户 → 角色 → 权限 用户/资源/环境属性 → 策略引擎 → 权限 资源 → 用户/用户组 → 操作权限
授权粒度 粗粒度(角色级别) 细粒度(属性级别) 中粒度(资源实例级别)
动态性 静态,角色变更需管理员操作 高动态,运行时根据上下文实时计算 静态,列表变更需手动维护
管理复杂度 低,适合角色稳定的大型系统 高,策略规则维护成本大 中,资源数量多时列表膨胀
测试提示: 在权限校验失败测试中,RBAC 主要关注角色继承与互斥;ABAC 需重点测试属性缺失、属性越界及策略组合冲突;ACL 则需覆盖列表为空、列表溢出及默认拒绝行为。

2.2 RBAC:基于角色的访问控制

RBAC 是企业系统中最广泛采用的权限模型。其核心思想是将权限授予角色,再将角色授予用户,实现用户与权限的逻辑解耦。

2.2.1 模型结构

标准 RBAC 包含以下核心元素:用户(User)、角色(Role)、权限(Permission)、会话(Session)。角色之间支持继承(Hierarchical RBAC)和职责分离(SSD/DSD)。

RBAC 核心结构图 用户 (User) 角色 (Role) 权限 (Permission) 会话 (Session) 用户通过角色获得权限,会话激活角色子集,支持角色继承与互斥约束

2.2.2 典型应用与测试关注点

  • 企业 ERP/OA 系统: 管理员、财务、人事、普通员工等角色。测试需关注角色权限矩阵、角色继承链、互斥角色(如财务与审计不可兼任)。
  • 电商后台: 运营、客服、仓储、超级管理员。测试需关注角色数据权限隔离(如客服只能查看自己负责的订单)。
  • 常见失败场景: 角色未分配、角色权限被篡改、会话中角色未激活、角色继承循环导致栈溢出。

2.3 ABAC:基于属性的访问控制

ABAC 通过评估主体属性、资源属性、环境属性和操作属性,由策略引擎动态判定是否允许访问。它解决了 RBAC 在细粒度场景下的不足。

2.3.1 模型结构

ABAC 的核心是策略(Policy)和规则(Rule)。一个典型的策略由条件(Condition)和效果(Effect)组成,支持布尔逻辑组合。

ABAC 策略评估流程 主体属性 资源属性 环境属性 操作属性 策略引擎 策略集 + 规则引擎 允许 / 拒绝 策略引擎实时收集四类属性,与预定义策略规则匹配,输出最终决策 典型属性示例:用户部门、文档密级、访问时间、IP 地址、操作类型

2.3.2 典型应用与测试关注点

  • 云平台 IAM: 根据用户标签、资源标签、请求时间、源 IP 动态授权。测试需覆盖属性缺失、属性格式异常、策略优先级冲突。
  • 医疗信息系统: 医生只能查看自己科室患者的病历,且仅限工作时间。测试需关注时间边界、科室属性变更后的缓存失效。
  • 常见失败场景: 属性值越界(如年龄为负数)、策略规则循环引用、环境属性获取失败导致默认拒绝、策略引擎性能超时。

2.4 ACL:访问控制列表

ACL 是最直接的权限模型,每个资源维护一个列表,记录哪些用户或用户组拥有哪些操作权限。ACL 在文件系统和网络设备中应用广泛。

2.4.1 模型结构

ACL 由资源标识、主体标识、操作掩码三部分组成。典型实现包括 POSIX 文件权限和网络 ACL。

资源 主体 操作 效果
/project/report.pdf user:zhangsan READ, WRITE 允许
/project/report.pdf group:dev-team READ 允许
/project/report.pdf user:lisi READ 拒绝
/project/report.pdf group:intern ALL 拒绝

4.2.2 典型应用与测试关注点

  • 文件存储系统: 每个文件/目录独立维护 ACL。测试需关注列表顺序(先匹配原则)、默认拒绝、继承与覆盖。
  • 网络防火墙: 基于 IP/端口/协议的 ACL 规则。测试需关注规则冲突、空列表行为、通配符匹配。
  • 常见失败场景: ACL 列表过长导致性能下降、主体被同时加入允许和拒绝组、ACL 继承链断裂、通配符误匹配。
测试架构师提醒: 实际企业系统往往混合使用多种权限模型。例如,核心功能使用 RBAC 管理角色,数据级权限使用 ABAC 动态过滤,而文件附件使用 ACL 控制。测试方案必须识别系统采用的混合模型,并针对每种模型的边界设计独立的校验失败用例。

2.5 三种模型在企业系统中的典型组合

下表总结了三种模型在企业不同层级中的典型组合方式,帮助测试人员理解系统整体权限架构。

系统层级 推荐模型 典型应用 测试重点
功能菜单 RBAC 菜单可见性、按钮可用性 角色权限矩阵、角色继承
数据行/列 ABAC 部门数据隔离、密级过滤 属性缺失、策略冲突
文件/附件 ACL 文档库、共享目录 列表顺序、继承覆盖
API 接口 RBAC + ABAC 接口鉴权、参数级校验 Token 角色、请求属性