在CISSP的成长之路的上一篇文章《分布式访问控制方法》,J0ker给大家介绍了用于控制用户资源访问的几种分布式访问控制方法。在实际的应用中,我们往往还需要对数据和信息进行更为细致的访问控制,比如,企业需要允许财务部门访问今年上半年的企业详细财务报告,但同时应该拒绝其他部门访问,之前介绍过的集中式或分布式访问控制方法就不太合适应用在这种场景中,这时候,我们就要用到下面提到的几种数据访问控制方法。
在CISSP的CBK中介绍了目前最为常用的5种数据访问控制方法:自主式访问控制(Discretionary Access Control, DAC)、强制访问控制(Mandatory Access Control, MAC)、基于角色的访问控制(Role Based Access Control, RBAC)、基于内容的访问控制(Content Based Access Control, CBAC)和固定界面访问控制(Constrained Interface Access Control, CIAC)。J0ker将在本文和下一个文章中逐个介绍这些数据访问控制方法:
自主式访问控制:自主式访问控制是一种根据用户标识和/或用户所属的组别,对文件及其他系统资源访问进行控制的访问控制方法,由于它主要进行访问控制操作的标准主要基于用户标识和权限分配,此外用户权限的分配是由数据的所有者实施的,因此通常我们也认为DAC也是一种基于访问策略的访问控制方法,这点也是DAC与下面将要提到的MAC最大的区别。在实践中,自主式访问控制通常是通过访问控制矩阵(Access Control Matrix,ACM)和访问控制列表(Access Control List, ACL)来实现的:
我们知道,在计算机和网络系统中,数据和信息的组织形式最多的还是基于文件结构(File Structure)形式,也即数据和信息存储在文件中,而文件则根据一定的分类规则来分到不同的文件夹(目录)中。数据和信息的这种组织形式,使得我们能够很方便的决定某个用户对某个集合(文件或文件夹)的信息有什么样的访问权限,与此同时,其他的用户对这个信息集合有什么样的访问权限,在大多数的操作系统和网络系统中,常常设置以下几种数据访问权限:
表1: 常见的数据访问权限设置
权限描述
无权限或空(Null)该权限的用户无法对指定的文件和资源进行任何类型的访问
读(Read,r)用户可以对指定的文件和资源进行读操作,但不能进行变更操作
写(Write,w)用户可以对指定的文件和资源进行写操作,如进行编辑等
执行(Execute, x)用户可以执行指定的程序
删除(Delete, d)用户可以删除指定的文件和资源
变更(Change,c)用户可以对指定的文件和资源进行读、写和删除操作,但不能改变它的访问权限设置
完全控制(Full Control, f)用户对指定的文件和资源有完全的权限,可以读、写、删除、执行和改变该资源的访问权限设置
自主式访问控制最为重要的特征是资源所有制(Resource Ownership),在某些操作系统中,数据的创建者默认就是数据的所有者。数据的所有者除了拥有该数据的完全控制权限外,还能够对数据的访问控制权限进行设置,如果某个用户不是指定数据的所有者,那他就最多只能操作该数据对象,而不能修改该数据对象的访问控制设置。在一些组织中,系统管理员被默认为所有文件的所有者,系统管理员统一为组织中的用户分配访问权限,这种策略的缺陷主要在于系统管理员可能拥有太大的权限,了解太多他本来不应该了解的信息,因此,提供访问权限的共享控制能够在一定程度上提高数据的安全性。
自主式访问控制在操作系统和网络系统中的表现形式就是访问控制矩阵和访问控制列表,每个用户和每个访问目标之间的关系通过一个矩阵列出,用户为行、访问目标为列,每一行列的交点就是该用户对访问目标的权限,下图是一个简单的访问控制矩阵示例:
表2: 访问控制矩阵示例
Mary的文件夹Bob的文件夹Bruce的文件夹打印机01
Mary完全控制写写执行
Bob读完全控制写执行
Bruce无权限写完全控制执行
Sally无权限无权限无权限无权限
如果是用户和数据的数量非常多,系统需要维护一个巨大的访问控制矩阵,在多个用户同时发起访问请求的时候,将会对系统造成资源的很大开销。因为自主式访问控制是根据访问用户的标识进行的判断的,所以,我们可以设定某些用户允许访问某个数据,并要求系统只在该数据被访问到的时候根据用户允许列表来判读用户是否有权限,这便是访问控制列表的原理。访问控制列表可以看作是访问控制矩阵的简化版,提供了一个控制一个或一组用户对特定数据访问的更简便方法。
强制访问控制:强制访问控制是一种用在处理高敏感性数据的系统中的访问控制方法,和自主式访问控制一样,强制访问控制也属于基于策略的访问控制方法。强制访问控制的最显著特征是,要求对系统中的所有访问者(用户、程序等)和所有资源(文件、数据和设备等)都分配一个安全标识,在访问者要求访问资源时,系统会比较访问者和资源各自的安全等级,在符合安全策略规定的前提下,访问者才能访问资源。安全等级的划分和安全度的控制在强制访问控制实现的设计文档中规定。下图是强制访问控制实现的一个简单示例:
图1:强制访问控制的简单示例
我们来分析一下强制访问控制的特性,它使用安全标签来确定访问者是否可以访问某个资源,因为组织的安全策略规定了安全标签是如何定义的,因此,组织的系统管理员和信息的所有者共同维护强制访问控制的部署,系统管理员部署并维护强制访问控制措施,而信息的所有者负责对信息分配安全标签,并对能够访问该资源的用户进行授权。和自主式访问控制一样,用户要访问某个资源,必须经过该资源所有者的授权(为资源标记合适的安全标签),但强制访问控制还要求用户通过系统基于用户标签的控制这一额外控制措施,从这点上来说,强制访问控制的安全性要比自主式访问控制好。
我们用一个简单的例子来说明强制访问控制是如何运作的:在某个组织中,安全等级从低到高分为3级,公开、雇员、经理。如果一个名为 Report.doc的文件的安全等级为雇员,组织中所有标记为雇员和经理的用户都能够访问这个文件,而组织的客人(标记为公共)则不能访问该文件。这个文件即使是由经理级的用户提交,只要该用户将文件授权为雇员级别就能访问,只要是雇员以上级别的用户就能访问,这也体现了强制访问控制的信息所有者授权这一特性。
强制访问控制的另外一个重要用途是控制信息从其他系统输入或输出到其他系统中,由于信息的输入输出操作往往可能造成未授权的访问,例如一份标记为秘密的文档在一个不安全的打印机上输出。因此,处理高敏感性信息的信息系统往往会使用强制访问控制,来限制信息是如何输入和输出的。
在许多大型的组织和企业中,数据访问控制策略的制定实施往往取决于要求访问的用户在企业中所担任的职务,如公司的财务人员只能访问财务数据,而不能访问人力资源文件,这种访问控制方法被称为基于角色的访问控制,简称RBAC。同样的,基于角色的访问控制策略也根据用户所担任的职务,规定了用户能够对数据进行的操作权限——由企业安全策略确定并授权。因此,在使用基于角色的访问控制方法之前,还需要对组织中的所有数据以及访问者进行角色属性的设置,以使得访问控制系统能够在收到访问请求时,根据访问者和被访问数据的角色属性对比结果,进行访问允许或访问拒绝的操作。
这也是基于角色的访问控制与之前J0ker介绍过的自主式和强制访问控制最大的不同点,基于角色的访问控制的访问策略,并不是基于系统管理员或用户的自主设定(自主式访问控制),也不是根据组织安全策略规定由数据所有者设置的(强制访问策略)。基于角色的访问控制需要考虑的一个问题是,如何限制用户对某种信息进行什么样的操作,从而保护信息的完整性。
管理方便是基于角色的访问控制的最大好处,当一个访问策略(也称之为角色)设定好之后,系统管理员就可以方便的将用户加入或移除某个角色,使该用户可以根据角色的权限操作数据。例如,当企业招聘新员工之后,系统管理员只需要将这些新员工加入到对应的角色中,这些新员工就可以按照自己的权限开展工作;当员工从企业辞职之后,管理员只需要直接将该用户移出角色并禁用,即可删除该辞职员工的所有权限。
能力表(Capability tables):作为基于角色的访问控制方法用来控制用户权限的后台部分,能力表存储了用户可以如何操作特定数据的保护标识。能力表往往表现成授权表格的形式,它由三部分所组成:访问者、数据、访问权限,能力表的列描述了访问者对表中所有数据的访问权限,而能力表的列则描述了访问控制和访问者按照其授权对特定数据的访问权限。下图是一个能力表的简单示例:
针对数据库的访问控制:
随着数据库技术在企业的广泛应用,数据这个概念已经不只是存储在企业系统或网络内的文件这么简单,企业数据库同样也会存储很多高价值的信息,如银行数据库内存储的用户账户信息,医疗机构数据库内存储的病人信息等。因为这些数据的存储和组织形式和标准的文件目录形式不同,因此,传统的文件访问控制方式不能直接运用到数据库上。目前针对数据库的访问控制模式由两个部分组成:首先是连接性控制,用户在连接到数据库之前,需要进行特定的用户身份验证;其次是控制数据库中的哪些数据可以为用户访问到,这可以通过控制用户的数据视图(View)来实现。尽管针对数据库的访问控制使用到了访问控制CBK中的许多基础技术,但关于数据库安全的更多话题却是在下一个CBK——应用程序安全提到,J0ker到时将会更详细的给大家介绍。
基于内容的访问控制:
基于内容的访问控制,是比基于文件目录、基于数据更为高级也更为细致的访问控制方法,其控制策略取决于被访问对象的数据内容,所以,在使用基于内容的访问控制之前,需要提供以下几个关键的属性:
被访问目标的基本信息
为了提高访问控制的有效性,有时需要对被访问目标增加一个额外的标签,被访问目标的内容也需要经过复审
记录内容,并和符合现有策略的另一个目标进行比较
能够进行基于内容的访问控制的工具,如一个使用字典单词检查的程序等
基于内容的一个最常见的例子是用于互联网网站的分级制度,通过对各种类型的网站进行分类和标记,用户程序可以方便的限制或允许对某类网站的访问。如在许多企业中,不允许在上班时间访问娱乐网站,企业管理员只需要通过策略设置不允许访问标记为“娱乐“的网站即可。目前互联网网站分级采用的是W3C理事会发布的互联网内容选择平台(PICS)标准,所有支持PICS标准的程序都能够根据互联网网站的PICS设置,来对网站的访问进行控制。
强制用户界面(Constrained User Interface):强制用户界面也是应用较广的一种访问控制方式。强制用户界面控制的原理是,通过用户界面和接口限制用户能够访问到的功能、信息和接口,来控制访问者对特定资源的访问能力。如我们经常看到的应用程序中的灰色不能点击按钮,就属于强制用户界面,另外,遍布在公共查询场所的自动查询机也是强制用户界面的一个应用实例,它通过一个固定的界面,限制使用者只能访问和查询特定的内容。