Clarence Java DocClarence Java Doc
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
开发总结
Java
数据库
缓存
JVM
Spring
微服务
消息队列
高并发
分布式
高可用
设计模式
场景题
Netty
云原生
算法
系统架构
开发协议
IOT
人工智能
  • 系统架构
  • 数据冷热分离
  • 数据库CPU 100%
  • 团队 Git 规范
  • Lombok vs MapStruct
  • Object Storage Service
  • 幂等 方案总结
  • 团队开发手册
  • 软件设计架构
  • DDD 领域驱动设计
  • 访问控制模型
  • 打印日志最佳实践

访问控制模型

一、RBAC

二、ABAC

三、DAC

四、MAC

五、对比总结

访问控制模型用于管理用户对系统资源的访问权限。以下是 RBAC 与其他主流访问控制模型的对比:

模型全称核心概念优点缺点适用场景
RBAC (Role-Based Access Control)基于角色的访问控制权限分配给角色,用户通过角色获取权限
  • 权限管理简单
  • 适合大规模用户
  • 易于审计
  • 灵活性较低
  • 动态权限调整较复杂
  • 企业信息系统
  • 内部权限管理
  • 固定权限体系
  • ABAC (Attribute-Based Access Control)基于属性的访问控制权限由用户、资源、环境等属性动态决定
  • 高度灵活
  • 支持复杂策略
  • 适合动态环境
  • 实现复杂
  • 管理成本高
  • 云计算
  • 动态权限需求
  • 零信任架构
  • DAC (Discretionary Access Control)自主访问控制资源所有者决定访问权限
  • 简单易用
  • 灵活性高
  • 安全性较低
  • 权限易失控
  • 个人文件共享
  • 小型系统
  • MAC (Mandatory Access Control)强制访问控制系统强制实施访问策略,用户无法更改
  • 安全性高
  • 防止权限泄露
  • 管理严格
  • 灵活性差
  • 军事系统
  • 高安全需求场景
  • 关键对比

    1. RBAC vs ABAC

      • RBAC 适用于固定角色和权限结构(如企业部门权限)。
      • ABAC 适用于动态权限需求(如云服务、IoT设备访问)。
    2. RBAC vs DAC

      • RBAC 由管理员统一管理,更安全。
      • DAC 允许用户自主授权,灵活性高但安全性低。
    3. RBAC vs MAC

      • RBAC 适用于商业系统,灵活性较高。
      • MAC 适用于高安全级别系统(如政府、军事),权限严格受限。

    如何选择?

    • 需要简单、可管理的权限体系 → RBAC
    • 需要动态、细粒度的权限控制 → ABAC
    • 需要高安全性,防止权限扩散 → MAC
    • 需要用户自主管理权限 → DAC

    RBAC 是最广泛使用的模型,但现代系统(如云平台)越来越多地采用 RBAC + ABAC 混合模式 以提高灵活性。

    Last Updated:
    Contributors: Clarence, hello0709, Clarence
    Prev
    DDD 领域驱动设计
    Next
    打印日志最佳实践