搜索
您的当前位置:首页正文

安全操作系统基于ACL的自主访问控制机制的设计与实现

来源:六九路网
维普资讯 http://www.cqvip.com 计算机科学2004Vo1.31N ̄-.7 安全操作系统基于ACL的自主访问控制机制的设计与实现 孙亚楠石文昌 梁洪亮孙玉芳 (中国科学院软件研究所 北京1 00080) 摘要 自主访问控制机制是安全操作系统必不可少的安全机制之一,而传统的文件权限保护模式不能提供更细柱 度的自主访问控制,无法满足越来越高的系统安全的要求。本文探讨了基于访问控制表的自主访问控制机制的设计与 实现的主要思想,并提出了利用文件系统的扩展属性机制存储访问控制表以及将自主访问控制机制实现为一个基于 LSM安全框架的可加载模块的方法。 关键词 自主访问控制,访问控制表,扩展属性,Linux安全模型 Design and Implementation of ACL Based Discretionary Access Control Mechanism in Secure Operating System SUN Ya—rNan SHI Wen—rChang LIANG Hong—rLiang SUN Yu—rFang (Institute of Software,Chinese Academy of Sciences,Beijing 1 00080) Abstract As the traditiona1 file system permission modelin 1inux iS inadequate tO provide fine grained discretionary access contro1 and can not meet the need of strong system security.This paper focuses on the Access Contro1 List (ACL)based Discretionary Access Contro1(DAC)Mechanim ln secure Operating System and presents a methmod tO put ACL on Extended Attribute(EA)mechanism and tO implement DAC mechanism as a 1oadable kerne1 module with the hooks inserted into kerne1 by the Linux Security Module(LSM). Keywords DAC(Discretionary Access Contro1),ACL(Access Contro1 List),EA(Extended Attribute),LSM(Linux Security Module) 1引言 操作系统中的所有活动都可看作是主体对客体的一系列 操作,一个安全操作系统必须具备良好的访问控制机制来控 制主体对客体的活动。自主访问控制(DAC)机制是安全操作 系统必不可少的安全机制之一,其基本原理是在身份鉴别机 制的基础上,由客体属主决定某一主体对文件、目录等客体的 访问权限,权限一经确定,将作为以后判断该主体对客体是否 具有以及具有什么权限的有效依据。传统的DAC机制,即 “属主/同组用户/:g他用户”文件权限保护模式将系统资源的 2自主访问控制机制及其设计 2.1 访问控制矩阵模型 访问控制机制的原理可以用图I的访问控制矩阵 表 示,在矩阵 中,S是主体集合,O是客体集合,R. 表示主体 S.对客体 的访问模式 。 Subjects\objects S. O 毒 、 l 鼍 t 一 访问权限划分为读、写、执行/搜索,指定给属主、同组用户和 其他用户三类,没有精确到属主以外的其他任一主体,粒度较 粗,不能满足实际应用的安全要求。访问控制表(ACL)是实现 DAC的一个有效方法,因此国内外的安全操作系统,如 Trusted Xenix、Trusted BSD、IRIX等,都采用ACL提供更细 粒度和更灵活方便的自主访问控制,客体属主可以借助ACL 给系统中任意主体或主体组指定自己拥有的任意权限,也可 以限制系统中任意主体或主体组不能以任何方式访问客体。 本文讨论我们研制的安全操作系统SECIMOS中DAC 机制的设计与实现。该机制利用内核中的扩展属性机制(EA) 图1访问控制矩阵 为了实现良好的自主访问控制机制,由访问控制矩阵 提供的信息必须以某种形式存放在系统中。目前,访问控制矩 阵都不是被完整地存储,因为矩阵中的许多元素常常为空,空 元素将会造成存储空间的浪费,且查找某个元素会耗费很多 时间,因此在实现时通常基于矩阵的行或列来表达访问控制 信息。ACL就是基于列的机制,它利用为客体提供一个主体 明细表的方法来表示访问控制矩阵 。 2.2访问控制表的语法规则 ACL的语法规则兼容POSIX.1e+2c标准l-3],每个ACL 由一组ACL规则组成,用来设置单一主体或一组主体对客 存储ACL,并在内核中安插钩子函数实现资源访问控制,根 据用户指定方式或默认方式,阻止非授权主体访问客体,并控 制访问权限扩散。访问控制的粒度是单一主体,没有访问权的 主体只允许由授权主体指定对客体的访问权。我们的设计以 国家标准GB1 7859—1999“计算机信息系统安全保护等级划分 准则”第四级要求l-l 为依据。 体的访问权限,规则的外部形式是“[default:]规则类型标签: 规则限制符:权限”,如表1所示。为了可以同时对所有主体进 行设置,本文讨论的SECIMOS系统的DAC机制对ACL进 行扩充,增加了ACL—ALL和ACL—NONE规则。一个有效 硕士生,主要研究方向为系统软件与计 *)国家863高技术研究发展项目(2oo2AA141080)和国家自然科学基金项目(60073022)资助。孙亚楠算机安全。石文昌研究员,博士,主要研究方向为系统软件与计算机安全。梁洪亮博士,主要方向为系统软件与计算机安全 孙玉芳研究 员,博导,主要研究方向为系统软件与中文信息 ・153・ 维普资讯 http://www.cqvip.com ACL必须包含ACL—USER—OBJ、ACL—GROUP—OBJ和 ACL—OTHER三条基本规则,若包含ACL—USER或ACL— GROUP规则,则必须具有一条ACL—MASK规则,其余规则 可选。若一个ACL同时包含ACL—ACLL和ACL—NONE规 则,则两者的权限集不能相交。ACL从作用上分为Access ACL和Default AC[ 两种类型,前者确定客体访同权限,后 者只适用于目录类型的客体,用于确定在目录下创建新客体 时,新客体继承父目录的权限,不直接用于访问裁决。 表1 ACL规则的类型 类型标签 外部形式(类型标签:规则限制符:权限) ACL——USER——0BJ [default:user::permissions ACL—USER [default:user:uid或user—name:permissions ACL——GROUP——OBJ [default:]group::permissions 规则含义 客体属主对客体的权限 某个用户对客体的权限 属主所在组对客体的权限 ACL—GROUP ACLMASK [default:]group:gid或user—name:permissions [default:mask::permissions 某个用户组对客体的权限 限制除了客体属乇和other之外的特定用户和用户组的 最大权限 其他用户对客体的权限 所有用户对客体都具有的权限 所有用户对客体都不具有的权限 ACL—OTHER ACL—ALL ACL—NONE [default:]other::permissions [default:]all::permissions [default:none::permissions 2.5访问控制表的客体与权限细化及访问检查算法 ACL的主体为进程或用户,客体细化为文件、目录、设 备、符号连接、系统进程、进程间通信等类型。其中对文件、目 录和设备类型,访问控制细化到具体单个客体,对符号连接、 系统进程和进程间通信类型的客体则提供整体的控制。主体 对客体的权限由原来的读、写、执行扩充为读、写、执行、搜索、 权限时,才允许进程对客体的访问 。当用户进程请求搜索一 条路径,进程必须具有路径名中每一个目录分量的搜索权 ACL的访问检查算法逻辑描述如图2所示。 表2客体的ACL最大权限集 客体 客体的最大权限集 创建、删除、硬连接、截断、追加、重命名、改变所有者或组、改 变目录、读属性、修改属性、关闭、克隆、终止、发信号、获取状 态数据等。 普通文件 读、写、创建、执行、删除、硬连接、截断、追加、重命名、改 变所有者或组、改变目录、读属性、修改属性、关闭 目录 设备 搜索、创建、删除、重命名、改变所有者或组、读属性、修改 属性 由于DAC是由资源的属主决定谁可以对资源进行何种 访问,在实际应用中,某些关键资源的属主可能对系统和安全 读、写、读属性、修改属性、符号连接、改变所有者或组、关 闭 没有深入了解,较难准确地设置资源的安全属性。因此本文讨 论的DAC机制必须尽可能地弥补这一点,为各类客体规定 了最大权限集,防止操作人员的误操作,如表2所示。 当一个用户进程访问一个客体时,将进程的有效UID、 GID等用户标识信息和请求访问方式(mode)与客体的Ac— cess ACL中的规则进行比较,决定是否赋予其相应的访问权 限。仅当一条匹配的ACL规则的权限集包含所有请求的访问 系统进程 创建、克隆、发信号、终止、改变所有者或组、获取状态数 据 符号连接 由符号连接目标的最大权限集所决定 进程通信 创建、删除、读属性、修改属性、读、写、关闭 if(客体 Access ACL包含ACL—ALL规则)且(该规则的权限集包含进程请求的权限) then Access is granted if(客体Access ACL包含ACL—NONE规则)且(该规则的权限集包含进程请 求的权限) then Access is denied if(进程的有效UID匹配客体属主的UID) f if(ACL—USER—OBJ规则的权限集包含进程请求的权限) then(then Access is granted I else Access Is dented if(客体Access ACL包含ACL—USER规则)且(进程的有效UID匹配 其中一条ACL—USER规则的限制符) f if(该ACL-USER规则的权限集包含进程请求的权限)且 +h。 、“一‘Jthen Access is granted I else Access is denied (ACL—MASK规则的权限集包含进程请求的权限) if(进程的有效GID匹配客体属主的GID) k。 』if(ACL—USER—OBJ规则的权限集包含进程请求的权限) “ “、then Access is granted else Access is denied f if(客体Access ACL包含ACL—GROUP规则)且(进程  l的有效GID匹配其中一条ACL—GROUP规则的限制符)  lk。 els ……1 then Access is granted  lI else Access is denied f if(该ACL—GROUP规则的权限集包含进程请求的权限) J 且(ACL—MASK规则的权限集包含进程请求的权限) f 【  Ielse(then Access is granted l else AccesS is denied f if(ACL—OTHER规则中的权限包含进程请求的权限) 图2访问检查算法伪代码 2.4访问控制表的初始化及继承机制 创建一个客体时,由属主、超级用户或授权用户决定是否 ・为它初始化Access ACL。首先确定各类客体的上级客体。文 件/目录类型的客体的上级客体就是父目录,可以一直追溯到 154・ 维普资讯 http://www.cqvip.com 根(/)目录,/目录的上级客体指定为该类型的Default客体。 设备类型的客体的上级客体是该类型的Default客体。对于 IPC和系统进程的客体.系统初始默认只有Default客体。各 类客体的[)efault客体是整个此类客体的抽象,具有不会随 着客体的变化而变化的Default ACL 。 当用creat()、mkdir ()、mknod()、mUifo()和open()(有 0 CREAT参数)等函数新建一个文件时,它的Access ACL 按如下顺序计算: 1.若它的上级客体具有Default ACL,则继承这个De— fault ACL作为它的初始Access ACL。再修改这个Access ACL中与文件权限位模式对应的ACL USER 0BJ、ACL GROUP一0BJ和ACL OTHER规则,去除创建进程的mode 参数中没有指定的权限.得到新客体的Access ACL。 2.如果上级客体没有Default ACL.则由创建进程的 mode参数和文件创建掩码umask一起决定新客体的Access ACL。新客体的ACL—USER—OBJ、ACL GR0UP一0BJ、和 ACL—OTHER规则的权限由文件创建掩码决定.去除创建进 程的mode参数中没有指定的权限,得到新客体的Access ACL。 由于对访问权限进行了细化,为了更好地实现权限继承 机制,引入权限屏蔽值mask的概念,其每一位对应一项权限. 分别用o/1表示。权限屏蔽值mask一般默认为全1。如果没有 具体指明主体对客体(文件/目录、符号连接、设备)的权限,则 主体可以继承它对当前客体的上级客体的Default ACL,若 不想继承,就将相应的权限位设为0,反之为1。当客体被创建 后,可以设置它的权限屏蔽值。将权限屏蔽值与继承上级客体 的Default ACL的权限项相与,作为当前主体对当前客体的 权限,并覆盖Default ACL相应的权限项。 5实现方法 5 1访问控制表的存储与传递 要实现访问控制表,关键问题之一是访问信息的存放,需 保证其机密性、完整性和可用性。由于访问控制信息一般都很 短小,因此可以作为扩展属性存储,并通过预分配好大小的缓 冲区在内核和用户空间传递。为一个客体增加一个ACL时, 就为之分配一个单独的扩展属性块,记录着(name:value)对。 在Ext2/Ext3文件系统中每个i节点结构中都有一个预留域 z一 le—acl,指向存储与这个i节点关联的ACL信息的扩展 属性块。因此只需一次磁盘访问就可以检索到i节点的扩展 属性。为了保证信息的完整性,一个inode的所有扩展属性一 般存储在一个扩展属性块中 J。 为了提高效率,若多个i节点的ACL扩展属性都相同, 这些i节点就可以共享相同的扩展属性块。通过计算扩展属 性块的哈希值可以检测到相同块并对该块进行缓冲。当需要 产生一个新块时,会先在缓冲中寻找。如果找到同样的块,重 用该块(只需要增加磁盘引用计数,最大为1024),否则分配一 个新块。如果一个指向共享的EA块的inode和它的ACL属 性名和值被修改了,且没有被引用,则采用覆盖写的机制进行 更新 当一个文件系统中的客体第一次被访问时,它的访问控 制表从i节点和扩展属性块中转换成能被快速处理的内存格 式。由于对ACL访问会很频繁,当沿着路径在嵌套很深的目 录中访问ACL时尤其如此,因此为了加快权限检查和文件创 建,我们对ACL采用缓存方式。 5.2访问控制表与文件权限模式的协调 Linux的文件权限保护模式是在每个文件上附加一段有 关存取信息的二进制位,缺点是客体的属主不能精确控制单 个主体对客体的访问权,优点是非常简单、高效,在某些应用 上起到一定的作用。因此将仅限位保护模式与ACL共存于系 统中,文件权限位模式的o w, /group/other分别映射到 ACL USER一0BJ、ACL GROUP OBJ(若ACL有ACL~ MASK则映射列ACL MASK)、ACL OTHER,保持完全同 步。ACL的处理函数兼容文件仪限模式的处理函数.如 chmod()、creat()、stag()等。 当要进行访问权限检查时,采用一定的算法使二者协调 工作。Trusted Xenix安全操作系统采用的算法是首先判断要 访问的客体是否具有ACL.若有.进行ACL权限检查,若无. 则检查文件权限保护模式一]。本文的自主访问控制机制是基 于LSM安全模型框架上实现,我们采用与Trusted Xenix不 同的算法。当要决定主体对客体是否拥有某种权限时.首先判 断主体请求是否满足系统对客体的文件权限保护模式,满足 则允许主体进行请求的操作;若不满足,则检查该客体是否具 有访问控制表,若有再判断是否满足访问控制表机制,若满 足,允许主体进行请求的操作,反之拒绝请求。 5.5 自主访问控制机制的基本框架 本文讨论的SECIMOS安全操作系统的DAC机制的实 现目标是基于LSM安全模型框架 ],通过完善钩子函数,实 现对资源的访问控制,减小对内核的改动,能不加修改地运行 现有应用程序,并且使得系统开销应尽可能减小。DAC机制 的基本框架如图3所示 进程lH L 二:系统调用  善 耋蛋蠢霎磬、、>限位保护模式?—,,—————— 墨, 一 / 访问客体是 否 否具有ACL? \/ LSM钩子 最 授权 图3 DAC机制基本框架 在DAC中,将ACL作为EA在用户空间和内核空间传 递、在VFS和更底层的文件系统层之间传递,这样简化了系 统接口。扩展属性是根据名字来识别的,比如“system.posix— ACL—Access”和“system.posix—ACL—Default”分别代表了客 体的ACL和Default ACL,ACL属性值以一种体系结构无关 的格式存储。遵循Posix.1e标准的应用程序通过调用libACL 库实现兼容,该库实现了posix.1e标准定义的ACL处理函 数。ACL的权限检查通过在系统调用中插入钩子函数来实 现,当关闭ACL机制时,钩子返回NULL。 (下转第162页) ・]55・ 维普资讯 http://www.cqvip.com 5 UA设计 UA驻留于客户端.主要为用户应用系统提供按入服务. XMLSchema数据类型和Java数据类型之间的映射。Ac— cessServiceIF的Java定义如下: public interface AccessServiceIF extends Remote{ public abstract Source sendData(Source sourceData)throws Remo— teException; public abstract Source receiveData(String memberld)throws Re— moteException; 并且作为接收方还要随时接收从MC发送的其它用户的交换 数据。UA的设计要考虑跨平台和可移植的要求,不能受到用 户应用系统运行平台的限制。EasySwitch采用XML—RPC作 public abstract Schemalnfo口getSchemaInfo(String memberId) throws RemoteException; 为接口层基本的服务调用方式,最大限度地降低了数据中间 件的API层的访问难度,同时保证了平台独立性要求。 5.1 UA和用户应用系统的交互模式 public abstract Errorln[o口getErrorIn{o()throws RemoteExcep— tlon; } UA屏蔽了EasySwitch内部的复杂结构和运行过程,向 企业应用系统展现出一个单一的服务接口。同时,UA还能适 应用户环境的变化.比如当用户IP地址发生变化时,UA能 够即时发送更新信息到MC。UA和用户应用系统之间的交 换模式如图4所示。 I 7A 总结为适应各企业应用系统间进行数据交换协作的需 求.解决异构系统集成困难,本文基于行业内交流数据的相似 性和相关性理论.通过行业数据标准的设立和数据模式的节 点分解构造出可重构的数据交换核心,并在此基础上通过采 用SOAP,XML—RPC等标准协议规范开发了应用集成框架, 从而完整地实现了一个异构系统基于数据交换的协作平台 EasySwitch。通过对数据交换核心的重构可使EasySwitch适 用于不同领域,比如证券系统问交易数据的交换,电子政务系 统间的公文流转等。本文所实现的EasySwitch系统现已初步 应用于重庆市摩托车电子商务平台,是一个典型的行业内企 业数据交换的应用。需要指出的是,EasySwitch不仅可用于 图4 UA和用户应用系统交互模式示意图 1)AccessServiceIF是UA的接入服务接口,它为用户应 用系统中的client方提供包括数据交换在内的所有服务调 用。 行业内相关企业进行数据交换集成,对于企业内部各个子系 统进行数据协作也能很好地支持。 根据企业实际的业务流程框架及信息技术的发展状况可 以把企业集成分为数据集成和服务集成。基于数据处理的商 务过程,对于自主运行的应用系统来说,在收到某一类型的业 2)DataRecSvr是UA中的数据接收服务器,它随时准备 接收从MC发送的其它企业的交换数据消息。 3)receiver是用户应用系统提供的数据接收服务接口,用 户必须在安装UA时定义receiver的位置信息。当 DataRecSvr收到数据消息后,从配置文件中读取receiver的 信息,然后通过动态调用方式生成XML—RPC服务请求并发 送到receiver中,完成一次数据交换过程。 务数据后能够触发内部处理流程,EasySwitch对于这种基于 数据交换的应用协作提供了完整的解决方案。如何扩展 EasySwitch的应用集成框架,实现对企业间基于功能服务的 集成是下一步研究的内容。 参考文献 1 Gabrick K A,Weiss D B.J2EE and XML Development。Manning Publication,2002 5.2基于XML—RPC服务接口的实现 UA中的AccessServiceIF和用户应用系统提供的re— ceiver都是基于XML—RPC方式定义的服务接口,它通过 WSDL文档来描述其服务的名称及参数类型,调用指令和返 回数据都是以标准的SOAP封装传送的。UA方的Ac— 2 SOAP Versionl 2 Specification.http://www.w3.org/TR/2003/ PR-soapl2-part1—20030507/.http://www.w3.org/TR/2003/ PR—soap12-part2—20030507/ 3 JAXRPC一1.0 Specification,Sun Microsystems,2002 4 SAAJ1.1 Specification,Sun Microsystems,2002 cessServiceIF是采用JAX—RPC来开发的,JAX—RPC提供了 基于SOAP的RPC调用运行环境,其核心是实现了标准 (上接第155页) 5 Myerson J M.The Complete Book of Middleware.Auerbach Pub— ncations,2002 地支持实际应用中的DAC要求。 5.4性能影响分析 如果将ACL信息集中存放在文件中,要访问ACL,在文 件最近未被访问过的前提下,需要至少两次磁盘访问,而通过 文件系统的扩展属性机制存放ACL,利用文件系统inode的 缓冲机制,可以减少访问磁盘的次数。且扩展属性块可以被多 次引用,提高了效率。 结束语本文探讨了安全操作系统SECIMOS中基于访 问控制表的自主访问控制机制的设计与实现的主要思想,并 讨论了ACL如何与传统linux的文件权限保护模式在系统 中协调工作的问题。本文所提出的DAC机制不仅对授权主 体细化到单个用户,并且对权限和系统可操作的客体类型也 参考文献 1 中国国家标准一计算机信息系统安全保护等级划分准则GB17859— 1999 2 石文昌,孙玉芳.安全操作系统研究的发展(上).计算机科学, 2002.(29)6 3 IEEE Draft P1003.1e/2c IEEE Standard Department,1997 4 Grunbacher A.Posix Access Control Lists on Linux,SuSE Labs。 linux AG 5红旗安全操作系统技术白皮书.http://www.redflag—linux.com/ security/document/whitepaper.pdf 6 Gildfind A.Access Control lists and Extended attributes on linux. SGI 7 Final evaluation report.Trusted Xenix v3.0。National Computer Security center 加以细化,针对不同类型的客体给出客体的权限范围,完善了 访问权限检查算法。提出了权限屏蔽值和Default客体的概 念,使我们的安全操作系统SECIMOS的DAC机制能够灵活 8 Morris J,et a1.Linux Security Modules:General Security Support for the Linux Kerne1.http://www.intercode.corn.au/iamesm/ lsm—usenix—html/lsm—htm1.html,2002 ・162・ 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top