访问控制技术,是指防止对任何资源进行未授权的访问,从而使计算机系统在合法的范围使用。意指用户身份及其所归属的某项定义组来限制用户对某些信息项的访问,或限制对某些控制功能的使用的一种技术。
访问控制通常用于系统管理员控制用户对服务器、目录、文件等网络资源的访问。
访问控制模型
为用户对系统资源提供最大共享的基础上,对用户进行访问权限的管理,防止信息泄露篡改,保证用户在安全策略下正常工作,拒绝非法用户的非授权访问请求,拒绝合法用户越权的服务请求。
1. 自主访问控制(DAC):
特点:授权用户可以自主得将权限转移给别人,权限的修改是由特权用户来修改的。linux,unix ,windows NT(windows 的系列名称,包括win 10这些发行版本)都采用这样的形式。
权限信息存储(访问权限表):
(1)访问控制表(ACL):以客体为核心,然后对客体联系所有的主体及其对应的权限。
(2)访问能力控制表(ACCL):以主体为核心,列出其所有允许访问的客体及权限。
(3)访问控制矩阵(ACM):二元矩阵表示权限关系,会有冗余。
特点:数据访问方式灵活,允许权限的自由转移,但是同时会带来安全问题,数据保护较低。
以 Linux的文件权限为例,实现访问控制列表。
getfacl filename #获取文件访问控制列表
setfacl -m u:username:7 filename #设置用户在文件或目录访问控制列表
setfacl -m g:groupname:7 filename #设置组在文件或目录访问控制列表
setfacl -x u:username filename #删除某用户在某文件或目录访问控制列表
setfacl -x g:groupname filename #删除某组在某文件或目录访问控制列表
setfacl -b filename #取消对该文件上的所有权限
**特点**
授权的实施主体负责赋予和回收其他主体对客体资源的访问权限,DAC模型一般采用访问控制矩阵和访问控制列表来存放不同主体的访问信息,从而达到对主体访问权限的限制目的。
ACL(访问控制列表)是DAC中常用的一种安全机制,系统安全管理员通过维护ACL来控制用户访问有关数据。
**缺点**
主体的权限太大,无意间就可能泄露信息
不能防备特洛伊木马的攻击访问控制列表
当用户数量多,管理数据大时,ACL就会很庞大,不易维护
2.强制访问控制(MAC):
更为严格的权限管理,将主体和客体赋予一定的安全级别,每个用户根据自己的安全级别,就会有自己全部的访问权限,这种权限是于安全级别严格挂钩的,不允许转移,也不允许为单个用户改动
(1)BLP 模型
于1973年提出的一种模拟军事安全策略的计算机访问控制模型,它也是最常用的一种多级访问控制模型,该模型用于保证系统信息的机密性。
BLP安全特性:
低安全级不能向高安全级读取,高可以向低读取。
低安全级可以向高安全级写入,高不可以向低写,高向低写就会造成信息泄露。
不同范畴不可以读和写,同范畴同一级别可读写。
(2)Biba模型
1977年提出,多级访问控制模型,保护数据完整性。
上级可以向下写,下级不可以向上写,防止信息篡改。
下级可以向上读,上级不可以向下读。
和BLP模型相反。
读写权限实例:(军队常用的两种严格的机制)
(1)向上写,向下读:有效防止信息向低安全级泄露,保护机密性。
(2)向下写,向上读:有效防止了下级篡改信息,保护完整性。
3.基于角色的访问控制(RBAC):
综合了上述两种极端(自由和强制),设计的一种综合模型。
将用户不再单个考虑,而是将其组织为组,而将客体的权限也设置为角色,一种角色会有自己特定的能力,这样用户就可以以担任角色的方式来获取权限,而非直接得到权限。
这样,就即保留了自由的灵活性,即用户可以担任不同的角色来获取不同的权限,一个用户只能获取一个权限,又保证了权限获取的严格性,即角色是固定的,不能有自由组合的角色出现,且角色的获取是可控的。
角色的获取和增删都是管理员决定,而非自由获得。这是RBAC和DAC的区别。
权限是由角色组织起来的,一个角色可能获取不同安全级的权限,所以就没有安全级的概念,按需添加角色。这是RBAC和DAC的区别。
RBAC支持三个著名的安全原则:最小权限原则,责任分离原则,数据抽象原则。
访问控制模型的基本原则:
(1)最小特权原则:根据主体所需权力的最小化分配,能少不多。
(2)最小泄露原则:对于权限的行使过程中,使其获得的信息最小。
(3)多级安全策略:对于信息安全级别要加以考虑,避免高级别信息向低级别主体泄露。
4、基于属性的访问控制(ABAC)模型
传统的RBAC与ACL等访问控制机制中,可以认为是ABAC的子集,对于RBAC,只是我们的访问机制的实现只是基于属性role而已,ACL则是基于属性是identity的AC。ABAC就以面向对象的思想来进行更精细的访问控制,匹配复杂的业务场景。
ABAC就是把用户角色的权限分得更细一点,具体到某个文件的某一项的访问的权限。
Attribute: 属性,用于表示subject、object或者environment condition 的特点,attribute 使用key-value 的形式来储存这些信息。
**Subject:**常常指使用系统的人或者其他使用者。当然一个subject可以有多个的attributes,就像用户属性这些名词一样。
**object:**指代需要管理的资源,比如文件,某项记录。
**operation:**有了object有了subject,自然就有了subject需要做的事,比如查看某条记录,登录某台服务器。
**environment conditions:**表示目前进行的访问请求发生时的操作或情境的上下文。
environment conditions 常常用来描述环境特征,是独立于subject与object的,常用来描述系统的情况:比如时间,安全等级。生产环境还是测试环境等等。
police: 通过subject、object的attribute与environment conditions 一起来判断subject 的请求是否能够允许的关系表示,对于机器来说就是一个判断语句。police可以是一堆Boolean 逻辑判断组合,比如,只有公司的正式员工并且在1楼的区域中才能访问网络。
5、Chinese Wall
若干有竞争关系数据集成了利益冲突关系,同一区域的不同角色不能赋予相同的权限。