1. 权限模型选型场景:RBAC、ABAC、混合模型对比
权限模型是B端系统的安全基石。本章聚焦三种主流模型——RBAC(基于角色的访问控制)、ABAC(基于属性的访问控制)以及混合模型——的选型决策,从边界定义、适用业务规模、安全等级三个维度进行结构化对比,为后续角色与权限实体设计奠定基础。
1.1 模型边界定义
| 模型 | 核心判断依据 | 权限粒度 | 变更成本 |
|---|---|---|---|
| RBAC | 用户 → 角色 → 权限 | 角色级(静态) | 低 |
| ABAC | 用户属性 + 环境属性 + 资源属性 → 策略 | 属性级(动态) | 高 |
| 混合模型 | 角色缩小范围 + ABAC细化条件 | 混合粒度 | 中 |
选型第一原则:80%的B端SaaS场景可通过纯RBAC覆盖;只有需要按对象状态、时间、地域等动态条件鉴权时,才引入ABAC。
1.2 适用业务规模与安全等级对比
| 维度 | RBAC | ABAC | 混合模型 |
|---|---|---|---|
| 用户规模 | 1000人以内 | 1000~100000+ | 5000~100000+ |
| 角色数量 | 10~50 | 不限(策略驱动) | 50~200 |
| 安全等级 | 中(仅角色隔离) | 高(多维度条件) | 高(角色+属性双重校验) |
| 合规审计复杂度 | 低(角色清单清晰) | 高(策略组合爆炸) | 中(策略规则需统一管理) |
| 典型业务场景 | 内部CRM、OA、项目管理 | 金融风控、医疗病历、政务系统 | 大型电商平台、企业级ERP |
1.3 权限模型选型决策流程
以下SVG展示了从业务需求到模型落地的三层选型逻辑:
1.4 常见落地风险与验收标准
| 风险项 | 风险描述 | 验收标准 |
|---|---|---|
| 角色爆炸 | 为每个场景新建角色,导致角色数超过100个 | 单系统角色数≤50,且每个角色权限集合不重复 |
| 策略冲突 | ABAC策略未定义优先级,多条件冲突时鉴权失败 | 所有策略合法组合的鉴权结果可预期,覆盖所有重要条件对 |
| 性能劣化 | ABAC每次鉴权需实时计算属性,QPS下降超50% | 鉴权接口P99延迟≤100ms,缓存命中率≥90% |
| 审计缺失 | 模型变更无记录,无法追溯授权链路 | 每次角色/策略变更生成审计日志,支持按时间、用户、资源过滤 |
| 混合耦合 | RBAC与ABAC逻辑混写,维护困难 | 鉴权引擎分层:先角色后属性,两阶段日志可关联 |
1.5 选型权衡速查表
- 业务规模 < 5000人,角色数 < 30 → 优先RBAC,可配合简单用户组扩展。
- 业务规模 > 5000人,且权限条件可穷举 → 混合模型,用ABAC处理5%核心动态场景。
- 安全等级达到金融/医疗级别 → 必须ABAC,且需引入策略决策点(PDP)与策略信息点(PIP)分离架构。
- 团队运维能力有限 → 避免纯ABAC,选择受限ABAC(仅3~5个核心属性)。
常见误区:不要试图用RBAC的“角色”去模拟ABAC的动态权限。例如“项目经理只能查看本人项目”不应通过为每个项目单独创建角色实现,这会导致角色爆炸。正确做法是角色+上下文过滤——属于混合模型的简单实现。