【权限系统设计】ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景

ACL 访问控制列表

规定资源可以被哪些主体进行哪些操作
场景:部门隔离 适用资源:客户页面、人事页面

在ACL权限模型下,权限管理是围绕资源来设定的。我们可以对不同部门的页面设定可以访问的用户。配置形式如下:

注:主体可以是用户,也可以是组。

在维护性上,一般在粗粒度和相对静态的情况下,比较容易维护。

在细粒度情况下,比如将不同的客户视为不同的资源,1000个客户就需要配置1000张ACL表。如果1000个客户的权限配置是有规律的,那么就要对每种资源做相同的操作;如果权限配置是无规律的,那么ACL不妨也是一种恰当的解决方案。

在动态情况下,权限经常变动,每添加一名员工,都需要配置所有他需要访问的资源,这在频繁变动的大型系统里,也是很难维护的。

在一些情况下,ACL也可应用于细粒度场景,接下来将介绍两种ACL的拓展。

DAC 自主访问控制

规定资源可以被哪些主体进行哪些操作 同时,主体可以将资源、操作的权限,授予其他主体
场景:文件系统 适用资源:人事培训文档

DAC是ACL的一种实现,强调灵活性。纯粹的ACL,权限由中心管理员统一分配,缺乏灵活性。为了加强灵活性,在ACL的基础上,DAC模型将授权的权力下放,允许拥有权限的用户,可以自主地将权限授予其他用户。

比如,在纯粹ACL模型下,每次新人培训,人事总监都要通知IT部,将培训文档的访问权限授予新人。在DAC模型下,人事总监只需将文档的访问权限授予人事专员。之后,每次新人培训,由人事专员将文档的访问权限授予不同的新人。

MAC 强制访问控制

a. 规定资源可以被哪些类别的主体进行哪些操作 b. 规定主体可以对哪些等级的资源进行哪些操作 当一个操作,同时满足a与b时,允许操作。
场景:保密系统 适用资源:机密档案

MAC是ACL的另一种实现,强调安全性。MAC会在系统中,对资源与主体,都划分类别与等级。比如,等级分为:秘密级、机密级、绝密级;类别分为:军事人员、财务人员、行政人员。

比如,一份机密级的财务档案,可以确保只有主体的等级是机密级,且是财务人员才能访问。如果是机密级的行政人员就无法访问。

所以,MAC的优势就是实现资源与主体的双重验证,确保资源的交叉隔离,提高安全性。

RBAC 基于角色的访问控制

a. 规定角色可以对哪些资源进行哪些操作 b. 规定主体拥有哪些角色 当一个操作,同时满足a与b时,允许操作。
场景:企业数据 适用资源:客户信息

RBAC的思想,来源于现实世界的企业结构。比如,销售角色,拥有查看客户信息的权限。当一个销售人员小王入职了,可以把销售角色赋予小王,那么小王就拥有了查看客户的权限。这种方式,避免了ACL模型下,每次新人入职,需要逐个配置资源表的情况。同样,权限变动也变得很方便,只要修改角色,即可实现多用户的权限修改。



RABC并不总能满足所有权限的场景。比如,我们无法对销售角色,进行个体定制。比如,销售角色拥有创建、删除的权限。如果我们要对销售小李,去掉删除的权限。那么,我们就必须创建另一个角色,来满足需求。如果这种情况很频繁,就会丧失角色的统一性,降低系统的可维护性。

角色和组两个概念可能会让人混淆,在这里做个区分:

  • 角色赋予的是主体,主体可以是用户,也可以是组
  • 角色是权限的集合
  • 组是用户的集合

ABAC 基于属性的访问控制

规定哪些属性的主体可以对哪些属性的资源在哪些属性的情况下进行哪些操作,
场景:防火墙 适用资源:端口访问

ABAC其中的属性就是与主体、资源、情况相关的所有信息。

主体的属性:指的是与主体相关的所有信息,包括主体的年龄、性别、职位等。
资源的属性:指的是与资源相关的所有信息,包括资源的创建时间、创建位置、密级等。
情况的属性:指的是客观情况的属性,比如当前的时间、当前的位置、当前的场景(普通状态、紧急状态)。
操作:含义还是一样,比如增删改查等。
设定一个权限,就是定义一条含有四类属性信息的策略(Policy)。

一个请求会逐条匹配策略,如果没有匹配到策略,则返回默认效果,默认效果可以根据场景定制,可以是默认拒绝或是默认允许。另外,匹配方式也可以根据场景定制,可以使用逐条顺序匹配,匹配到策略直接返回。也可以使用完全匹配,匹配所有的策略,如果有一个拒绝(允许),则拒绝(允许)。

阿里云的RAM访问控制运用的就是ABAC模型:
阿里云RAM策略配置表:

{"Version": "1","Statement":[{"Effect": "Allow","Action": ["oss:List*", "oss:Get*"],"Resource": ["acs:oss:*:*:samplebucket", "acs:oss:*:*:samplebucket/*"],"Condition":{"IpAddress":{"acs:SourceIp": "42.160.1.0"}}}]
}

