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展示了从业务需求到模型落地的三层选型逻辑:

权限模型选型决策图谱 业务需求入口 权限条件 是否动态? 否(静态角色) RBAC 是(动态属性) 评估安全等级 ABAC 高安全等级 混合模型 中安全等级 选型说明 • RBAC:适合内部系统、管理后台,角色固定,权限变化不频繁。 • ABAC:适合金融、医疗等强监管行业,需根据用户/资源/环境属性精确动态鉴权。 • 混合模型:大型平台常用,用RBAC缩小空间,用ABAC做二次过滤。

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的动态权限。例如“项目经理只能查看本人项目”不应通过为每个项目单独创建角色实现,这会导致角色爆炸。正确做法是角色+上下文过滤——属于混合模型的简单实现。

1.6 本章小结