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

访问控制模型

一、RBAC

(Role-Based Access Control)

二、ABAC

(Attribute-Based Access Control)

三、DAC

(Discretionary Access Control)

四、MAC

(Mandatory Access Control)

五、对比总结

1、基础信息对比

模型全称核心概念适用场景
RBAC基于角色的访问控制用户通过角色获取权限企业系统、部门权限管理
ABAC基于属性的访问控制基于属性动态判断权限云计算、零信任架构
DAC自主访问控制资源所有者决定权限文件共享、小型系统
MAC强制访问控制系统强制定义访问规则军事系统、高安全场景

2、优缺点对比

模型优点缺点
RBAC管理简单、易审计、适合大规模用户灵活性一般,动态调整不便
ABAC灵活性强、支持复杂策略实现复杂、成本高
DAC灵活、自主授权安全性低、权限易失控
MAC安全性高、防止权限泄露管理严格、操作灵活性差

六、关键对比

  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
打印日志最佳实践