第4章 检查点二:角色权限矩阵覆盖度——矩阵完整、最小权限、交集检查
1. 适用场景
本检查点适用于以下场景:
- 新建或重构B2B系统权限模型时,用于验证角色定义与权限分配的完整性。
- 定期权限审计(季度/年度)中,确保矩阵覆盖无遗漏、权限集无过度授予。
- 多系统、多租户环境下的权限收敛与整合阶段,用于消除角色间的隐蔽权限交集。
- 人员岗位调整或组织架构重组后,对角色矩阵进行一致性复审。
提示: 矩阵覆盖度检查是权限体系从“可用”走向“可控”的关键拦路虎,必须在首次权限矩阵定稿后24小时内完成此检查。
2. 前置条件
- 已完成角色定义清单,明确每个角色的名称、归属部门、岗位层级。
- 已完成原子权限清单的梳理(包括功能权限与数据权限),并形成统一编码。
- 已产出初版“角色-权限”映射矩阵(Excel或数据库表结构均可)。
- 拥有可读取矩阵的工具(如权限管理平台、数据透视表、SQL查询终端)。
3. 操作步骤
- 矩阵完整性核对:对照角色清单,逐行确认矩阵中是否存在未分配任何权限的“空角色”,以及是否存在未在矩阵中注册的“幽灵权限”。
- 最小权限扫描:对每个角色,检查其权限集是否包含与该角色职责无关的原子权限。使用“职责-权限”对应表做差异化比对。
- 交集冲突分析:对矩阵进行笛卡尔积查询,找出任意两个不同角色之间共享的权限集合。区分“业务正常共享”与“违规重复授权”。
- 结果标记与修正:将发现的问题按严重程度标记为【阻断】、【非阻断】、【建议】,并分配给对应的责任角色进行整改。
关键操作示例(矩阵交集SQL查询逻辑):
-- 假设表 role_permission (role_id, perm_code)
SELECT a.role_id AS roleA, b.role_id AS roleB, a.perm_code AS shared_perm
FROM role_permission a
JOIN role_permission b ON a.perm_code = b.perm_code AND a.role_id < b.role_id
GROUP BY a.role_id, b.role_id, a.perm_code
ORDER BY shared_perm;
4. 输入输出物
| 类别 | 名称 | 格式 | 说明 |
|---|---|---|---|
| 输入 | 角色权限矩阵(初版) | Excel / CSV / 数据库表 | 包含所有角色及对应的完整权限编码列表 |
| 输入 | 角色职责清单 | 文档 / 表格 | 每个角色的职责描述、业务动作范围 |
| 输出 | 矩阵覆盖度检查报告 | PDF / HTML | 包含完整性漏洞、最小权限违规项、交集冲突列表 |
| 输出 | 交集冲突清单 | Excel | 每行展示一个冲突对及涉及的具体权限 |
5. 责任边界
- 权限架构师:主导矩阵概念完整性校验、最小权限标准制定、交集分析模型设计。
- 业务负责人:审核角色职责边界、确认权限归属合理性,对非阻断交集给出保留或裁撤决策。
- 安全审计员:监督整个检查过程的合规性,对阻断性问题出具审计意见。
- 系统运维:执行矩阵数据的导出、SQL查询、生成报告基础数据。
6. 记录材料
| 记录项 | 记录人 | 留存期限 |
|---|---|---|
| 矩阵完整性检查表 | 权限架构师 | ≥1个发布周期(含回滚) |
| 最小权限评审表 | 业务负责人 | ≥2个审计周期 |
| 交集冲突处理记录 | 系统运维 | 永久(权限架构变更前) |
7. 异常处理
- 异常A:矩阵缺失角色(空角色) → 立即挂起该角色上线,补充至少1个原子权限后再放行。
- 异常B:最小权限溢出(过度授权) → 标记为【阻断】,由权限架构师在24h内回收溢出权限,并通知相关用户。
- 异常C:交集冲突无法定性 → 召开三方共识会(业务、安全、架构),投票决定保留或拆分权限,记录会议纪要与决策依据。
- 异常D:数据准备不全 → 暂停检查,优先补全前置条件中的清单和映射表,不得无数据强行检查。
8. 验收标准
- 完整性:矩阵中每个角色至少拥有1个权限项,且所有权限项均可追溯至对应角色职责。
- 最小权限:90%以上的角色权限集与职责清单完全匹配,其余10%必须在备注中声明合理理由。
- 交集控制:不存在未经审批的跨角色权限共享;每个交集权限均关联一条业务流转规则或合规豁免记录。
- 报告时效:自启动检查至输出报告时间不超过16个工时。