具体实施方式
以下参照附图说明本发明的原理及其实施例。
本发明的原理概述
图2示出本发明的原理简图。如图2所示,在应用本发明的虚拟化环境中,多台虚拟机(VM)与虚拟网络(VNet)连接。例如,虚拟机VM1、VM2、VM3位于同一物理机上。本发明的虚拟化环境还设置了虚拟机安全管理器200和与之耦连的VM影子***220。在虚拟机安全管理器与影子***之间设置了物理安全设备210,例如防火墙、防病毒设备、安全网关或入侵防护设备等。其中,VM安全管理器将例如VM3向VM1发送的包保持在共享内存中,复制该包,并将该包通过物理安全设备210转发给VM影子***220。
如果VM影子***220接收到该包,则向虚拟机安全管理器200返回一个响应消息。虚拟机安全管理器200根据返回的响应消息,确定可以传送该包。虚拟机安全管理器200将保持的包释放,以由VM1从共享内存中获取该包。
如果虚拟机安全管理器200超过指定的时间未接收到从VM影子***220返回的响应信息,则丢弃该包,不向VM1传送。
可选地,如果虚拟机安全管理器200超过指定的时间未接收到从VM影子***220返回的响应信息,可以调整虚拟网络VNet。例如,从VNet中划分出一个分离的子网络(未示出),将VM3划分到该子网络中。处于该子网络中的虚拟机(例如VM3)发送的包总是通过物理安全设备210以由物理安全设备210检查并过滤。
根据本发明,通过将虚拟机之间通信的包传送给传统的物理安全设备过滤检查,增强了虚拟机之间通信的安全性。此外,通过根据检查反馈的结果将原来的虚拟网络划分成新的子网络,实施安全隔离,强迫曾发送例如攻击代码包的虚拟机今后的通信均通过外置的安全物理设备的检查,进一步提高了虚拟机通信的安全性和效率。在本发明的其它实施方式中,还可以在将具有潜在危险的虚拟机隔离后,向控制台发送一个指示以通知***管理员进行相应处理。
以下参照附图3-6描述本发明的实施例。
实施例1
图3示出根据本实施例的安全增强的虚拟机***的示意框图。
如图所示,根据本实施例的虚拟机***350包括多个虚拟机,例如VM1、VM2和VM3。请注意,尽管本实施例以三个虚拟机为例进行说明,但是本领域技术人员能够理解此仅是为了便于解释,而非限制。实际上可以根据需要包括任意数目的虚拟机。在本实施例中,这些虚拟机位于同一物理机(例如服务器、大型机、工作站等)上。
虚拟机***350还包括虚拟网络(VNet)安全管理器300和与之耦连的VM影子***320。VM影子***320位于与虚拟机VM1、VM2和VM3所在的物理机不同的另一物理机上。
在VNet安全管理器300与VM影子***320之间设置有物理安全设备310。本发明对物理安全设备310没有限制。例如,物理安全设备310可以是传统的防火墙、防病毒设备、安全网关、入侵防护设备之一或其组合。本领域技术人员能够明了,在IT架构中,可以设置多个诸如防火墙的物理安全设备,这些物理安全设备不仅可以用于防护网络内部的设备与外部设备之间的通信,还可以用于防护网络内部的设备(包括虚拟机)之间的通信。
在虚拟机通信的过程中,例如,虚拟机VM3向VM1发送包时,VNet安全管理器300复制虚拟机VM3向VM1发送的包,并将复制的包通过物理安全设备310转发到VM影子***320。VM影子***320将指示接收到该包的响应信息返回VNet安全管理器300。VNet安全管理器300根据返回的响应信息将该包在虚拟机之间发送。
更具体地,除了与传统的虚拟机***中的虚拟机管理器(Hypervisor)相同的模块(为了清楚表述本发明而未示出)之外,VNet安全管理器300进一步包括VNet通信控制器301。VNet通信控制器301被配置为进行如下处理:检测位于同一物理机上的不同虚拟机(例如VM3和VM1)之间通信的包;在共享内存中保持并复制所检测到的包;将复制的包通过物理安全设备310转发到VM影子***320;等待并接收从VM影子***320返回的响应信息;并在接收到响应信息的情况下释放所保持的包以完成不同虚拟机之间的通信。可选地,VNet通信控制器301对虚拟机之间通信的每个包都进行上述处理,实现对虚拟机安全通信的全部控制。或者,VNet通信控制器301可以按照预定规则抽取虚拟机之间通信的包进行上述处理,实现对虚拟机安全通信的抽样检测和局部控制。所述预定规则可以根据需要来设定,例如可以按照一定时间间隔抽取,或者抽取预定类型的包等。
此外,VNet通信控制器301还可以为所保持的包标记通用唯一标识符(UUID),并将该包及其UUID一同转发到VM影子***320。UUID可以用来定位相应的包。本领域技术人员应该理解,这里的UUID仅是一个实例,而本发明可以采用其它类型的标识符来标识包。
如图3所示,VM影子***320包括VM模拟器321和与之耦连的VM影子管理器325。
VM影子管理器325被配置为通过物理安全设备310从VNet通信控制器301接收被转发的包,将所接收的包分发给VM模拟器321。
VM模拟器321可以根据VNet安全管理器300通知的虚拟机拓扑结构来建立相应的虚拟机影子。虚拟机影子是相应虚拟机在影子***所在的物理机上的镜像,也可以称为虚拟机伪镜像。但是,应该注意,此处的虚拟机影子并非对相应虚拟机的完全复制。实际上,虚拟机影子可以理解为是用于反馈包含包的控制信息(例如UUID)的控制器,它只需被配置为具有接收对应虚拟机发送的包的控制信息并返回含有该控制信息的响应的逻辑功能即可。在明确了虚拟机影子的限定和功能之后,具体如何建立虚拟机影子是本领域技术人员采用其普通知识就能够实施的,在此不再详述。
此外,当一个虚拟机VM加入VNet时,VNet安全管理器300可以通知VM影子***320为它增加虚拟机影子。如图中虚线所示,VM模拟器321为各个虚拟机建立虚拟机影子。例如,虚拟机VM1、VM2和VM3对应的影子为VM1’、VM2’和VM3’。VM模拟器321解析来自VM影子管理器325的包以获取包的UUID。除了UUID之外,来自VM影子管理器325的包还包含主体内容,即包的数据部分。VM模拟器321并不获取来自VM影子管理器325的包的主体内容。VM模拟器321检查是否已经为例如发送包的虚拟机VM3建立了虚拟机影子VM3’。如果没有则模拟新的虚拟机影子VM3’。然后,VM模拟器321将UUID转发到相关的虚拟机影子VM3’。
作为实例,相关的虚拟机影子VM3’可以生成仅包含UUID的包作为上述响应信息,并将该包发送给VM影子管理器325。
可选地,VM模拟器321还可以获取发送包的虚拟机VM3的IP地址。在这种情况下,虚拟机影子VM3’可以具有与虚拟机VM3的IP地址相同的IP地址。并且,相关的虚拟机影子VM3’生成包含UUID和IP地址的包作为响应信息发送给VM影子管理器325。
VM影子管理器325将由相关虚拟机影子VM3’生成的响应信息反馈给VNet通信控制器301。
实施例2
图4为示出根据本发明另一实施例的安全增强的虚拟机***的示意框图。在图4中,采用相同的标号表示与图3相同的装置,并省略其详细描述。
本实施例的虚拟机***350’与实施例1的虚拟机***350不同之处在于VNet安全管理器300’还包括VNet划分控制器305。
VNet划分控制器305与VNet通信控制器301耦连。VNet通信控制器301如果超过指定的时间未接收到从VM影子***320返回的响应信息,则通知VNet划分控制器305调整VNet。VNet划分控制器305调整VNet以将发送包的虚拟机VM3划分到与其它虚拟机分离的虚拟子网络(未示出)中,并使得该虚拟子网络中的虚拟机(例如VM3)发送的包总是通过物理安全设备310以由其检查并过滤。具体如何从VNet中划分出一个虚拟子网络是本领域技术人员采用其普通知识就能够实施的,在此不再详述。
在这种情况下,所划分出的虚拟子网络中的虚拟机发送的包将不再转发到VM影子***320。可以认为是对该虚拟子网络中的虚拟机进行了隔离,在对相应的虚拟机(例如VM3)进行处理使其中存在的安全问题消除之前,该虚拟机发出的包可以被物理安全设备310过滤,从而不能与其它虚拟机实现通信。
实施例3
图5示出根据本发明又一实施例的安全增强的虚拟机通信方法的流程图。
根据本实施例的虚拟机通信方法可以在实施例1所述的虚拟机***上实现。如图5所示,首先,在步骤501,由VNet通信控制器检测例如位于同一物理机上的虚拟机VM3向VM1发送的包。
然后,在步骤510,将所检测到的包保持在共享内存中,并复制该包。
接着,在步骤520,可以为所保持的包标记通用唯一标识符UUID。
然后,在步骤530,将复制的包及UUID通过例如防火墙转发到VM影子***。该影子***位于不同于虚拟机所在的物理机的另一物理机上。
之后,在步骤540等待并接收从影子***返回的指示接收到该包的响应信息。该响应信息可以仅包含所标注的UUID。
如果在步骤540接收到该响应信息,则处理前进到步骤560。在步骤560,释放所保持的该包,将其传送到另一虚拟机。
如果在步骤540超过指定时间接收到该响应信息,则处理前进到步骤550。在步骤550,丢弃所保持的包,而不将该包传送到另一虚拟机。
以上从VNET通信控制器的角度对实施例3的方法进行了描述。图6示出图5的方法中由VM影子***进行的处理的流程图。
如图6所示,在步骤531,VM影子***通过例如防火墙从VNET通信控制器接收被转发的包。
然后,在步骤532,处理该包以生成包含UUID的响应信息。具体地,可以通过VM影子管理器将所获取的包分发到VM模拟器。VM模拟器解析来自VM影子管理器325的包以获取包的UUID。VM模拟器检查是否已经为例如发送包的虚拟机VM3建立了虚拟机影子VM3’。如果没有则模拟新的虚拟机影子VM3’。然后,VM模拟器321UUID转发到相关的虚拟机影子VM3’。作为实例,相关的虚拟机影子VM3’可以生成仅包含UUID的包作为上述响应信息。可选地,VM模拟器还可以获取发送包的虚拟机VM3的IP地址。并且,相关的虚拟机影子VM3’生成包含UUID和IP地址的包作为上述响应信息。然后,将响应信息发送给VM影子管理器。
然后,在步骤533,VM影子管理器将由相关虚拟机影子VM3’生成的响应信息反馈给VNet通信控制器。
实施例4
图7示出根据本发明再一实施例的虚拟机通信方法的流程图。在图7中,采用相同的标号表示与图5相同的步骤,并省略其详细描述。
根据本实施例的虚拟机通信方法可以在实施例2所述的虚拟机***上实现。本实施例的方法与实施例1的不同之处在于在步骤550之后还进行步骤570。
如图7所示,如果在步骤540超过指定时间接收到响应信息,并在步骤550丢弃所保持的包之后,处理前进到步骤570。在步骤570,由例如VNet划分控制器调整VNet以将发送包的虚拟机VM3划分到与其它虚拟机分离的虚拟子网络中,并使得该虚拟子网络中的虚拟机发送的包总是通过物理安全设备(例如防火墙)以由其检查并过滤。
在这种情况下,所划分出的虚拟子网络中的虚拟机发送的包将不再转发到VM影子***。可以认为是对该虚拟子网络中的虚拟机进行了隔离,在对相应的虚拟机(例如VM3)进行处理使其中存在的安全问题消除之前,该虚拟机发出的包可以被物理安全设备过滤,从而不能与其它虚拟机实现通信。
图8示意性示出了可以实现根据本发明的各个实施例的计算机***的结构方框图。
图8中所示的计算机***包括CPU(中央处理单元)801、RAM(随机存取存储器)802、ROM(只读存储器)803、***总线804,硬盘控制器805、键盘控制器806、串行接口控制器807、并行接口控制器808、显示器控制器809、硬盘810、键盘811、串行外部设备812、并行外部设备813和显示器814。在这些部件中,与***总线804相连的有CPU 801、RAM 802、ROM 803、硬盘控制器805、键盘控制器806,串行接口控制器807,并行接口控制器808和显示器控制器809。硬盘810与硬盘控制器805相连,键盘811与键盘控制器806相连,串行外部设备812与串行接口控制器807相连,并行外部设备813与并行接口控制器808相连,以及显示器814与显示器控制器809相连。
图8中每个部件的功能在本技术领域内都是众所周知的,并且图8所示的结构也是常规的。这种结构不仅用于个人计算机和服务器,而且用于手持设备,如Palm PC、PDA(个人数据助理)、移动电话等等。在不同的应用中,例如用于实现包含有根据本发明的客户端模块的用户终端或者包含有根据本发明的虚拟机***的服务器主机时,可以向图8中所示的结构添加某些部件,或者图8中的某些部件可以被省略。图8中所示的整个***由通常作为软件存储在硬盘810中、或者存储在EPROM或者其它非易失性存储器中的计算机可读指令控制。软件也可从网络(图中未示出)下载。或者存储在硬盘810中,或者从网络下载的软件可被加载到RAM 802中,并由CPU 801执行,以便完成由软件确定的功能。
尽管图8中描述的计算机***能够支持根据本发明的提供的技术方案,但是该计算机***只是计算机***的一个例子。本领域的熟练技术人员可以理解,许多其它计算机***设计也能实现本发明的实施例。
本发明还可以实现为例如由图8所示的***所使用的计算机程序产品,其可以包含有用于实现根据本发明的安全增强的虚拟机***或虚拟机通信方法的部分或全部的代码。在使用之前,可以把代码存储在其它计算机***的存储器中,例如,存储在硬盘或诸如光盘或软盘的可移动的存储器中,或者经由因特网或其它计算机网络进行下载。
所公开的本发明的方法可以在软件、硬件、或软件和硬件的结合中实现。硬件部分可以利用专用逻辑来实现;软件部分可以存储在存储器中,由适当的指令执行***,例如微处理器、个人计算机(PC)或大型机来执行。
以上描述了本发明的优选实施例。具体实施例的以上描述完整地展现了本发明的一般特性,其它方面可通过应用当前知识在不脱离一般原理的情况下容易地修改和/或适应这些具体实施例的各个应用。因此这些应用和修改应该并且意欲被理解为在所公开实施例的含义和等同范围内。
应该理解,这里采用的措辞和术语是说明的目的,而不是限制。因此,虽然根据实施例已经描述了本发明,但是本领域普通技术人员将认识到,在所附权利要求的范围内可以通过修改来实现本发明。