访问控制模型分类 静态动态权限控制
- 2018-12-03 17:37:00
- admin
- 原创 4462
一、访问控制模型分类
DAC(Discretionary Access Control)自主访问控制:
系统识别用户,根据被操作对象的权限控制列表(ACL: Access Control List)或者权限控制矩阵(ACL: Access Control Matrix)来决定用户能够对其进行哪些操作,例如读取或者修改。拥有对象权限的用户,可以将对象的权限分配给其他用户,所以称之为自主(Discretionary)控制。最常见的应用是文件系统的权限设计,如微软的NTFS。
DAC最大缺陷是权限控制比较分散,不便于管理,比如无法简单地将一组文件设置统一的权限开放给指定的一群用户。
MAC(Mandatory Access Control)强制访问控制:
MAC是为了弥补DAC权限控制过于分散的问题而诞生的。在MAC的设计中,每个对象都有一些权限标识,每个用户同样也有一些权限标识,用户能否对该对象进行操作取决于双方权限标识的关系,这个限制判断通常由系统硬性限制。比如影视作品中我们经常能看到特工在查询机密文件时,屏幕提示需要"无法访问,需要一级安全许可",这个例子中,文件上就有"一级安全许可"的权限标识,而用户并不具有。
MAC非常适合机密机构或者其他等级观念强烈的行业,但对于类似商业服务系统,因为不够灵活而不适用。
RBAC(Role-Based Access Control)基于角色的访问控制:
因为DAC和MAC的诸多限制,于是诞生了RBAC,并且成为迄今为止最为普及的权限设计模型。RBAC在用户和权限之间引入角色的概念,每个用户关联一个或多个角色,每个角色关联一个或多个权限,从而可以实现非常灵活的权限管理。角色可以根据实际业务需求灵活创建,省去了每新增一个用户就要关联一遍所有权限的麻烦。简单来说RBAC就是:用户关联角色,角色关联权限。另外RBAC还可以支持一些辅助特性:
1、角色继承、权限继承;
2、静态职责分离(Static Separation of Duty):用户无法同时被赋予有冲突的权限;
3、动态职责分离(Dynamic Separation of Duty):用户会话中无法同时被赋予有冲突的权限;
ABAC(Attribute-Based Access Control)基于属性的权限验证:
ABAC被一些人称为是权限系统设计的未来。不同于常见的将用户通过某种方式关联到权限,ABAC则是通过动态计算一个或一组属性是否满足某种条件进行授权判断。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前时间),操作属性(如读取)和对象属性(如一篇文章,又称资源属性),所以理论上能够实现非常灵活的权限控制,几乎能满足所有类型的需求。
二、静态动态权限控制
1、静态权限控制,使用用户、角色二元组表示用户权限;
2、动态权限控制,使用用户、角色、对象三元组表示用户权限;