权限控制模型全解:ACL、RBAC、ABAC、PBAC、DAC、MAC 的区别与场景
在现代企业系统、SaaS 平台、安全合规架构中,权限控制模型决定了系统如何定义、授予和限制用户访问资源的能力。本文全面讲解六种主流权限控制模型(ACL、RBAC、ABAC、PBAC、DAC、MAC),通过类比、优缺点分析和应用场景,帮助架构师和开发者选择合适的权限设计方案。
1️⃣ ACL(Access Control List)访问控制列表
🔍 核心思想:
每个资源上挂着一份“允许访问的用户清单”。
🧠 类比:
就像会议室门口贴着一份白名单——只列出可以进入的人员。
✅ 优点:
- 精确到资源级别
- 实现简单
❌ 缺点:
- 权限分散,不便统一管理
- 不支持继承、角色抽象
📌 适用场景:
- 文档管理系统(如 Notion、Trello)
- 多人协作平台
2️⃣ RBAC(Role-Based Access Control)基于角色的访问控制
🔍 核心思想:
- 权限授予“角色”,用户绑定角色,权限间接继承。
🧠 类比:
- 员工因职位不同(经理、员工、访客)自动获得权限。
✅ 优点:
- 结构清晰
- 权限易复用、好维护
❌ 缺点:
- 不支持资源级细粒度控制
- 逻辑不够灵活
📌 适用场景:
- 企业后台系统
- HR、ERP、CMS 系统
3️⃣ ABAC(Attribute-Based Access Control)基于属性的访问控制
🔍 核心思想:
- 根据用户、资源、环境属性组合判断是否授权。
🧠 类比:
- 系统根据“部门=财务部”+“资源类型=报表”+“时间<18:00”决定是否允许访问。
✅ 优点:
- 灵活、可表达复杂策略
- 动态授权
❌ 缺点:
- 配置复杂
- 策略测试困难
📌 适用场景:
- 多租户 SaaS 平台
- 需要“条件型”访问控制的系统
4️⃣ PBAC(Policy-Based Access Control)基于策略的访问控制
🔍 核心思想:
- 权限控制基于可编写、可复用的策略规则统一决策。
🧠 类比:
- 像是一个组织内部的“政策手册”,谁能干什么都要靠规则条文。
✅ 优点:
- 可集中统一控制
- 与 OPA、Casbin 等策略引擎集成良好
❌ 缺点:
- 策略抽象门槛高
- 不利于非开发人员维护
📌 适用场景:
- 多租户系统
- 零信任架构、安全平台
5️⃣ DAC(Discretionary Access Control)自主访问控制
🔍 核心思想:
- 资源所有者可自由决定谁能访问资源。
🧠 类比:
- 文件所有人设置“谁可以访问这个文件”。
✅ 优点:
- 用户理解成本低
- 灵活、授权简单
❌ 缺点:
- 无集中权限策略
- 易误授权
📌 适用场景:
- 文件共享系统
- 操作系统文件层权限(如 Linux)
6️⃣ MAC(Mandatory Access Control)强制访问控制
🔍 核心思想:
- 系统对资源和用户打标签,权限强制遵守安全等级策略。
🧠 类比:
- “最高机密”文件只能由“安全等级足够高”的人访问。
✅ 优点:
- 高安全性
- 不依赖用户行为
❌ 缺点:
- 灵活性差
- 不适用于业务系统
📌 适用场景:
- 军事、政府系统
- 金融核心平台
🧩 混合模型实践
在实际工程中,单一模型难以满足所有业务需求,常用组合包括:
- RBAC + ACL:结构化角色控制 + 精细化资源授权
- RBAC + ABAC:通过角色分配基本权限,用属性控制动态限制
- PBAC + ABAC + RBAC:大中台或多租户系统中的组合策略
✅ 模型对比速览表
- 模型 控制方式 粒度 灵活性 管理难度 推荐用途
- ACL 资源挂权限 精细 中 高 文档、协作平台
- RBAC 角色分权 中等 中 低 企业后台系统
- ABAC 属性判断 细粒度 高 高 SaaS 动态权限系统
- PBAC 策略语言 任意 极高 极高 合规系统、零信任平台
- DAC 所有者控制 简单 中 低 文件系统、私有资源
- MAC 安全标签 强一致 低 高 政府 / 金融 / 军事
📌 总结
每种权限模型有其特定优势与边界,选择模型应考虑:
系统角色是否稳定?→ 选 RBAC
是否有资源级差异访问?→ 加 ACL
是否动态/条件权限?→ 引入 ABAC
是否需要集中可审计策略?→ 上 PBAC
对复杂系统而言,组合模型更具可控性与灵活性。