Linux多安全策略和动态安全策 略框架模块代码分析报告(一)

总体描述

安全策略是用户对安全要求的描述[1]。由于现在的应用环境越来越复杂,而现有的安全策略往往又都是针对特定的安全需求所设计的,所以单一的安全策略越来越难以满足系统对安全性的需求。在这种情况下,多安全策略便成了研究的重点,其中通用访问控制框架(GFAC,GeneralizedFramework for Access Control)就是一种典型的支持多级安全策略的框架。对于多级安全策略,不同的用户可能有不同的需求,因此就需要能够对其进行动态配置,于是动态安全策略也就应运而生,其中最具代表性的就是Flask体系框架。因此,本文首先对GFAC和Flask体系结构的原理进行介绍;其次基于Linux3.5.4源码对这两个体系结构进行分析,由于Linux未实现GFAC,所以本文主要针对Flask从源码上进行分析。

说明

由于GFAC对系统的性能影响比较大,并且实现起来比较困难,因此Linux内核并没有实现该框架;Flask体系结构典型的应用是SELinux,并且其以内核模块的形式加入到了内核中,因此本文以SELinux为例从源码上来分析Flask体系结构的实现,其相关源码位于security/selinux目录中。

通用访问控制框架GFAC是由Arams于1990提出的一个支持多级安全策略的框架,其本质上是一种规则集模型化方法。该框架将所有的访问控制安全策略看作是由安全属性表达的安全规则的集合,各安全策略由三个基本元素组成:权威、属性和规则。其中权威是定义安全策略的授权实体,负责确认相关的安全信息并给受控资源的属性赋值;属性用来表示主体和客体安全信息;规则用来限制主体对客体的访问权限。

图1-1 GFAC体系结构

如图1-1所示,GFAC包含四部分:访问控制决策(ADF,AccessControl Decision Facilities)、访问控制实施(AEF,AccessControl Enforcement Facilities)、访问控制信息(ACI,AccessControl Information)和访问控制规则(ACR,AccessControl Regulation)[1-2]。当主体要访问客体时,主体首先向AEF提出访问请求,AEF接到主体的访问请求之后,将主体、客体的安全属性、要求的访问模式等信息交给ADF,ADF接收相应的信息之后,根据ACI和ACR中的信息作出访问决策,并将决策的结果发给AEF。AEF在接收到访问决策之后,首先根据ADF的返回信息更新ACI中相应主体和客体的安全属性,然后将访问决策的结果返回给相应的主体,最后根据决策实施相应的访问操作。

对于GFAC,其最大的优点在于将策略的决策和实施分割开来,从而使得策略的实施不受具体安全策略的影响;其次该框架同时支持自主访问控制策略和强制访问控制策略。但其缺点同样比较明显:首先该框架对系统的性能影响比较大,因为当系统支持多级安全策略时,对于主体的一次访问请求,ADF要多次访问ACI和ACR进行决策的计算,从而使系统的性能降低[2];其次该框架实现起来比较困难,由于以上两点linux内核并没有实现该框架。返回搜狐,查看更多

阅读 ()
平台声明
该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。