一、访问控制模型
目的:1、为用户对系统资源提供最大限度共享的基础上,对用户的访问权进行管理,防止对信息的非授权篡改和滥用。
2、保证用户在系统安全策略下正常工作,拒绝非法用法的非授权访问请求,拒绝合法用户越权的服务请求。
模型分类:
| 访问控制模型 | ||
|
自主访问控制模型(DAC)
|
访问控制列表(ACL)
|
|
|
权能列表(Capacity List)
|
||
|
强制访问控制模型(MAC)
|
保密性
|
Bell-Lapudula模型
|
|
完整性
|
Biba模型
|
|
|
Clark-Wilson模型
|
||
|
混合策略
|
Chinese Wall模型
|
|
|
基于角色访问控制模型(RBAC)
|
||
|
基于属性访问控制模型(ABAC)(面向对象)
|
||
二、自主访问控制模型
1、自主访问控制是指用户有权对自身所创建的访问对象(文件、数据表等)进行访问,并可将对这些对象的访问权授予其他用户和从授予权限的用户收回其访问权限。
例如:以Linux的文件权限为例,实现访问控制列表
特点:
-
授权的实施主体自主负责赋予和收回其他主体对客体资源的访问权限。
-
DAC模型一般采用访问控制矩阵和访问控制列表来存放不同主体的访问控制信息,从而达到对主体访问权限的限制目的。
-
ACL(访问控制表)是DAC中常用的一种安全机制,系统安全管理员通过维护ACL来控制用户访问有关数据。
缺点:
-
主体的权限太大,无意间就可能泄露信息。
-
不能防备特洛伊木马的攻击访问控制表。
-
当用户数量多、管理数据量大时,ACL就会很庞大,不易维护。
三、强制访问控制模型
-
BLP模型
BLP模型的概念:
BLP模型是Bell-Lapudula模型的简称,是D.Elliott Bell和Leonard J.LaPadula在1973年提出的一种模拟军事安全策略的计算机访问控制模型,它是一种多级访问控制模型,主要用于保证系统信息的机密性。
BLP模型的策略分类:
-
自主安全策略:使用一个访问控制矩阵表示,矩阵中的元素表示主体对客体所有允许的访问模式,主体按照在访问矩阵中被授予的对客体的访问权限对客体进行相应的访问。
-
强制安全策略:对每个主体和客体都定义了安全级,安全级由密级和范畴构成。安全级之间存在支配关系。
BLP模型的安全特性:
-
同范畴内:①上级可读下级,下级不可读上级;②下级可写上级,上级不可写下级;③同级之间可互读写
-
不同范畴:上级、下级、同级之间都不可读写
-
Biba模型
Biba模式的概念:
1977年,由Biba提出,多级访问控制模型,保护数据完整性。强制安全策略为每一个主体和客体都分配了完整级。
Biba模型的安全特性:
-
同范畴内:①下级可读上级,上级不可读下级;②上级可写下级,下级不可写上级;③同级之间可互读写
-
不同范畴:上级、下级、同级之间都不可读写
-
Clark-Wilson模型
1987年,由David D.Clark和David R.Wilson提出的确保商业数据完整性的访问控制模型,侧重于满足商业应用的安全需求。每次操作前和操作后,数据都必须满足这个一致性条件。
数据的完整性:
指如果数据满足给定的条件,则称数据处于一个一致性状态,在每次操作前和操作后,数据都必须满足这个一致性条件。系统的一个事务处理就是一系列操作,使系统从一个一致性状态转移到另一个一致性状态。
数据操作的完整性:
指需要有人检查和验证事务处理是否被正确执行,一个事务需要两个或两个以上的不同的人来执行,如果要使用一个事务处理来破坏数据,必须有两个不同的人员犯错,或者他们合谋担保该事务处理已被正确实现。
-
Chinese Wall模型
若干有竞争关系数据集,构成了利益冲突类,如:银行COI类(银行a、银行b、银行c)、石油公司COI类(公司w、公司x、公司u、公司v)。该模型常用于域——权限隔离。
同一个域里面的不同角色,不能赋予相同的权限。
四、基于角色访问控制模型(RBAC)
概念:系统内置多个角色,将权限与角色进行关联,用户必须称为某个角色才能获得权限。根据用户所担任的角色来决定用户在系统中的访问权限。
实现过程图:
实现过程说明:
1、对系统操作的各种权限是在用户集合与权限集合之间建立一个角色集合。(切记:权限不是直接授予具体的用户)
2、每一种角色对应一组相应的权限。一旦用户被分配了适当角色后,该用户拥有此角色的所有操作。
适用场景:常见于权限管理类网站
-
这些网站会存在一个定制化的业务需求,不同的用户拥有不同的功能界面、业务权限。
-
专业解释:不同的用户拥有不同的角色,不同的角色绑定了不同的功能模块,并且要保证用户不能操作权限之外的功能。
三个安全原则:
-
最小权限原则
-
责任分离原则
-
数据抽象原则
五、基于属性访问控制模型(ABAC)
传统的RBAC与ACL等访问控制机制中,可认为是ABAC的子集。ABAC是以面向对象的思想来进行更精细的访问控制,匹配复杂的业务场景。
举个例子:注意,医生Bob在某些环境下,不能进行查看、修改
|
|
手术室护士Alice
|
临床科护士Ann
|
医生Bob
|
|
Susan生病了,做了手术
|
|||
|
处方
|
查看、修改
|
|
查看、修改
|
|
病历
|
查看,不能修改 |
不能查看、修改
|
查看、修改
|
|
Oscar生病了,去了门诊
|
|||
|
处方
|
不能查看、修改
|
|
查看、修改
|
|
病历
|
不能查看、修改
|
查看、不能修改
|
查看、修改
|