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)安全架构所代替,实在令人惋惜。
第1章 应用场景
文中举了客户订单系统的例子,如下图所示。Order虚拟机负责订单处理,Advertising虚拟机负责营销,Computing虚拟机负责计算任务,vDisk Server虚拟机负责虚拟磁盘管理。客户需求是Order虚拟机和Advertising虚拟机都需要与vDisk Server虚拟机进行通信,这样就可以访问其虚拟磁盘,其它形式的虚拟机间通信都不被允许。这个场景是比较适合用sHype/ACM策略来实现。
第2章 sHype/ACM架构
sHype/ACM的架构如上图所示,主要有三部分组成:
1)策略管理器,文中说策略管理器位于策略管理VM中,但是实际该功能还是在Dom0中实现的;
2)Access Control Module(ACM),负责根据策略进行授权决策;
3)钩子函数,负责依据ACM的决策结果,对VM的访问请求进行访问控制。
文章称sHype/ACM架构支持多种MAC策略,包括Biba、BLP、Caernarvon、TE、Chinese Wall等,但是最终只实现了Simple TE和Chinese Wall。
sHype/ACM安全模型的主体是虚拟机,即domain,客体是资源。资源主要包括以下三种类型:
1)由VMM控制的VM之间共享的资源,包括事件通道、共享内存和域操作等。
2)由MAC domain控制的VM之间共享的资源,包括本地vLAN和虚拟磁盘等。
3)由MAC-bridging domain控制的VMM之间共享的资源,包括跨VMM vLAN等。
第3章 实现
文章实现了ChineseWall模型和Simple TE模型。两个策略type标签可以分开定义,分别称为CW-type和TE-type,但是在策略配置工具里这两个type是一起定义的。其中,CW-type只针对主体,即虚拟机,而TE-type则针对主体和客体。
sHype/ACM策略在配置完成后是XML可读格式的文件,Xen会将其编译成二进制格式,以供VMM使用。
3.1 Chinese Wall策略
Chinese Wall策略为每个VM打上一个type标签,并制定了冲突集,可以type标签加入到冲突集中。冲突集中的两个虚拟机禁止同时在同一个VMM中运行。这样可以有效防止隐蔽通道。
3.2 Simple TE策略
Simple TE策略主要约束VM对资源的访问,每个VM和资源可以打上多个type标签,这样的多个type标签称为coalition。只要某个VM与资源的coalition里含有至少一个共同的type标签,Simple TE策略就允许VM访问该资源。
第4章 实验
sHype/ACM架构实现了2600行代码,打了三个安全钩子,分别位于域操作、事件通道和共享内存的位置。
性能方面,ChineseWall策略主要负责域操作,这部分代码不是性能攸关的,因此时间开销极小。Simple TE策略主要负责事件通道和grant table,文章称该部分也没有引入任何时间开销。这部分与开头的1%和9%的时间开销不太一致,笔者还不太理解。