第4章 检查点二:角色权限矩阵覆盖度——矩阵完整、最小权限、交集检查

1. 适用场景

本检查点适用于以下场景:

  • 新建或重构B2B系统权限模型时,用于验证角色定义与权限分配的完整性。
  • 定期权限审计(季度/年度)中,确保矩阵覆盖无遗漏、权限集无过度授予。
  • 多系统、多租户环境下的权限收敛与整合阶段,用于消除角色间的隐蔽权限交集。
  • 人员岗位调整或组织架构重组后,对角色矩阵进行一致性复审。
提示: 矩阵覆盖度检查是权限体系从“可用”走向“可控”的关键拦路虎,必须在首次权限矩阵定稿后24小时内完成此检查。

2. 前置条件

  • 已完成角色定义清单,明确每个角色的名称、归属部门、岗位层级。
  • 已完成原子权限清单的梳理(包括功能权限与数据权限),并形成统一编码。
  • 已产出初版“角色-权限”映射矩阵(Excel或数据库表结构均可)。
  • 拥有可读取矩阵的工具(如权限管理平台、数据透视表、SQL查询终端)。

3. 操作步骤

  1. 矩阵完整性核对:对照角色清单,逐行确认矩阵中是否存在未分配任何权限的“空角色”,以及是否存在未在矩阵中注册的“幽灵权限”。
  2. 最小权限扫描:对每个角色,检查其权限集是否包含与该角色职责无关的原子权限。使用“职责-权限”对应表做差异化比对。
  3. 交集冲突分析:对矩阵进行笛卡尔积查询,找出任意两个不同角色之间共享的权限集合。区分“业务正常共享”与“违规重复授权”。
  4. 结果标记与修正:将发现的问题按严重程度标记为【阻断】、【非阻断】、【建议】,并分配给对应的责任角色进行整改。
关键操作示例(矩阵交集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个工时。
角色权限矩阵覆盖度检查流程图 开始:输入矩阵 ① 完整性核对 角色 vs 权限全量对账 ② 最小权限扫描 职责-权限差异分析 ③ 交集冲突分析 笛卡尔积查找共享 存在异常? 阻断/非阻断 异常处理(阻断/过滤) 挂起、回收、三方决策 验收:写入报告 完整性、最小权限、交集 结束:输出报告 说明 判定节点依据异常严重程度分流