权限系统的设计模式 ACL RBAC ABAC
ACL(Access Control List):访问权限列表 如:
user1-->AC1
user1-->AC2
user2-->AC1 此时权限汇总成一个列表
这种设计最常见的应用就是文件系统的权限设计,如微软的NTFS
对权限控制比较分散,不便于管理,比如无法简单地将一组文件设置统一的权限开放给指定的一群用户
RBAC(Role Base Access Control):基于角色的权限控制
与ACL 对比 RBAC不用给用户单个分配权限,只用指向对应的角色就会有对应的权限,而且分配权限和收回权限都很方便
如菜单权限的设计:用户与角色关联,角色与菜单关联
ABAC(Attribute Base Access Control) 基于属性的权限控制
不同于常见的将用户通过某种方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑)。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前时间),操作属性(如读取)和对象属性(如一篇文章,又称资源属性),所以理论上能够实现非常灵活的权限控制,几乎能满足所有类型的需求。
例如规则:“允许所有班主任在上课时间自由进出校门”这条规则,其中,“班主任”是用户的角色属性,“上课时间”是环境属性,“进出”是操作属性,而“校门”就是对象属性了。为了实现便捷的规则设置和规则判断执行,ABAC通常有配置文件(XML、YAML等)或DSL配合规则解析引擎使用。XACML(eXtensible Access Control Markup Language)是ABAC的一个实现,但是该设计过于复杂,我还没有完全理解,故不做介绍。
总结一下,ABAC有如下特点:
- 集中化管理
- 可以按需实现不同颗粒度的权限控制
- 不需要预定义判断逻辑,减轻了权限系统的维护成本,特别是在需求经常变化的系统中
- 定义权限时,不能直观看出用户和对象间的关系
- 规则如果稍微复杂一点,或者设计混乱,会给管理者维护和追查带来麻烦
- 权限判断需要实时执行,规则过多会导致性能问题
既然ABAC这么好,那最流行的为什么还是RBAC呢?
我认为主要还是因为大部分系统对权限控制并没有过多的需求,而且ABAC的管理相对来说太复杂了。Kubernetes便因为ABAC太难用,在1.8
版本里引入了RBAC的方案。
原文地址:https://blog.csdn.net/m0_37163942/article/details/83652065ABAC有时也被称为PBAC(Policy-Based Access Control)或CBAC(Claims-Based Access Control)。
相关文章
- .NET快速信息化系统开发框架 V3.2 -> WinForm“组织机构管理”界面组织机构权限管理采用新的界面,操作权限按模块进行展示
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2->WinForm版本新增新的用户权限设置界面效率更高、更规范
- RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2-> Web版本新增新的用户权限设置界面效率更高、更规范
- 推荐系统:概述【架构:用户/物品特征工程---->召回层---->排序层---->测试/评估】【常用特征:用户特征、物品特征】【评价指标:准确率、AUC】【冷启动问题、实时性问题】
- 系统权限远程线程注入到Explorer.exe
- 系统权限服务创建桌面进程(进程也是系统权限)
- 全网最全的权限系统设计方案,不接受反驳!
- JEECMS 系统权限设计
- 架构设计分享之权限系统(看图说话)
- 【win10系统、DOS环境下、设置CMD默认以管理员权限打开】方法
- SCM系统是什么?供应链管理系统有哪些优势?
- 数商云重金属行业渠道商销售系统:打破企业瓶颈,助力企业数智化转型
- 总结一下安装linux系统经验-版本选择-安装ubuntu
- Dynamics CRM2013 用户进入系统所必需的那些权限
- SSO - 我们为何需要单点登录系统
- 设计一个权限系统-RBAC
- 2018系统分析师案例分析真题背记内容
- Unity3d 编辑器(UNITY_EDITOR)最新全平台编译(#define 指令) 2021用于系统平台判定和(U3d)版本
- 用户管理 之 Linux 系统中的超级权限的控制
- Linux系统下UDP发送和接收广播消息小例子
- Linux局域网文件分享系统Samba
- 安卓系统权限修改(基于tiny4412开发板)
- Win10系统解决管理员权限问题