2005年,IBM Watson研究中心的Reiner Sailer等人在21st Annual Computer Security Applications Conference (ACSAC 2005)会议上发表文章《Building a MAC-basedsecurity architecture for the Xen open-source hypervisor》,第一次提出了Xen的安全架构sHype/ACM,该框架将强制访问控制(MAC)机制加入到Xen中,实现虚拟机之间的信息隔离,并尽可能降低隐蔽通道的威胁。文章称该方案的安全性能达到Common Criteria(CC)标准的EAL4级别,引入的性能攸关路径时间开销不超过1%,半虚拟化时间开销不超过9%。sHype/ACM是一个通用的架构,一开始是在rHype researchhypervisor和PHYP商业虚拟机上实现的,后来才对Xen进行实现。
sHype/ACM安全框架虽然从2005年就提出,但后来IBM没有再继续跟进、完善相关策略,仅有的Simple TE和Chinese Wall策略过于简单,无法适应企业应用需求。因此才会出现sHype/ACM从Xen 3.0左右集成到官方源码,在Xen 4.2开始就被废弃,由美国国家安全局NSA提出的XSM/Flask(类似于SELinux)安全架构所代替,实在令人惋惜。
文中举了客户订单系统的例子,如下图所示。Order虚拟机负责订单处理,Advertising虚拟机负责营销,Computing虚拟机负责计算任务,vDisk Server虚拟机负责虚拟磁盘管理。客户需求是Order虚拟机和Advertising虚拟机都需要与vDisk Server虚拟机进行通信,这样就可以访问其虚拟磁盘,其它形式的虚拟机间通信都不被允许。这个场景是比较适合用sHype/ACM策略来实现。
sHype/ACM的架构如上图所示,主要有三部分组成:
文章称sHype/ACM架构支持多种MAC策略,包括Biba、BLP、Caernarvon、TE、Chinese Wall等,但是最终只实现了Simple TE和Chinese Wall。
sHype/ACM安全模型的主体是虚拟机,即domain,客体是资源。资源主要包括以下三种类型:
文章实现了ChineseWall模型和Simple TE模型。两个策略type标签可以分开定义,分别称为CW-type和TE-type,但是在策略配置工具里这两个type是一起定义的。其中,CW-type只针对主体,即虚拟机,而TE-type则针对主体和客体。
sHype/ACM策略在配置完成后是XML可读格式的文件,Xen会将其编译成二进制格式,以供VMM使用。
Chinese Wall策略为每个VM打上一个type标签,并制定了冲突集,可以type标签加入到冲突集中。冲突集中的两个虚拟机禁止同时在同一个VMM中运行。这样可以有效防止隐蔽通道。
Simple TE策略主要约束VM对资源的访问,每个VM和资源可以打上多个type标签,这样的多个type标签称为coalition。只要某个VM与资源的coalition里含有至少一个共同的type标签,Simple TE策略就允许VM访问该资源。
sHype/ACM架构实现了2600行代码,打了三个安全钩子,分别位于域操作、事件通道和共享内存的位置。
性能方面,ChineseWall策略主要负责域操作,这部分代码不是性能攸关的,因此时间开销极小。Simple TE策略主要负责事件通道和grant table,文章称该部分也没有引入任何时间开销。这部分与开头的1%和9%的时间开销不太一致,笔者还不太理解。
原文地址:http://blog.csdn.net/hsluoyc/article/details/46517383