讨论我们研制的安全操作系统SECIMOS中DAC
机制的设计与实现。该机制利用内核中的扩展属性机制(EA)
存储ACL,并在内核中安插钩子函数实现资源访问控制,根
据用户指定方式或默认方式,阻止非授权主体访问客体,并控
制访问权限扩散。访问控制的粒度是单一主体,没有访问权的
主体只允许由授权主体指定对客体的访问权。我们的设计以
国家标准GB1 7859—1999“计算机信息系统安全保护等级划分
准则”第四级要求l-l 为依据。
### 安全操作系统基于ACL的自主访问控制机制的设计与实现
#### 1. 引言
随着信息技术的不断发展,信息安全成为越来越重要的议题。操作系统作为计算机系统的核心,其安全性直接影响着整个系统的安全状况。自主访问控制(Discretionary Access Control, DAC)作为保障系统安全的关键机制之一,对于确保数据的完整性、保密性和可用性至关重要。本文主要讨论基于访问控制列表(Access Control List, ACL)的自主访问控制机制的设计与实现,尤其关注如何在安全操作系统SECIMOS中实现这一机制。
#### 2. 自主访问控制机制及其设计
##### 2.1 访问控制矩阵模型
访问控制的基本原理可以通过访问控制矩阵模型进行描述。在这个模型中,主体(Subject)是指能够发起访问请求的实体,如用户、进程;客体(Object)是指被访问的实体,如文件、目录等。主体和客体之间的访问关系用访问模式(Access Mode)表示,它可以是读取、写入、执行等操作。访问控制矩阵模型如图1所示:
![访问控制矩阵](https://example.com/image.png)
在访问控制矩阵中,每一行代表一个主体,每一列代表一个客体,矩阵中的每个元素表示对应主体对客体的访问权限。通过这种方式,可以清晰地看出不同主体对不同客体的访问权限情况。
##### 2.2 传统DAC机制的局限性
传统的DAC机制通常采用“属主/同组用户/其他用户”的文件权限保护模式,即将系统资源的访问权限划分为读、写、执行/搜索三种类型,并分别赋予文件的属主、同组用户和其他用户。这种机制的访问控制粒度较粗,无法精确到属主之外的每一个特定主体,因此在面对复杂的安全需求时显得力不从心。
##### 2.3 基于ACL的DAC机制
为了解决上述问题,SECIMOS采用了基于ACL的自主访问控制机制。ACL是一种更精细的访问控制方式,它允许客体的所有者(通常是文件的创建者)指定哪些主体可以访问客体,以及它们可以进行何种类型的访问。通过ACL,可以实现更加灵活和细致的权限管理。
#### 3. 基于ACL的DAC机制实现
##### 3.1 利用扩展属性机制存储ACL
在SECIMOS中,ACL信息不是直接存储在文件或目录的元数据中,而是利用了文件系统的扩展属性(Extended Attribute, EA)机制。扩展属性是一种可以附加到文件或目录上的额外信息,这些信息不会影响文件本身的正常操作,但可以用来存储ACL这样的安全相关信息。
使用扩展属性机制存储ACL的好处在于,它可以很好地适应现有文件系统的结构,无需对文件系统进行重大修改。此外,由于扩展属性机制本身就是为存储额外信息而设计的,因此使用起来相对简单且高效。
##### 3.2 实现资源访问控制
为了实现在内核级别对资源的访问控制,SECIMOS在内核中安插了钩子函数。这些钩子函数可以在关键的操作点(如打开文件、写入文件等)触发,根据预先定义的ACL规则来决定是否允许相应的访问行为。这种设计使得访问控制更加灵活且易于管理。
##### 3.3 控制访问权限扩散
除了基本的访问控制功能外,SECIMOS还考虑到了访问权限的扩散问题。即当一个主体获得了对某个客体的访问权限后,如何防止该主体将权限传递给其他未授权的主体。为此,SECIMOS采取了一系列措施,例如仅允许拥有相应权限的主体指定其他主体的访问权,从而有效地控制了权限的传播。
#### 4. 结论
SECIMOS通过利用扩展属性机制存储ACL,并在内核中安插钩子函数来实现基于ACL的自主访问控制机制。这种设计不仅提高了系统的安全性,同时也增强了访问控制的灵活性和细致程度。未来的研究方向可能包括进一步优化ACL的存储和检索机制,以及探索与其他安全机制(如强制访问控制)的结合方式,以构建更加完善的安全操作系统环境。