本发明的目的在于提供一种基于优先中国墙策略的虚拟机隐形流控制 方法,该方法能够给用户提供一个可配置的调度方式来调度管理虚拟机资 源从而控制隐形通道,又能保持灵活性和便于实施。
本发明提供的基于优先中国墙策略的虚拟机隐形流控制方法,虚拟机 安全监视器内设置有历史中国墙类型数组HCWTA,该数组作于记录该节点上 被分配标签虚拟机的运行历史记录和现在的运行状态;
在单节点系统中虚拟机安全监视器分别按照过程(A)和(B)根据虚 拟机的标签监控该节点内任一虚拟机VM A的启动和关闭过程,该虚拟机VM A对应自己安全级别分配中国墙类型标签为T1;
在分布式系统内,每个节点的虚拟机安全监视器,按照过程(C)、和 (E)监控该节点内任一虚拟机VM B启动、关闭过程;按照过程(D)监控 其他节点上任一虚拟机VMC发出的迁移和通信
请求,假定虚拟机VM B与 VMC对应自己安全级别分配中国墙类型标签为T2和T3;
过程(A):虚拟机安全监视器按照下述步骤监控具有T1标签的虚拟机 VM A的启动过程,:
(A1)检测历史中国墙类型数组HCWTA,判断HCWTA是否为空:若HCWTA 为空,转到步骤(A4);若HCWTA不为空,则进入步骤(A2);
(A2)遍历HCWTA,判断虚拟机VM A所对应的标签T1是否属于HCWTA: 若T1∈HCWTA,转到(A5);若
则转到(A3);
(A3)遍历HCWTA,判断虚拟机VM A标签T1是否与该节点上的HCWTA 中的标签相冲突,即判断T1是否属于∪{CIS(xi)|xi∈HCWTA}:若T1∈∪ {CIS(xi)|xi∈HCWTA},转到步骤(A6);若
则转到步骤(A4);
(A4)虚拟机VM A允许启动,将虚拟机VM A的标签T1加入到HCWTA, 其中:HCWTA={T1},转到步骤(A7);
(A5)存在与此虚拟机在该节点运行过,虚拟机VM A允许启动,不修 改HCWTA,转到步骤(A7);
(A6)在HCWTA中存在类型T与虚拟机VM A所对应的类型冲突,虚拟 机VM A不允许启动;
(A7)输出结束信息,结束;
过程(B):虚拟机安全监视器按照下述步骤监控虚拟机VM A的关闭过 程:
(B1)开始,若虚拟机VM A不是该节点的最后一个正在运行的虚拟机, 则关闭虚拟机VM A后不改变HCWTA,转到步骤(B3);
(B2)若虚拟机VM A为该节点最后一个正在运行的虚拟机,则关闭虚 拟机VM A后清空HCWTA;
(B3)输出结束信息,结束;
过程(C):节点N1上的虚拟机安全监视器按照下述步骤监控该节点中 任一虚拟机VM B在此节点上的启动过程,虚拟机VM B其对应的中国墙类 型标签为T2,节点N1的历史中国墙类型数组为HCWTA1;
(C1)开始,检测HCWTA1,判断HCWTA1是否为空:若HCWTA1为空,转 到步骤(C5);若HCWTA1不为空,则转到步骤(C2);
(C2)根据全局安全
服务器中HCWTT更新本地节点的HCWTA1,对全局安 全服务器中与HCWTA1对应的HCWTA加
锁;
(C3)遍历HCWTA1,判断T2是否属于HCWTA1:若T2∈HCWTA1,转到 步骤(C6);若
转到步骤(C4);
(C4)遍历HCWTA1,判断虚拟机VM B标签T2是否与HCWTA1中的标签 相冲突,即判断T2是否属于∪{CIS(x)|x∈HCWTA1}:若T2∈∪{CIS(x)| x∈HCWTA1},在HCWTA中存在标签T与虚拟机VM B所对应的类型冲突,则 虚拟机VM B不允许启动转到步骤(C8);若
则转到步骤(C7);
(C5)允许虚拟机VM B在N1运行,把虚拟机VM B所对应的标签T2加 入到本节点HCWTA1中,同步全局安全服务器,在历史中国墙类型表HCWTT 中增加新的数组HCWTA1,更新HCWTA1,转到步骤(C9);
(C6)该则虚拟机VM B允许在节点N1启动,不
修改HCWTA1,更新HCWTT 记录运行状态,转到步骤(C8);
(C7)新启动的虚拟机的标签不与正在运行的虚拟机的标签相冲突, 允许虚拟机VM B在节点N1启动,把虚拟机VM B所对应的标签T2加入到 本地HCWTA1中,同步全局安全服务器,更新HCWTT中对应的HCWTA,转到 步骤(C8);
(C8)对全局安全服务器中与HCWTA1对应的HCWTA解锁;
(C9)输出结束信息,结束;
过程(D):每个节点上的虚拟机安全监视器按照下述步骤
监控系统中 各个节点上虚拟机间通信或
虚拟机迁移请求的过程:
假设:节点N1上虚拟机VM B,其对应的中国墙类型标签为T2,所属 历史中国墙类型数组为HCWTA1;节点N2上虚拟机VM C,其对应的中国墙 类型标签为T3,所属历史中国墙类型数组为HCWTA2;请求为虚拟机VM B 与虚拟机VM C之间发起的通信请求,或者由虚拟机VM B发起从节点N1迁 移到节点N2的迁移请求;
(D1)开始,根据全局安全服务器中HCWTT更新HCWTA1和HCWTA2,对 全局安全服务器中与HCWTA1及HCWTA2对应的HCWTA加锁;
(D2)检测HCWTA1,HCWTA2,比较HCWTA1和HCWTA2:若HCWTA1=HCWTA2, 转到步骤(D4);若HCWTA1≠HCWTA2,则转到步骤(D3);
(D3)分别遍历HCWTA1和HCWTA2,判断HCWTA1中任一标签T是否属于 ∪{CIS(x)|x∈HCWTA2},即是否存在T∈HCWTA1,T′HCWTA2且T∈ CIS(T′):若
转到(D5);若 存在T∈HCWTA1,T∈∪{CIS(x)|x∈HCWTA2},不允许虚拟机VM B与虚 拟机VM C的通信或虚拟机VM B由节点N1到N2的迁移请求,转到步骤(D6);
(D4)允许虚拟机VM B与虚拟机VM C的通信或虚拟机VM B由节点N1 到N2的迁移请求,转到步骤(D6);
(D5)允许虚拟机VM B与虚拟机VM C的通信或虚拟机VM B由节点N1 到N2的迁移请求,更新全局安全服务器中的HCWTA1与HCWTA2为HCWTA1 ∪HCWTA2,更新N1和N2节点的历史中国墙类型数组为HCWTA1∪HCWTA2, 转到步骤(D6);
(D6)对全局安全服务器中与节点对应的HCWTA1和HCWTA2解锁;
(D7)输出结束信息,结束;
过程(E):节点N1上的虚拟机安全监视器按照下述步骤监控系统中各 个节点上虚拟机的关闭过程:
(E1)开始,判断虚拟机VM B是否为节点N1上最后一个正在运行的虚 拟机:若虚拟机VM B不是,转到步骤(E3);
(E2)判断节点N1是否为其所属通信逻辑集中最后一个正在运行虚拟 机的节点:若N1不是,转到(E4);若N1是,则转到步骤(E5);
(E3)关闭虚拟机VM B,不改变该节点上的HCWTA,转到步骤(E6);
(E4)关闭虚拟机VM B,清空本地HCWTA1,转到步骤(E6);
(E5)关闭虚拟机VM B,清空本地HCWTA1,同时清空在全局安全服务 器中HCWTT内相对应的HCWTA1;
(E6)输出结束信息,结束。
在虚拟机系统实施本发明方法不需要重新修改虚拟机软件细粒度资源 的控制代码,该方法是在资源的虚拟机隔离粒度上,通过可控的资源调度 管理控制虚拟机间的隐形流,并给用户提供一个可以配置的资源调度方式。 具体而言,本发明方法具有以下优点:
1)解决了强制访问控
制模型用于隐形流控制时,无法在虚拟机系统中 实施的问题。首创了通过配置的资源控制方式,在高安全需求的虚拟机系 统提供了可实施的隐形流控制方法;
2)本方法不需要事先确定通信集合,通信集合根据虚拟机运行负载的 业务需求动态建立,具有灵活性和更大的应用范围;
3)本方法降低了在系统中实施的过强的约束条件,具有更好的扩展性, 使该方法更易于管理与实施。
附图说明
图1为系统通信逻辑集划分示意图;
图2为单节点环境下PCW判定虚拟机启动请求
流程图;
图3为分布式环境下PCW判定虚拟机启动请求流程图;
图4为分布式环境下PCW判定虚拟机间通信或虚拟机迁移请求流程图;
图5为实例系统结构示意图;
图6为实例运行示基于优先中国墙策略的效果示意图。
本方法对硬件环境没有特殊要求,软件环境为单虚拟机系统或分布式 虚拟机系统。
方法原理:隐形通道很难鉴定,也不可能完全的消除掉,我们在虚拟 机粒度下通过强制访问策略来控制隐形流,不是通过重写虚拟机软件细粒 度资源的控制代码消除隐形通道,而是通过强制访问策略为用户提供一个 可以配置的资源调度方式对资源调度,对要防止隐形流的虚拟机进行隔离, 使虚拟机之间不能产成隐形流。
基于优先中国墙策略的虚拟机系统隐形流控制方法中最重要的特点是 策略的判定逻辑取决于虚拟机的历史运行状态。而控制
算法最终将虚拟机 分为不同而相互隔离的通信集合,通信集合内允许信息流动,通信集合之间 不允许信息流的存在。
策略的判定逻辑取决于虚拟机的历史运行状态,故在策略管理服务器 中必须有一个数据结构记录虚拟机运行历史状态。该数据结构记录了所有 曾经被策略逻辑允许的相互之间允许有信息流动的虚拟机标签集合。将这 种关系称作有具有相互连接关系,相应的集合称作通信逻辑集 (Coalition),这里有信息流动表示被策略允许曾经同时在同一节点上运 行过和被策略允许建立通信关系。
支持强制访问控制策略的虚拟机系统,需要一套机制能够检测系统行 为,并与进行策略判定的单元通信,执行策略判定。我们沿袭Flask架构 的称谓,将这套机制称谓虚拟机安全监视器(Virtual Machine Security Monitor,VMSM),由它监控虚拟机的中国墙类型,并执行控制决定。
策略描述:
针对系统的安全需求,在实施本策略的虚拟机系统中定义一系列中国 墙类型标签(Chinese Wall-Type Label),例如有以下中国墙标签 {T1,T2,T3,T4}。标签本质上是以负载为分配单元的,因为我们的控制粒度 为虚拟机,即每个虚拟机中只允许运行单标签的负载,因此我们下文以虚 拟机标签,这一称谓来区分运行着标签不同负载的虚拟机。
策略的描述是通过使用上述的中国墙类型标签,不能有信息流的虚拟 机集合,通过冲突集(Conflict of Interest Set,CIS)进行描述。如使 用上述的标签,我们的系统要确保T1与T3,T4之间不能存在隐形流,则可 以将T1与T3、T1与T4定义为冲突集。需要注意的是在我们的策略中这种 冲突关系是对称的,即如果T1与T2冲突,反之T2与T1也冲突。但这种 冲突关系通常不是自反与传递的,故可以将与T1有冲突关系的虚拟机标签 的集合表示为CIS(T1)={T3,T4},则一定存在T1属于CIS(T3)和CIS(T4)。
本发明(优先中国墙策略,PCW)可以用于在单节点和分布式虚拟机系 统中在控制虚拟机之间的隐形流。在单节点环境中,由虚拟机安全监视器 VMSM根据本节点的虚拟机运行历史和状态信息监控虚拟机的启动/关闭。在 分布式环境中,需要收集每个
子节点上虚拟机运行的历史记录和状态信息, 我们使用名为全局安全服务器(Overall Security Server,OSS)的一个 逻辑服务器,用来存放各个子节点上的历史状态数组,与每个子节点的虚 拟机监视器通信。各个子节点监控该环境中各个节点上虚拟机的启动/关 闭,虚拟机间通信以及虚拟机间迁移。
下面说明在单节点环境中,应用PCW策略的具体实施方式:
在单节点环境中,由虚拟机安全监视器(VMSM)根据优先中国墙(PCW) 策略监控虚拟机的启动/关闭。即只有符合PCW策略要求的虚拟机才能同时 运行在一个节点中。根据PCW策略的描述,在单节点环境中,只含有一个 通信逻辑集(Coalition),即包括所有该节点上正在运行和曾经运行过的 虚拟机标签。用一个数组保存该节点上曾经运行过的和现在运行的虚拟机 标签(通信逻辑集),记为历史中国墙类型数组(History CW Types Array, HCWTA)。
在单节点环境下,VMSM根据PCW策略判定虚拟机VM A(其对应的中国 墙类型标签为T1)的启动流程(如图2所示)如下:
(1)开始,检测历史中国墙类型数组(HCWTA),判断HCWTA是否为空: 若HCWTA为空,转到(4);若HCWTA不为空,则转到(2)。
(2)遍历HCWTA,判断VM A所对应的标签中T1是否属于HCWTA:若T1∈ HCWTA,转到(5);若
则转到(3)。
(3)遍历HCWTA,判断VM A标签T1是否与该节点上的HCWTA中的标签 相冲突,即判断T1是否属于∪{CIS(x)|x∈HCWTA}:若T1∈∪{CIS(x)| x∈HCWTA},在HCWTA中存在类型T与VM A所对应的类型冲突,不允许VM A启动。若
则转到(4)
(4)允许VM A启动,将次虚拟机所对应的标签T1加入到HCWTA,转到 (7)。
(5)允许VM A启动,不修改HCWTA,转到(6)。
(6)输出结束信息,结束。
在单节点环境下,VMSM根据PCW策略监控虚拟机的关闭过程如下:
在关闭VM A时,根据PCW策略的描述;
(1)开始,若VM A不是该节点的最后一个正在运行的虚拟机,则关闭 VM A后不改变HCWTA,转到(3)。
(2)若VM A为该节点最后一个正在运行的虚拟机,则关闭VM A后清 空HCWTA。
(3)输出结束信息,结束。
在分布式环境中,全局安全服务器(OSS)负责记录各个节点上虚拟机 运行的历史记录、运行的状态和通信状态。每个节点应该记录运行的历史 记录、运行的状态和与本地节点具有通信关系的虚拟机标签,在系统状态 发生变化时,与全局安全策略服务器通信,同步全局策略服务器。各个子 节点虚拟机安全监视器监控该环境中各个节点上虚拟机的启动/关闭,虚拟 机间通信以及虚拟机迁移。如图1所示,在分布式的虚拟机系统中实现上 述方法,虚拟机系统被动态划分为多个被优先中国墙策略允许的通信逻辑 集(Coalition),每个逻辑集内的虚拟机之间允许通过公开通道和隐形通 道传递信息流。在分布式环境中,可能存在多个通信逻辑集(Coalition)。 与单节点环境相类似的是,一个通信逻辑集使用一个历史中国墙类型数组 (HCWTA)记录,在本地节点中保存着与正在该节点运行的或运行过的具有 通信状态的虚拟机标签(通信逻辑集)。全局安全服务器(OSS)收集各个 节点的历史中国墙类型数组,全部历史中国墙类型数组组成历史中国墙类 型表(History CW Types Table,HCWTT),HCWTT被存放在全局安全服务器 中。在系统初始状态下,每个节点的历史中国墙类型数组(HCWTA)和全局 安全服务器(OSS)中HCWTT皆为空。
在分布式环境下,应用PCW策略判断节点N1(历史中国墙类型数组为 HCWTA1)上VM A(其对应的中国墙类型标签为T1)启动的流程(如图3所 示)如下;
(1)开始,检测HCWTA1,判断HCWTA1是否为空:若HCWTA1为空,转 到(5);若HCWTA1不为空,则转到(2)。
(2)根据全局安全服务器中HCWTT更新本地节点的HCWTA1,对OSS中 与HCWTA1对应的HCWTA加锁。(加锁是指该数据不能被两个以上的节点同 时写入,保证同一时间点,只能有一个节点的信息写入。)
(3)遍历HCWTA1,判断T1是否属于HCWTA1:若T1∈HCWTA1,转到(6); 若
转到(4)。
(4)遍历HCWTA1,判断VM A标签T1是否与HCWTA1中的标签相冲突, 即判断T1是否属于∪{CIS(xi)|xi∈HCWTA1}:若T1∈∪{CIS(xi)|xi ∈HCWTA1},在HCWTA中存在类型T与VM A所对应的类型冲突,则VM A不 允许启动转到(8);若
则转到(7)。
(5)允许VM A在N1运行,把VM A所对应的标签T1加入到本地HCWTA1 中,依据本地HCWTA1更新OSS中HCWTT对应的HCWTA,转到(9)。
(6)在该通信逻辑集历史中运行过,则允许在节点N1启动VM A,不 修改HCWTA1,更新HCWTT对应项记录运行状态,转到(8)。
(7)新启动的虚拟机的标签不与正在运行的虚拟机的标签相冲突,允 许VM A在节点N1启动,把VM A所对应的标签T1加入到本地HCWTA1中, 依据本地HCWTA1更新OSS中HCWTT对应的HCWTA,转到(8)。
(8)对OSS中与HCWTA1对应的HCWTA解锁。
(9)输出结束信息,结束。
在分布式环境下,应用PCW策略判断各个节点上虚拟机间通信或虚拟 机迁移请求的流程(如图4所示)如下:
假设:节点N1上虚拟机VM A(其对应的中国墙类型标签为T1,历史 中国墙类型数组为HCWTA1),节点N2上虚拟机VM B(其对应的中国墙类型 标签为T2,历史中国墙类型数组为HCWTA2)。请求为VM A与VM B之间发 起的通信请求,或者由VM A发起从节点N1迁移到节点N2的迁移请求。
(1)开始,根据全局安全服务器中HCWTT更新HCWTA1和HCWTA2,对 OSS中与HCWTA1及HCWTA2对应的HCWTA加锁。
(2)节点N2的虚拟机安全监视器检测HCWTA1,HCWTA2,比较HCWTA1 和HCWTA2:若HCWTA1=HCWTA2,转到(4);若HCWTA1≠HCWTA2,则转到(3)。
(3)分别遍历HCWTA1和HCWTA2,判断HCWTA1中任一标签T是否属于 ∪{CIS(x)|x∈HCWTA2},即是否存在T∈HCWTA1,T′HCWTA2且T∈ CIS(T′):若
转到(5);若 存在T∈HCWTA1,T∈∪{CIS(x)|x∈HCWTA2},不允许VM A与VM B的通 信或VM A由节点N1到N2的迁移请求,转到(6)。
(4)允许VM A与VM B的通信或VM A由节点N1到N2的迁移请求,转 到(6)。
(5)允许VM A与VM B的通信或VM A由节点N1到N2的迁移请求,更 新全局安全服务器中HCWTT中对应HCWTA1和HCWTA2的HCWTA为HCWTA1∪ HCWTA2,更新N1和N2节点的历史中国墙类型数组为HCWTA1∪HCWTA2,转 到步骤(6);
(6)对OSS中与HCWTA1、HCWTA2对应的HCWTA解锁。
(7)输出结束信息,结束。
在分布式环境下,应用PCW策略监控各个节点上虚拟机的关闭过程如 下;
例如,在关闭节点N1上的VM A(其对应的中国墙类型标签为T1,所 属历史中国墙类型数组为HCWTA1)时,根据PCW策略的描述;
(1)开始,判断VM A是否为节点N1上最后一个正在运行的虚拟机: 若VM A不是,转到(3);
(2)判断节点N1是否为其所属通信逻辑集中最后一个正在运行虚拟机 的节点:若N1不是,转到(4);若N1是,则转到(5)。
(3)关闭VM A,不改变该节点上的HCWTA,转到(6)。
(4)关闭VM A,清空本地HCWTA1,转到(6)。
(5)关闭VM A,清空本地HCWTA1,同时清空在OSS中HCWTT内与HCWTA1 相对应的HCWTA。
(6)输出结束信息,结束。
实例
为了验证基于优先中国墙策略的虚拟机隐形流控制方法的有效性,我 们在单节点环境下实现了在虚拟机粒度下的强制访问控制系统,系统结构 如图5所示。系统采用开放源代码Xen作为虚拟机监视器(VMM)。在Xen 中添加强制访问控制模
块虚拟机安全监视器(VSMM),其结构按照功能主要 分为三个部分:
(1)安全服务器(Security Server),主要功能是建立和管理(存储、 修改、验证)安全策略。由于该安全服务器高安全和高可信的要求,在本 系统中,安全服务器运行在VM 0中。系统通过SELinux保证VM 0的安全 和可信。
(2)安全
控制模块(Security Control Module),维持策略状态,根据 当前策略生成策略决策,从安全服务器中读取安全策略,触发回调 (Call-Back)函数,在策略改变时重新验证VMM中的控制决策。
(3)安全执行代码(Security Control Hook),根据安全控制模块生成 的策略决策执行该策略决策。
其中为了最小化VSMM代码的复杂度和保证安全性,安全服务器运行在 VM 0中,安全控制模块和安全执行代码添加至Xen源码中。
根据PCW策略,历史中国墙类型数组(HCWTA)由安全控制模块维护。 HCWTA由中国墙类型标签索引,并包含一个标志位表示该标签所代表的虚拟 机是否运行(1为启动,0为终止)。
当某一个虚拟机发出启动请求时,安全控制模块根据HCWTA中的标签 及其标志位判断该虚拟机是否有权启动;当某一个虚拟机终止时,安全控 制模块根据HCWTA中的标签及其标志位判断是否清空HCWTA。
图6是实施优先中国墙策略控制在一个单节点运行简单示意图,标签 为OilA和OilB的负载是利益相冲突的两个负载,禁止信息流在它们之间 流动,策略禁止它们同时运行,这样使它们之间不能产生直接的隐形流。 标签为BankC的负载不与它们两者冲突,即可以存在信息流,但是一旦 BankC与OilA一起运行过,就会禁止它与OilB同时运行,可以防止通过 BankC传递的间接隐形流。这样使OilA与OilB之间不能进行信息传递。