第1章 授权测试基础概念:权限模型、角色与资源、操作与权限矩阵
适用场景
本知识点适用于以下测试与设计活动:
- 自主开发或第三方集成系统的授权模块功能测试
- 权限矩阵的静态审查与动态验证
- 基于角色的访问控制(RBAC)及属性基访问控制(ABAC)的用例设计前置分析
- 安全审计中权限模型合规性检查
前置条件
- 已获取系统授权架构设计文档或接口规范
- 明确至少一种权限模型(如RBAC、ABAC、DAC、MAC)
- 已列出系统内的核心资源与操作类型(增、删、改、查)
- 测试环境可模拟多角色登录与权限切换
操作步骤
-
识别权限模型
判定系统采用静态RBAC、动态RBAC或ABAC。例如:
模型类型: 层级RBAC 角色继承:admin → editor → viewer 约束:静态职责分离(SSD) -
枚举角色与资源
列出所有角色、资源(页面、API、数据域)及操作。示例角色:
Admin、Manager、Operator、Auditor;
示例资源:/api/users、/api/orders、/api/reports。 -
构建权限矩阵
将角色与资源+操作交叉填入矩阵,标记允许/拒绝。矩阵将作为后续测试用例的预期基准。 -
验证矩阵一致性
对照设计文档检查每项权限的授权依据(角色指派规则、约束条件),记录偏离项。
权限模型核心关系图
输入输出物
| 类别 | 输入物 | 输出物 |
|---|---|---|
| 模型 | 系统架构设计文档、安全需求规格 | 权限模型类型标注文档 |
| 角色与资源 | 角色清单、资源清单(API端点、页面路径、数据域) | 角色-资源映射表 |
| 矩阵 | 角色与资源+操作的交集定义 | 权限矩阵(JSON/CSV格式) |
矩阵格式示例(JSON)
{
"roles": {
"admin": { "resources": ["*"], "operations": ["*"] },
"manager": {
"resources": ["/api/orders", "/api/reports"],
"operations": ["read", "write"]
},
"operator": {
"resources": ["/api/orders"],
"operations": ["read", "update"]
},
"auditor": {
"resources": ["/api/audit-logs"],
"operations": ["read"]
}
}
}
责任边界
- 测试工程师:负责构建权限矩阵、设计覆盖模型各角色的测试用例、执行矩阵验证。
- 开发工程师:提供角色-资源-操作的接口列表和约束逻辑,配合矩阵审查。
- 安全架构师:确认权限模型的正确性,审核矩阵是否满足最小权限原则。
记录材料
- 权限矩阵审查记录表(包含角色、资源、操作、预期结果、实际结果、状态)
- 角色-资源映射图谱(建议使用 UML 或 ER 图)
- 模型决策记录:采用 RBAC 或 ABAC 的理由及约束说明
异常处理
典型异常场景及应对
- 角色未定义:要求开发补充角色枚举,在测试环境模拟临时角色并验证默认拒绝。
- 资源路径歧义:统一使用规范化 RUI(资源统一标识符),如
/api/v2/orders/{id}而非通配。 - 矩阵冲突:若同一角色对某资源既允许又禁止,按“拒绝优先”原则降级,并标记为设计缺陷。
验收标准
- 权限矩阵覆盖所有显式角色和核心资源(覆盖率 ≥ 95%)
- 矩阵中每项授权都有明确来源(设计文档或配置库)
- 通过静态审查,不存在未定义角色或资源导致的权限模糊
- 矩阵可转换为可执行的测试断言(例如 JSON 格式)
实践提示:在构建权限矩阵时,建议使用“否定优先”策略——先列出所有拒绝项,再补充允许项,可有效避免意外授权。
角色-操作-资源 快速参考表
| 角色 | 资源 | 创建 | 读取 | 更新 | 删除 |
|---|---|---|---|---|---|
| admin | 所有 | ✓ | ✓ | ✓ | ✓ |
| manager | /api/orders | ✓ | ✓ | ✓ | ✗ |
| operator | /api/orders | ✗ | ✓ | ✓ | ✗ |
| auditor | /api/audit-logs | ✗ | ✓ | ✗ | ✗ |