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)。
2.2.2 典型应用与测试关注点
- 企业 ERP/OA 系统: 管理员、财务、人事、普通员工等角色。测试需关注角色权限矩阵、角色继承链、互斥角色(如财务与审计不可兼任)。
- 电商后台: 运营、客服、仓储、超级管理员。测试需关注角色数据权限隔离(如客服只能查看自己负责的订单)。
- 常见失败场景: 角色未分配、角色权限被篡改、会话中角色未激活、角色继承循环导致栈溢出。
2.3 ABAC:基于属性的访问控制
ABAC 通过评估主体属性、资源属性、环境属性和操作属性,由策略引擎动态判定是否允许访问。它解决了 RBAC 在细粒度场景下的不足。
2.3.1 模型结构
ABAC 的核心是策略(Policy)和规则(Rule)。一个典型的策略由条件(Condition)和效果(Effect)组成,支持布尔逻辑组合。
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 角色、请求属性 |