ABAC可以发挥权限系统最大的灵活性,但在灵活的同时,如果不对策略加以管理,也有可维护性的问题。

【设计权限系统】ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景相关推荐

  1. 权限设计,设计模型分析(DAC,MAC,RBAC,ABAC) 之 RBAC

    一.什么是RBAC模型 RBAC是Role-Based Access Control的缩写,意为:基于角色的权限控制.通过角色关联用户,角色关联权限的方式间接赋予用户权限. 如下图: 为什么不直接给用 ...

  2. 访问控制模型总结(DAC MAC RBAC ABAC)

    访问控制模型 在项目中需要加入访问空值,于是对访问控制模型多了一些调研,介绍一些常见的访问控制模型. 访问控制模型三要素 主体(Subject) 指主动对其它实体施加动作的实体 客体 (Object) ...

  3. 访问控制模型(DAC,MAC,RBAC,ABAC)

    访问控制模型 项目中需要加入访问控制,对访问控制模型做了一些调研, 本文主要是介绍一些常用的访问控制模型. 基本要素 访问控制模型包括三个要素,即: 主体(Subject) 指主动对其它实体施加动作的 ...

  4. DAC MAC RBAC ABAC 权限系统的设计

    访问控制Access Control DAC (Discretionary Access Control) 自主访问控制,有权限的人可以给这个权限授权 MAC( Mandatory Access Co ...

  5. 干货 | B端产品如何设计权限系统?

    本文由作者 七牛 发布于社区 现代经济学理论认为,企业本质上是"一种资源配置的机制",其能够实现整个社会经济资源的优化配置,降低整个社会的"交易成本". 权限管 ...

  6. 复杂场景下的权限系统该怎么玩?ABAC权限模型帮你搞定它!

    ABAC授权模型 常用的授权模型 ABAC的访问控制 表达式语言 SpEL性能 ABAC实践 crud代码 security上下文 数据库设计 java程序 测试类 Spring Security 和 ...

  7. 万能通用!权限系统就该这么设计!

    大家好,我是老赵.今天给大家介绍一下权限系统的设计以及主流的五种权限模型. 权限管控可以通俗的理解为权力限制,即不同的人由于拥有不同权力,他所看到的.能使用的可能不一样.对应到一个应用系统,其实就是一 ...

  8. 权限系统就该这么设计(万能通用),稳的一批!

    权限管控可以通俗的理解为权力限制,即不同的人由于拥有不同权力,他所看到的.能使用的可能不一样.对应到一个应用系统,其实就是一个用户可能拥有不同的数据权限(看到的)和操作权限(使用的). 主流的权限模型 ...

  9. 权限系统就该这么设计,yyds

    这篇文章就来介绍一下权限系统的设计以及主流的五种权限模型. 权限管控可以通俗的理解为权力限制,即不同的人由于拥有不同权力,他所看到的.能使用的可能不一样.对应到一个应用系统,其实就是一个用户可能拥有不 ...

最新文章

  1. Codeforces Round #658 (Div. 2)部分题解
  2. nodejs-stream部分
  3. 若依项目linux部署
  4. php-fpm打开错误日志的配置
  5. mysql创建表时显示错误_MYSQL创建表出现错误 ERROR Code 1118如何解决
  6. 【Python】处理 TypeError: ‘FirefoxWebElement‘ object is not iterable
  7. [python教程入门学习]使用Python六步制作小鸟管道游戏(附源码)
  8. Python语言入门教程(一)
  9. 一键去除AutoCAD图形乱码的问题
  10. adb 查看固件版本
  11. 雷霆战机单机老版本_雷霆战机下载_雷霆战机电脑版单机游戏下载
  12. 虚拟机装域服务器的实训小结,虚拟机实训报告.doc
  13. 渗透测试工程师(NISP-PT)与网络安全运维工程师(NSP-SO)
  14. 嵌入式系统自动化测试工具
  15. 物联网大数据平台功能有哪些
  16. 内存碎片---内部碎片外部碎片
  17. 机器学习_深度学习毕设题目汇总——肿瘤
  18. 学计算机的能制造芯片,黑科技:木头造计算机芯片 还能降解
  19. 高等数学复习之二重积分
  20. 一文看懂「生成对抗网络 - GAN」基本原理+10种典型算法+13种应用

热门文章

  1. 计算机组成原理 光盘中试题答案,白中英计算机组成原理光盘上试题及答案.doc...
  2. 面试官:关于负载均衡你了解多少 | Nginx面试题 | Nginx架构
  3. av_register_all
  4. ZGC的运行过程以及读屏障
  5. 蓝桥杯嵌入式竞赛-数码管学习笔记(个人备份,以便日后查找)
  6. 谐振电路及品质因数(二)
  7. 安卓从入门到进阶第九章(自动亮屏)
  8. 足球经理java_足球经理2019高潜力球员有哪些?全妖人列表一览
  9. 微软“黑屏”被严重误读
  10. IPv6和IPv4共存技术之 ISATAP隧道技术