一、RBAC
RBAC模型概述
-
RBAC(Role-Based Access Control )基于角色访问控制,将权限的过程抽象概括为Who对What进行How访问操作,由Who,What,How构成访问权限三元组
-
Who:权限的主体,使用者
-
What:权限针对的对象
-
How:具体的权限,操作
RBAC模型组成
-
有三个组成部分,用户,角色,权限
-
User:用户,每个用户用唯一UID标识,并授予不同的角色
-
Role:角色,不同角色具有不同的权限
-
Permission:权限,包括操作和控制的对象
-
User-Role映射:用户和角色之间映射关系
-
Role-Permission映射:角色和权限之间映射关系
-
-
关系图
RBAC的4种模型
-
RBAC0
-
最基础的模型
-
用户和角色之间可以是多对多映射关系
-
角色和权限之间也可以是多对多映射关系
-
-
RBAC1模型
-
在RBAC0的基础上上引入了角色间的继承关系
-
角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承。
-
-
RBAC2
-
在RBAC0的基础上增加了角色的访问约束,即责任分离关系。
-
RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了 RBAC2 模型中用户的权限。
-
具体约束
-
互斥角色:同一用户只能分配到一组互斥角色集合中至多一个角色,支持责任分离的原则。
-
基数约束:一个角色被分配的用户数量有限。
-
先决条件角色:可以分配角色给用户仅当该用户已经是另一角色的成员,指要想获得较高的权限,要首先拥有低一级的权限。
-
运行时互斥:一个用户拥有两个角色,但在运行时只能激活其中一个角色。
-
-
-
RBAC3
-
包含了 RBAC1 和 RBAC2 既提供了角色间的继承关系,又提供了责任分离关系
-
适用的场景和资源
-
场景:企业数据
-
适用资源:客户信息
缺点
-
粗粒度和静态:RBAC仅基于用户角色来限制授权,而忽略其他显着属性,例如时间,位置或设备。它具有固定的访问权,没有临时更改的规定(例如:一个部门的工人临时分配给另一部门)。
-
角色爆炸:随着公司的扩展,通常会定义成千上万的相似但略有不同的角色。可能很难说出它们之间的差异或如何正确分配它们。此外,可能很难跟踪更改角色或离开的用户的角色,并且可能不会撤消不需要的权限,从而造成安全风险以及合规性和审核问题。
参考链接
【权限系统设计】ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景_小隐乐乐_InfoQ写作平台
二、ACL
ACL模型概述
-
acl是指控制访问列表,规定资源可以被哪些主体进行哪些操作。主要包含三个关键要素用户(User)、资源(Resource)和操作(Operate)
-
在ACL权限模型下,权限管理是围绕资源来设定的
-
可以对每个资源建立一个权限表,当一个用户想要对该权限进行操作时,需要查表来检测该用户是否具有相关的权限。
-
在粗粒度和相对静态的情况下比较容易维护
ACL模型的另外两种实现
DAC
-
dac自主访问控制,规定资源可以被哪些主体进行哪些操作同时,主体可以将资源、操作的权限,授予其他主体。是acl的一种具体的实现,具有很好的灵活性。在ACL的基础上,DAC模型将授权的权力下放,允许拥有权限的用户,可以自主地将权限授予其他用户。
-
适用场景
-
场景:文件系统
-
适用资源:人事培训文档
-
MAC
-
mac强制访问控制
-
规定资源可以被哪些类别的主体进行哪些操作
-
规定主体可以对哪些等级的资源进行哪些操作
-
当一个操作,同时满足a与b时,允许操作。
-
-
MAC是ACL的另一种实现,强调安全性。MAC会在系统中,对资源与主体,都划分类别与等级。比如,等级分为:秘密级、机密级、绝密级;类别分为:军事人员、财务人员、行政人员。
-
适用场景
-
场景:保密系统
-
适用资源:机密档案
-
参考链接
【权限系统设计】ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景_小隐乐乐_InfoQ写作平台
权限模型:ACL_yimtcode-CSDN博客_acl模型
三、ABAC
ABAC模型概述
-
ABAC 基于属性的访问控制,是通过实体的属性、操作类型、相关的环境来控制是否有对操作对象的权限。
-
不同于常见的将用户通过某种方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断
-
规定哪些属性的主体可以对哪些属性的资源在哪些属性的情况下进行哪些属性的操作
缺点
-
权限判断需要实时执行,规则过多会导致性能问题
-
规则如果稍微复杂一点,或者设计混乱,会给管理者维护和追查带来麻烦
-
定义权限时,不能直观看出用户和对象间的关系