Flask体系结构 由于传统的强制访问控制和多级安全策略紧密的耦合在一起,因此不能很好的支持数据的完整性、主客体功能的分离和最小特权原则,而且不能灵活的支持策略的动态改变。为了克服这些缺点,美国**局(NSA,National Security Agency)和安全计算公司(SCC,Secure Computing Corporation)合作开始研究新的方法。在1992-1993年,来自NSA和SCC的研究人员开始致力于Distributed TrustedMach(DTMch)操作系统的研究,该项目结合了来自TMach和LOCK项目的研究成果,之后其又作为Distributed TrustedOperating System(DTOS)项目的一部分开发。在DTOS项目结束之后,NSA、SCC和犹他大学合作将DTOS集成到Fluke操作系统中,在集成的过程中,安全系统的架构得到了增强,从而可以更好的支持动态安全策略,这个增强的体系结构就称为FLASK。为了将这项技术让更多的人使用,NSA在Linux上实现了该体系结构,于是形成了SELinux[3],对于SELinux,下文会进行详细的介绍,这里着重介绍Flask体系结构。 图1-2 Flask体系结构 Flask体系结构有两个目标:1、提供安全策略的灵活性,确保这些子系统不管策略决策如何生成、如何随时间变化,都有一致的策略决策。2、提供应用程序的透明性、深度防护、最小的性能影响等功能[4]。如图1-2所示,Flask体系结构描述了决策实施子系统和决策计算子系统之间的相互作用,其中,执行安全策略决策的组件称为对象管理器,提供安全决策计算的组件称为安全服务器。安全服务器可能包含其他的组件,如管理接口、策略库等,但这些组件间的接口都是依赖于具体策略的,因此不能被体系结构处理。对于客体管理器和安全服务器,下面分别进行介绍。 1 对象管理器 在Flask体系结构中,对象管理器由以下三部分组成: (1) 决策检索接口。Flask体系结构为对象管理器提供了从安全服务器检索决策的接口,这些决策包括访问决策、标记决策和多实例决策,其中访问决策指定了对象间授予的访问权限;标记决策指定了对象的安全属性;多实例决策指定了访问请求要访问的资源的多实例集合中的成员。 (2) 访问向量缓存(AVC,AccessVector Cache)。为了降低因频繁的访问安全服务器而造成的性能下降,Flask体系结构为对象管理器提供了访问向量缓存来缓存安全服务器计算的访问决策。 (3) 策略变化通知接口。Flask体系结构为对象管理器定义了策略变换通知接口以便其及时的感知安全策略的变化,进而修改自身的状态。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|