权限访问控制即控制用户对资源或者服务的访问权限,目前流行的权限访问控制模型有以下几种。
MAC(Mandatory Access Control)
起初由政府和军方设计并使用, 它有非常严格的访问控制模型。
在MAC中, 所有的权限由管理员预定义, 并且由操作系统控制。
MAC实现了数据的权限分类(如重要的等级或安全的等级)和用户的权限分类(部门, 项目等), 这样在验证的时候就可以对比用户和数据的权限等级对应关系, 从而知道是否有访问权限。
很少会有只使用MAC的, 一般情况下会和其他的方法混合使用, 比如UNIX的文件系统使用了DAC, 但是root账号可以绕过这个访问控制模型不受限制。
DAC(Discretionary Access Control)
和所有数据和权限被操作系统控制不一样,这个允许用户控制自己的数据的访问权限。
根据用户的身份以及它们所属的分组来限制对对象的访问权限。
用户可以通过ACL定义什么人或什么等级的人可以访问什么资源, 每一个ACL都包含一个用户和组的列表, 以及它们的访问权限。
通常情况下, 系统管理员设置一系列常用的访问控制权限。
这里关键的是用户只能定义它们自己拥有的资源的访问权限。
RBAC(Role-Based Access Control)
RBAC通常被公司使用, 基于用户的职位给予访问权限。 这里权限被分配到公司里定义的角色上面。
RBAC中用户被分配一个角色, 而它只能拥有角色里包含的权限, 没有可以绕过的方法。
RBAC通过role分离了工作职责。
RBAC(Rule-Based Access Control)
权限的分配依据管理员预定义的规则。 每一个对象都有它自己的ACL(access control list), 操作系统检查用户是否拥有这个权限。
ABAC(Attribute-Based Access Control)
这个模型根据特殊的规则来分配权限, 这些规则组合了用户(users), 资源(resource)和对象(objects)的属性。
处理的逻辑是根据这个role和action的属性来判断, 不同的属性应该满足不同的要求。
Refer:
https://www.utilizewindows.com/overview-of-four-main-access-control-models/
https://resources.infosecinstitute.com/access-control-models-and-methods/#gref
https://medium.com/yellow-universe/access-control-models-review-of-types-and-use-cases-1f4c427b0cc2