常用的访问控制权限模型DAC RBAC
文章目录
- 常用的访问控制权限模型DAC RBAC
- Linux 自主访问控制与强制访问控制
- 术语概念
- 存取访问控制 Access Control
- 自主访问控制
- 强制访问控制
- 基于角色的权限控制模型RBAC
- 模型管理方法
- RBAC0的管理命令
- RBAC0的系统支持方法
- RBAC0的高级审查持方法
Linux 自主访问控制与强制访问控制
术语概念
-
主体Subject,系统中能够发起行为的实体,比如人、进程、设备等。访问的发起者。
-
客体Object,被动的行为承受者,比如目录和文件等。访问的接受者。
存取访问控制 Access Control
是规范和控制各类主体访问本系统的客体的决策和实施过程。
存取访问控制的实现机制分为访问控制矩阵和多级访问控制,存取访问控制策略则可分为自主访问控制(Discretionary access control,简称DAC)和强制访问控制(Mandatory Access Control,简称MAC)。自主访问控制和强制访问控制一般分别基于访问控制矩阵和多级访问控制机制来实现。
自主访问控制
在计算机安全中,自主访问控制(英语:discretionary access control,缩写DAC)由《可信计算机系统评估准则》[1]所定义的访问控制中的一种类型。它是一种决定主体是否拥有权访问客体的一种访问约束机制,它是根据主体(如用户、进程或 I/O 设备等)的身份和他所属的组限制对客体的访问。所谓的自主指拥有访问权限的主体,可以直接(或间接)地将访问权限赋予其他主体(除非受到强制访问控制的限制)。
DAC是基于访问控制矩阵机制实现的,由于访问控制矩阵的庞大和维护性能低下,所以太一般使用访问控制矩阵的简化结果,即访问权限表(capablities List,简称CL)或访问控制表(Access Control List,简称ACL)来实现。
访问权限表是为每一个主体维护一张权限表,标明此主体可以访问客体的权限明细,使用较少。
访问控制表是为每一个客体维护一张权限明细表,标明此客体可以被哪些主体执行哪些权限,绝大数操作系统采用的自主访问控制。
区别:
- 鉴权的主体不同,CL针对主体,ACL针对客体。
- 保存的位置不同,CL保存在系统的最高层,用户和文件相关联的位置。ACL一般依附于文件系统。
- CL多用于分布式系统,ACL对用于集中式系统。
在Linux中的访问控制表,将用户划分为客体所有者和所有者同组用户,其他组用户也就是通过文件属性中的属主(拥有者)和属组(拥有组)进行分类。每类用户分别采用一个3位的二进制数来表示对其的存取权限,权限为读(r或者数字4),写(w或者数字2),执行(x或者数字1)。
典型755权限
文件所有者可读可写可执行,文件所属组用户可读不可写可执行,其他用户可读不可写可执行.
强制访问控制
将系统中的信息从安全等级和范畴集两方面进行管理,保证每个用户只能访问那些被标明可以访问的信息。
在强制访问控制机制下,每个主体与每个客体都拥有相应的安全属性(安全等级和范畴)。在主体访问客体时,会比较主体以客体的安全属性,并根据强制访问的规则,来确定是否允许主体访问客体。主体与客体的安全属性的配置是严格管理的,不是任何用户,通过简单的授权命令可以改变的。
多级安全策略
安全等级从高至低为:绝密级(Top Secret)、秘密级(Secret)、机密级(Condfidential)和公开级(Unclassified)四个级别。
范畴级与系统的应用领域及信息特征相关联。
BLP安全模型中的基本规则
- 规则一:一个主体对客体进行读访问的必要条件是,主体的安全级不低于客体的安全级且主体的范畴集包含客体的范畴集,主体只能向下读,不能向上读。
- 规则二:一个主体对客体进行写访问的必要条件是,客体的安全级不低于主体的安全级且客体的范畴集包含主体的范畴集,主体只能向上写,不能向下写。
基于角色的权限控制模型RBAC
Role-based Access Control 简称RBAC。基本思想是对系统操作的各种权限不直接赋予用户,在用户集合和权限集合之间增加一个角色集合,将用户与角色关联起来,角色与权限关联起来,通过角色来控制用户的的权限控制。
模型基于多对多原则设计
- 一个用户可以拥有多个角色
- 一个角色可以授予多个用户
- 一个角色可以拥有多个权限
- 一个权限可以被多个角色包含
NIST(美国国家标准与技术院)标准的RBAC拥有4级模型:
-
RBAC0:Core RBAC 基础模型
最少的元素集合。包含Users(用户)、Roles(角色)、Objects(控制对象)、Operations(操作)、Permissions(权限许可)五个基本数据元素。
此模型要求:
- 每个角色至少拥有一个权限
- 用户至少拥有一个角色
-
RBAC1:Hierarchal RBAC 角色层次模型
引入角色间的继承关系,关系分为一般继承关系和受限继承关系。一般继承关系允许角色间进行多继承。受限继承关系是进一步要求角色继承关系是一个树结构,实现角色间的单继承。
-
RBAC2:Constraint RBAC 角色限制模型
静态职责分离(SSD)关系与动态职责分离 (DSD) 关系
在此模型中增加了责任分离关系。约束规定了权限被赋予角色时,或者角色被赋予用户时必须遵守的强制性规则。
- 互斥角色:用户只能分配互斥角色集合中至多一个角色。
- 基数约束:一个角色被分配的用户数量有限;一个用户至多拥有多少个角色;一个角色被赋予的权限数量有限;以控制高级权限在系统中的分配。
- 先决条件角色:仅当用户拥有一个角色A,可以分配给角色B给用户;仅当角色拥有权限1时,才允许分配权限2给当前角色。
- 运行时互斥:一个用户同时拥有多个角色,在运行是不能激活多个角色。
-
RBAC3:Combines RBAC 统一模型
这个模型同时拥有RBAC1和RBAC2。即提供角色间的继承关系,又提供责任分离关系。
模型管理方法
RBAC0的管理命令
- 增加用户
- 删除用户
- 增加角色
- 删除角色
- 分配用户角色
- 删除用户角色
- 授予角色的许可
- 撤销角色的许可
RBAC0的系统支持方法
- 创建用户session
- 删除用户Session
- 添加激活用户角色
- 删除激活用户角色
- 检查角色的权限
- RBAC0的复查方法
- 检查角色分配的用户
- 检查用户分配的角色
RBAC0的高级审查持方法
- 检查角色分配的权限许可
- 检查用户分配的角色的权限许可
- 检查激活角色的Sessions
- 检查Session的选项许可
- 检查角色允许的对对象的操作
- 检查用户允许的对对象的操作