一、权限模型分类
1 MAC(Mandatory Access Control):
起初由政府和军方设计并使用, 它有非常严格的访问控制模型。
在MAC中, 所有的权限由管理员预定义, 并且由操作系统控制。
MAC实现了数据的权限分类(如重要的等级或安全的等级)和用户的权限分类(部门, 项目等), 这样在验证的时候就可以对比用户和数据的权限等级对应关系, 从而知道是否有访问权限。
很少会有只使用MAC的, 一般情况下会和其他的方法混合使用, 比如UNIX的文件系统使用了DAC, 但是root账号可以绕过这个访问控制模型不受限制。
2 DAC(Discretionary Access Control)
和所有数据和权限被操作系统控制不一样,这个允许用户控制自己的数据的访问权限。
根据用户的身份以及它们所属的分组来限制对对象的访问权限。
用户可以通过ACL定义什么人或什么等级的人可以访问什么资源, 每一个ACL都包含一个用户和组的列表, 以及它们的访问权限。通常情况下, 系统管理员设置一系列常用的访问控制权限。
这里关键的是用户只能定义它们自己拥有的资源的访问权限。
3 ACL(Acess Control List)
4 RBAC(Role-Based Access Control) 基于RBAC模型的权限验证框架与应用 Apache Shiro、spring Security、SELinux
RBAC通常被公司使用, 基于用户的职位给予访问权限。 这里权限被分配到公司里定义的角色上面。
RBAC中用户被分配一个角色, 而它只能拥有角色里包含的权限, 没有可以绕过的方法。
RBAC通过role分离了工作职责。
5 RBAC(Rule-Based Access Control)
权限的分配依据管理员预定义的规则。 每一个对象都有它自己的ACL(access control list), 操作系统检查用户是否拥有这个权限。
6 ABAC(Attribute-Based Access Control)
这个模型根据特殊的规则来分配权限, 这些规则组合了用户(users), 资源(resource)和对象(objects)的属性。
处理的逻辑是根据这个role和action的属性来判断, 不同的属性应该满足不同的要求。
7 PBAC(Policy-Based Access Control)
二、RBAC(Role-Based Access Control) 介绍
RBAC即角色访问控制(Role Based Access Control)
RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是“Who对What(Which)进行How的操作”。
Who:权限的拥用者或主体(如Principal、User、Group、Role、Actor等等)
What:权限针对的对象或资源(Resource、Class)。
How:具体的权限(Privilege,正向授权与负向授权)。
基于角色的访问控制方法(RBAC)的显著的两大特征是:1.由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销。2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。
1 RBAC 介绍
RBAC 模型作为目前最为广泛接受的权限模型。
RBAC0 RBAC1 RBAC2 RBAC3
NIST (The National Institute of Standards and Technology,美国国家标准与技术研究院)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(Core RBAC)、角色分级模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和统一模型RBAC3(Combines RBAC)[1]。RBAC0模型如图1所示。
图表 1 RBAC 0 模型
l RBAC0 定义了能构成一个RBAC控制系统的最小的元素集合
在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。
l RBAC1 引入角色间的继承关系
角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。
l RBAC2 模型中添加了责任分离关系
RBAC2 的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。
l RBAC3 包含了RBAC1和RBAC2
既提供了角色间的继承关系,又提供了责任分离关系。
建立角色定义表。定出当前系统中角色。
因为有继承的问题,所以角色体现出的是一个树形结构。
三、参考
The NIST Model for Role-Based Access Control: Towards A Unified Standard (paper) https://www.profsandhu.com/confrnc/rbac/rbac-nist(org).pdf
RBAC几种常见的控制权限模型 https://www.cnblogs.com/yangzailu/p/9760692.html
权限系统与RBAC模型概述[绝对经典] https://www.cnblogs.com/jpfss/p/11210694.html
常见的权限访问控制模型 https://www.cnblogs.com/helloz/p/11234101.html
Role-based access control https://en.wikipedia.org/wiki/Role-based_access_control
NIST RBAC model https://en.wikipedia.org/wiki/NIST_RBAC_model
(1) Rationale for the RBAC96 Family of Access Control Models https://www.profsandhu.com/confrnc/rbac/ratio(org).pdf
Overview of Four Main Access Control Models https://www.utilizewindows.com/overview-of-four-main-access-control-models/
RBAC即角色访问控制(Role Based Access Control) https://blog.csdn.net/huanghanzzz2006/article/details/1429678
权限分析文档 http://www.blogjava.net/anwenhao/archive/2006/11/21/82535.html?spm=a2c6h.12873639.0.0.1d385621kqY3tK
基于PBAC的统一权限管理平台设计与实现 http://www.ict.edu.cn/ebooks/b1/text/n20200601_21712.shtml
实现Demo:
RBAC(Role-Based Access Control )基于角色的访问控制(TP3.23) https://blog.csdn.net/Phplayers/article/details/76579557
基于角色的权限控制系统(role-based access control)https://www.cnblogs.com/silence-cho/p/9781237.html
权限系统与RBAC模型概述[绝对经典] https://www.cnblogs.com/jpfss/p/11210694.html
权限分析文档 http://www.blogjava.net/anwenhao/archive/2006/11/21/82535.html?spm=a2c6h.12873639.0.0.1d385621kqY3tK
RBAC权限管理模型 https://www.xiaoman.cn/detail/150