访问控制模型概述(DAC,MAC,RBAC,ABBC)

访问

一· 自主访问控制(Discretionary Access Control,简称DAC)

1. 主体对它所属的对象和运行的程序拥有全部的控制权。

例如,Alice拥有一个叫mywork.doc的文件。她许可Bob和Sales group的成员来读这个文件,除此之外别的人都不可以。改进的DAC实现提供了一个基于“need-to-know”的访问授权的方法,默认拒绝任何人的访问。访问许可必须被显式地赋予访问者。

2. 被某个用户执行的程序拥有与该用户相同的权限

这意味着系统安全依靠运行的程序,因此,当一个程序中发生安全裂缝,会影响到该用户能访问的所有对象。这使得DAC在特洛伊木马前特别脆弱。例如,假设Alice对文件file1.doc拥有读写权限。Charlie,一个恶意攻击者,写了一个程序,这个程序在执行时生成文件file2.doc.这个程序授予Alice写权限和Charlike读权限。Charlie把这个程序伪装成合法的程序发给Alice。当Alice运行这个程序是,它就具有了和Alice相同的权限。它可以拷贝file1.doc到file2.doc,这样charlie就窃取了file1.doc的内容。如果一个管理员执行这个程序,攻击者会获取最大的特权,危害整个系统的安全。

二· 强制访问控制(Mandatory Access Control,简称MAC)

1. 在MAC这种模型里,管理员管理访问控制。

管理员制定策略,用户不能改变它。策略定义了哪个主体能访问哪个对象。这种访问控制模型可以增加安全级别,因为它基于策略,任何没有被显式授权的操作都不能执行。MAC被开发和实现在最重视保密的系统中,如军事系统。主体获得清楚的标记,对象得到分类标记,或称安全级别。

2. 安全标签

强制访问控制对访问主体和受控对象标识两个安全标签,一个是具有偏序关系的安全等级标签,另一个是非等级分类标签,他们是实施强制访问控制的依据,系统通过比较主体和客体的访问标签来决定一个主体是否能够访问某个客体。用户的程序不能更改它自己以及任何其他客体的安全标签,只有管理员才能确定用户和组的访问权限

安全标签是限制和附属在主体和客体的上的一组安全属性信息。举个例子就是,将军军衔的人可以访问部队的绝密数据,校尉级的只能访问部队命令数据,在一个部队的数据库中,分为绝密资料数据和普通军令数据,来了一个人,看到他的军衔是将军,那么它可以访问这两个数据库,如果看到他的军衔是大校,那么它只能访问普通军令数据库,军衔是主体的访问标签,数据的秘密等级是客体的访问标签

其实通过上面的例子可以简单的进行理解,在实际的应用中,有一个访问控制标签列表(ACSLL)是限定一个用户对一个客体目标访问的安全属性集合,就像把上面的例子列了一个表,现在来看,某个用户在请求访问一个客体时,,会判断它的安全级别是比请求的高还是低,如果低的话,拒绝访问,如果高的话可以访问。

3. 强制访问策略

强制访问策略将每个主体与客体赋予一个访问级别,就像上面的那个例子一样,强制访问控制系统根据主体和客体的敏感标记来决定访问模式,模式包括

  • 不上读(NRU),主体不可读安全级别高于他的数据;
  • 不下读(NRD),主体不可读安全级别低于他的数据
  • 不上写(NWU),主体不可写安全级别高于他的数据。
  • 不下写(NWD),主体不可写安全级别低于他的数据。

由于安全性,这种方式一直被军方所使用,下面讲述两种被广泛使用的强制访问控制安全模型

  • BLP模型:在BLP模型中,不上读,不下写,也就是不允许低安全等级的用户读取高安全等级的信息,不允许高敏感度的信息写入低敏感度的区域,禁止信息从高级别流向低级别,强制访问控制通过这种梯度的安全标签实现信息的单向流通
  • Biba模型:由于BLP模型存在不保护信息的完整性和可用性,不涉及访问控制等缺点,所以使用Biba模型作为一个补充,它针对的是信息的完整性保护,主要用于非军事领域,Biba模型使用不下读,不上写的原则来保证数据的完整性,在实际的应用中主要是避免应用程序修改某些重要的系统程序或系统数据库,这样可以使资源的完整性得到保障。也就是写,只能读上级发给他的命令,不能读他的下级接收到什么命令。
  • Chinese Wall模型:一般是用于多边安全系统(也就是多个组织间的访问控制系统)中的安全模型,应用在可能存在利益冲突的组织中,最初是为投资银行设计的。Chinese Wall安全策略的基础是客户访问的信息不会与目前他们可支配的信息产生冲突,Chinese Wall模型有两个基础主要属性: 用户必须选择一个它可以访问的区域和 用户必须自动拒绝来自其他与用户所选区域的利益冲突区域的访问。这种工作模式同时包含了DAC和MAC的属性,银行家可以选择为谁工作(DAC),一旦选择了之后,它就只能为这个客户工作(MAC),一个典型的例子就是防火墙内部与外网相连的一台服务器,假如这台服务器禁止转发数据,那么这台服务器就暴露在外网之中,也就是说该服务器只能与外网通信,不能与内部网络通信。

三· 基于角色的访问控制(Role Based Access Control,简称RBAC)

管理员定义一系列角色(roles)并把它们赋予主体。系统进程和普通用户可能有不同的角色。设置对象为某个类型,主体具有相应的角色就可以访问它。这样就把管理员从定义每个用户的许可权限的繁冗工作中解放出来。

基于角色的访问控制模型RBAC,有时成为基于规则的基于角色的访问控制(Rule-Based Role-Based Access Control,RB-RBAC)。它包含了根据主体的属性和策略定义的规则动态地赋予主体角色的机制。例如,你是一个网络中的主体,你想访问另一个网络中的对象。这个网络在定义好了访问列表的路由器的另一端。路由器根据你的网络地址或协议,赋予你某个角色,这决定了你是否被授权访问。

四· 基于属性的权限验证(Attribute-Based Access Control,简称ABAC)

不同于常见的将用户通过某种方式关联到权限的方式,ABAC则是通过动态计算一个或一组属性来是否满足某种条件来进行授权判断(可以编写简单的逻辑)。属性通常来说分为四类:用户属性(如用户年龄),环境属性(如当前时间),操作属性(如读取)和对象属性。

五· 实际使用

现代操作系统组合使用了上述的访问控制模型。尽管Windows NT没有实际使用RBMC,它使用内建的组实现了类似的模型,如Power Users,Server Operators,Backup Operators。管理员可以根据作业的行为增加额外的角色。拥有适当权限的用户可以分享资源,如文件和打印机,而且与DAC模型相应的,自主决定给与其它用户和组访问权。

六· 参考资料

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据