← 返回笔记索引

权限治理两方案:异同与组合策略

主题:显式映射表单权限角色测试RBAC

方案 A(运行时约束):显式映射表(每个非公开 API 必须声明 permission + level + scope)。
方案 B(测试时验证):单权限角色对照测试(同一接口做“有权限/无权限”前后对比,测试后删除测试角色)。

相同点

不同点(核心)

维度 方案 A:显式映射表 方案 B:单权限角色测试
主要目标 保证“每条非公开 API 都有权限规则”,防漏配 验证规则是否真的生效,防误配
生效时机 线上运行时(请求进入 API 时) 测试阶段(CI / 本地测试)
防护对象 结构性漏洞:新接口忘记加权限 逻辑漏洞:权限写了但判断不正确
失败表现 未映射接口直接拒绝(Fail Closed) 测试失败阻止合并
维护内容 维护 method + path -> permission rule 映射 维护权限用例、测试账号/角色生命周期
治理成本 前期较高(补齐全量映射),后期稳定 持续成本(新增接口需补用例)

推荐结论

两者不是二选一,建议组合: 结论可概括为:
映射表 = 规则完整性单权限测试 = 规则正确性

测试角色清理规则(对应你关注点)

在方案 B 中,建议固定 teardown: 把清理动作放到 afterEach/afterAll,并加兜底脚本处理中断场景。
适用边界:公开接口(如 auth/public/webhooks)不纳入权限映射和权限断言;其安全边界由签名、限流、来源校验等机制负责。