安全虚拟机的分派

文档序号:144463 发布日期:2021-10-22 浏览:36次 >En<

阅读说明:本技术 安全虚拟机的分派 (Dispatching of secure virtual machines ) 是由 F·布萨巴 L·海勒 于 2020-02-28 设计创作,主要内容包括:根据本发明的一个或多个实施例,一种计算机实现的方法包括由在主机服务器上执行的管理程序接收分派虚拟机的请求。该方法还包括基于确定虚拟机是安全虚拟机,通过由主机服务器的安全接口控件确定虚拟机的安全模式来阻止管理程序直接访问安全虚拟机的任何数据。基于安全模式是第一模式,安全接口控件从第一状态描述符加载虚拟机状态,第一状态描述符被存储在存储器的非安全部分中。基于安全模式是第二模式,安全接口控件从第二状态描述符加载虚拟机状态,第二状态描述符被存储在存储器的安全部分中。(In accordance with one or more embodiments of the invention, a computer-implemented method includes receiving, by a hypervisor executing on a host server, a request to dispatch a virtual machine. The method also includes preventing the hypervisor from directly accessing any data of the secure virtual machine by determining, by a secure interface control of the host server, a secure mode of the virtual machine based on determining that the virtual machine is a secure virtual machine. Based on the secure mode being the first mode, the secure interface control loads the virtual machine state from a first state descriptor, the first state descriptor being stored in the non-secure portion of the memory. Based on the secure mode being the second mode, the secure interface control loads the virtual machine state from a second state descriptor, the second state descriptor being stored in the secure portion of the memory.)

安全虚拟机的分派

背景技术

本申请涉及计算机技术,并且更具体地,涉及虚拟机。

云计算促进了快速且容易地为客户供应虚拟机的能力,而不需要客户购买硬件或为物理服务器提供地面空间。客户可以根据改变的偏好来扩展或收缩虚拟机。通常,云计算提供商供应物理上驻留在提供商的数据中心处的虚拟机。在这种环境中,客户的虚拟机作为客户机运行,并且云提供商使用作为主机运行的管理程序代码来虚拟化可能属于不同客户的多个虚拟机之间的服务器资源。

客户通常关心虚拟机中的数据的安全性。云操作者可能不是受信的,并且客户可能想要在没有被恶意或不完善的代码(如管理程序)和/或具有恶意操作数据中心的意图的系统管理员连累的风险的情况下部署他们的工作。客户可能期望其代码和数据与云计算提供商之间的安全性,以及其代码和数据与在提供商的位置处运行的其他VM之间的安全性,以及来自提供商的管理员的安全性,以及针对在机器上运行的其他代码中的潜在安全漏洞的保护。例如,客户可以请求云提供商不能访问他们的数据,以便减少或避免诸如美国(U.S.)公司的云计算提供商可能通过传票被迫移交机密或专有文档的可能性。

发明内容

根据本发明的一个或多个实施例,一种计算机实现的方法包括由在主机服务器上执行的管理程序接收分派虚拟机的请求。该方法进一步包括基于确定虚拟机是安全虚拟机,阻止管理程序直接访问安全虚拟机的任何数据。该方法还包括由主机服务器的安全接口控件执行确定虚拟机的安全模式。此外,基于安全模式是第一模式,安全接口控件从针对虚拟机的第一状态描述符加载虚拟机状态,第一状态描述符被存储在存储器的非安全部分中。此外,基于安全模式是第二模式,安全接口控件从针对虚拟机的第二状态描述符加载虚拟机状态,第二状态描述符被存储在存储器的安全部分中。

在一个或多个示例中,第二状态描述符仅可由安全接口控件访问,而不可由管理程序访问。在一个或多个示例中,第一状态描述符包括指向第二状态描述符的指针。在一个或多个示例中,安全接口控件基于用被保存在第二状态描述符中的掩码来授权的一个或多个安全接口控件来确定虚拟机的安全模式。此外,在一个或多个示例中,安全接口控件通过比较第一状态描述符和第二状态描述符中的值来验证虚拟机状态的正确性。

根据本发明的一个或多个实施例,该方法还包括检测虚拟机的退出条件的发生,并且基于安全模式是第一模式,通过安全接口控件执行将虚拟机状态存储到被存储在存储器的非安全部分中的第一状态描述符中。该方法还包括基于安全模式是第二模式,将虚拟机状态存储到被存储在存储器的安全部分中的第二状态描述符中。

根据本发明的一个或多个实施例,该方法还包括基于安全模式是第三模式,将虚拟机状态存储到被存储在存储器的安全部分中的第二状态描述符中,并且将来自虚拟机状态的一个或多个所选择的参数存储到被存储在存储器的非安全部分中的第一状态描述符中。

在一个或多个示例中,安全接口控件包括毫码(millicode)。

根据本发明的一个或多个实施例,一种计算机实现的方法包括由在主机机器上执行的管理程序分派安全虚拟机,其中管理程序被阻止直接访问安全虚拟机的任何数据。所述方法进一步包括基于所述安全虚拟机的退出条件的发生,通过所述主机服务器的安全接口控件执行确定所述安全虚拟机的安全模式。此外,基于安全模式是第一模式,安全接口控件将安全虚拟机的虚拟机状态存储到第一状态描述符中,第一状态描述符被存储在存储器的非安全部分中。此外,基于安全模式是第二模式,安全接口控件将虚拟机状态存储到第二状态描述符中,第二状态描述符被存储在存储器的不能由管理程序访问的安全部分中。

在一个或多个示例中,基于安全模式是第三模式,该方法包括将虚拟机状态存储到被存储在存储器的安全部分中的第二状态描述符中,以及将来自虚拟机状态的一个或多个所选择的参数存储到被存储在存储器的非安全部分中的第一状态描述符中。在一个或多个示例中,安全接口控件基于用被保存在第二状态描述符中的掩码来授权的一个或多个安全接口控件来确定安全虚拟机的安全模式。

上述特征还可以至少由系统、计算机程序产品和机器提供。

本文描述的特征提供了对计算机技术的改进,尤其是通过促进计算机服务器托管安全VM来提供对托管虚拟机(VM)的计算机服务器的改进。在安全VM(管理程序在VM数据的控制下不再受信任)的情况下,通过与现有计算机服务器中相同的管理程序接口分派安全VM仍然是针对与现有管理程序的兼容性以继续操作的优选(或在一些情况下需要的)选项。因此,本发明的一个或多个实施例促进管理程序代码不必改变,使得(现有管理程序的)相同代码可用于分派典型的非安全VM以及禁止主机计算机服务器中的管理程序数据访问的安全VM。

通过本发明的技术实现了额外的技术特征和益处。本发明的实施例和各方面在本文中详细描述,并且被认为是所要求保护的主题的一部分。为了更好地理解,参考详细描述和附图。

附图说明

在说明书的结尾处的权利要求中特别指出并清楚地要求了本文描述的专有权的细节。从下面结合附图的详细描述中,本发明的实施例的前述和其它特征和优点将变得显而易见,其中:

图1示出了根据本发明的一个或多个实施例的云计算环境;

图2示出了根据本发明的一个或多个实施例的抽象模型层;

图3示出了根据本发明的一个或多个实施例的系统的框图;

图4示出根据本发明的一个或多个实施例的托管系统的框图;

图5示出了根据本发明的一个或多个实施例的用于管理程序启动安全虚拟机的示例方法的流程图;

图6示出了根据本发明的一个或多个实施例的状态描述符的示例结构;

图7示出了根据本发明的一个或多个实施例的状态描述符字段的示例结构;以及

图8示出了根据本发明的一个或多个实施例的用于根据所选择的安全模式促进安全虚拟机的退出的方法的流程图。

具体实施方式

在此参考相关附图描述本发明的各种实施例。在不偏离本发明的范围的情况下,可以设计本发明的替代实施例。在以下描述和附图中,在元件之间阐述了各种连接和位置关系(例如,上方、下方、相邻等)。除非另有说明,这些连接和/或位置关系可以是直接的或间接的,并且本发明并不旨在在这方面进行限制。因此,实体的耦接可以指直接或间接耦接,并且实体之间的位置关系可以是直接或间接位置关系。此外,本文所述的各种任务和过程步骤可被并入具有本文未详细描述的额外步骤或功能性的更综合的程序或过程中。

以下定义和缩写用于解释权利要求和说明书。如本文所用,术语“包含”、“包括”、“具有”、“含有”或其任何其它变型旨在涵盖非排他性的包括。例如,包括一系列元素的组合物、混合物、工艺、方法、制品或装置不一定仅限于那些元素,而是可以包括未明确列出的或此类组合物、混合物、工艺、方法、制品或装置固有的其他元素。

另外,术语“示例性”在本文中用于表示“用作示例、实例或说明”。在此描述为“示例性”的任何实施例或设计不一定被解释为比其它实施例或设计更优选或有利。术语“至少一个”和“一个或多个”可以被理解为包括大于或等于一的任何整数,即,一、二、三、四等。术语“多个”可以被理解为包括大于或等于二的任何整数,即二、三、四、五等。术语“连接”可以包括间接“连接”和直接“连接”两者。

术语“约”、“基本上”、“大约”及其变体旨在包括与基于提交本申请时可用的设备的特定量的测量相关联的误差度。例如,“约”可以包括给定值的±8%或5%或2%的范围。

为了简洁起见,与制造和使用本发明的各方面相关的常规技术可以或可以不在本文中详细描述。特别地,用于实现本文描述的各种技术特征的计算系统和特定计算机程序的各个方面是公知的。因此,为了简洁起见,许多常规实现细节在本文中仅简要提及或被完全省略,而不提供众所周知的系统和/或过程细节。

关于典型云环境的技术挑战是对数据和算法的潜在非安全和不想要的访问(例如,通过云提供商或云管理员)。云提供商通常将管理程序代码作为主机运行,而客户的VM作为客户机运行。该管理程序代码提供允许多个VM在单个物理机上运行所需的虚拟化功能。在现有系统中,管理程序(并且通常通过扩展,云管理员)具有对客户的数据和算法的访问权,以用于它必须访问该数据的有限部分以提供虚拟化功能的情形。管理程序通常被要求访问客户机数据以解释客户机指令,并代表客户机进行I/O操作。对于客户机功能正确性,需要对客户机存储器的管理程序访问。因此,本发明的一个或多个实施例提供了如何使用非受信管理程序来分派安全VM。

在主机管理程序的控制下作为客户机运行的虚拟机依赖于该管理程序为该客户机透明地提供虚拟化服务。这些服务可以包括但不限于存储器管理、指令仿真和中断处理。本发明的一个或多个实施例可以应用于安全实体和另一个非受信实体之间的任何接口,该接口传统上允许该另一个实体访问安全资源。例如,对于中断和异常仿真,管理程序通常读取和/或写入客户机的前缀区域(低核)。如本文所使用的术语“虚拟机”或“VM”指的是物理机(计算设备、处理器等)及其处理环境(操作系统(OS)、软件资源等)的逻辑表示。虚拟机状态由在底层主机(物理处理器或处理器组)上执行的管理程序来维护。从用户或软件资源的角度来看,VM看起来是它自己的独立物理机器。这里使用的术语“管理程序”和“VM监视器(VMM)”是指管理和允许多个VM在同一主机上使用多个(有时是不同的)OS来执行的处理环境或平台服务。应当理解,分派VM包括:VM的安装过程和VM的激活(或启动)过程。在另一个示例中,分派VM包括:VM的激活(或启动)过程(例如,在VM被事先安装或已经存在的情况下)。

然而,为了促进安全客户机,在诸如托管节点的计算机服务器必须在管理程序和安全客户机之间提供附加的安全性的情况下存在技术挑战,使得管理程序不能从VM访问数据,并且因此不能提供诸如上述那些的服务。

在当前可获得的技术方案中,管理程序(例如,或基于开源软件内核的虚拟机(KVM))通过发布使得开始解释执行(SIE)进入毫码被调用的SIE指令来分派物理处理单元或主机服务器上的新VM虚拟CPU(vCPU)。毫码是作为处理器硬件的扩展而操作的受信固件。SIE指令的操作数是控制块,被称为状态描述,其包含客户机状态。在现有的实现中,该状态描述驻留在管理程序存储中。在SIE进入期间,该客户机状态(包括通用寄存器和控制寄存器、客户机指令地址和客户机程序状态字(PSW))由毫码加载到硬件中。这允许客户机vCPU在物理处理器上运行。当vCPU在硬件上运行时,客户机状态被维持在硬件中。在某一点,硬件/毫码必须将控制返回给管理程序。这通常被称为SIE退出。例如,如果该vCPU执行需要由管理程序仿真的指令,或者如果vCPU时间片(即,分配给该vCPU在物理处理器上运行的时间)到期,则可能需要这种处理。在SIE退出期间,由于硬件在任何给定时间具有支持仅单个vCPU的资源,并且它现在必须将管理程序状态加载到硬件中,所以毫码将当前客户机状态保存在状态描述中。当该vCPU未被分派时,其状态被保持在状态描述中。由于该状态描述位于管理程序存储内,因此在这种情况下,管理程序具有对VM的数据的控制,并且在一些情况下,需要这种控制来解释在VM上执行的指令。现有的管理程序依赖于使用此类接口通过SIE指令来分派vCPU。

在安全VM(管理程序在VM数据的控制下不再受信任)的情况下,使用现有的SIE指令通过相同的管理程序接口分派安全VM对于与现有的管理程序的兼容性仍是优选的(或在一些情况下是需要的)选项。本发明的一个或多个实施例通过促进对管理程序代码的有限改变来解决此类技术挑战,使得相同的管理程序基础结构可以用于分派典型的非安全vCPU以及禁止管理程序数据访问的安全vCPU。本发明的一个或多个实施例通过在安全接口控件(例如毫码)中使用改进的SIE指令的底层实现,促进现有管理程序使用现有SIE指令启动安全vCPU,所述安全接口控件包括对在硬件上分派安全vCPU的支持。

在一个或多个示例中,此类功能可以通过使用毫码和/或其他硬件模块来提供,并且在本说明书中,硬件模块和毫码被统称为“安全接口控件”。因此,本发明的一个或多个实施例促进管理程序安全地和可靠地使用相同的SIE接口来分派和解除分派(un-dispatch)当前用于分派和解除分派非安全vCPU的安全vCPU。

现在,以下简要描述背景技术,之后描述由本发明的一个或多个实施例用于由管理程序分派安全VM的特定特征。应预先理解,尽管本公开包括关于云计算的详细描述,但本文中所述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。

云计算是服务交付的模型,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)能够以最小的管理成本或与服务提供商进行最少的交互来快速部署和释放。这种云模型可以包括至少五个特征,至少三个服务模型和至少四个部署模型。

特征如下:

按需自助式服务:云的消费者在无需与服务提供商进行人为交互的情况下,能够单方面自动地按需部署计算能力,诸如服务器时间和网络存储。

广泛的网络接入:计算能力通过网络获得,并通过标准机制访问,该标准机制促进了通过不同种类的瘦客户机平台或厚客户机平台(例如,移动电话,膝上型电脑和PDA)的使用。

资源池:提供商的计算资源被归入资源池,以使用多租户模式为多个消费者提供服务,其中根据需求动态分配和重新分配不同的实体资源和虚拟资源。通常消费者不能控制或者并不知晓所提供的资源的确切位置,但是可能能够在更高抽象级别(例如,国家,州或数据中心)指定位置,因此具有位置无关性。

迅速弹性:可以迅速、有弹性地(有时是自动地)部署计算能力,以快速扩展,并且能迅速释放来快速缩小。对于消费者来说,用于部署的可用计算能力通常显得是无限的,并能在任意时候都能获取任意数量的计算能力。

可测量的服务:云系统通过利用适于服务类型(例如,存储,处理,带宽和活跃用户帐户)的某种抽象级别的计量能力来自动控制和优化资源使用。可以监视,控制和报告资源使用,从而为所使用的服务的提供者和消费者提供透明度。

服务模型如下:

软件即服务(SaaS):提供给消费者的能力是使用提供商在云基础架构上运行的应用。可以通过诸如网络浏览器(例如,基于网络的电子邮件)的瘦客户机接口从各种客户机设备访问应用。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统、存储、甚至单个应用能力,可能的例外是有限的特定于用户的应用配置设置。

平台即服务(PaaS):提供给消费者的能力是在云基础架构上部署消费者创建或获得的应用,这些应用利用由提供商支持的编程语言和工具创建。消费者既不管理也不控制底层云基础架构,包括网络、服务器、操作系统或存储,但可以控制已部署的应用以及可能的应用托管环境配置。

基础架构即服务(IaaS):提供给消费者的能力是部署处理、存储、网络和其它基础计算资源,其中消费者能够部署和运行任意软件,该软件可以包括操作系统和应用。消费者既不管理也不控制底层云基础设施,而是具有对操作系统,存储,部署的应用的控制,以及具有可能的对选择的网络组件(例如,主机防火墙)的有限控制。

部署模型如下:

私有云:云基础架构单独为组织运行。它可以由组织或第三方管理,可以存在于该组织内部或外部。

共同体云:云基础架构由多个组织共享,并支持具有共同利害关系(例如,任务使命,安全要求,策略和合规考虑)的特定共同体。它可能由组织或第三方管理,并且可能存在于该共同体内部或外部。

公共云:云基础架构向公众或大型产业群提供,并由销售云服务的组织所有。

混合云:云基础架构由两个或多个云(私有云,共同体云或公共云)组成,这些云仍然是独特的实体,但通过使数据和应用能够移植的标准化或私有技术(例如,用于云之间的负载平衡的云突发流量分担技术)绑定在一起。

云计算环境是面向服务的,特点集中在无状态,低耦合性,模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础设施。

现在参考图1,描绘了示意性的云计算环境50。如图所示,云计算环境50包括云的消费者使用本地计算设备可以与其通信的一个或多个云计算节点10,本地计算设备例如是个人数字助理(PDA)或蜂窝电话54A,台式计算机54B,膝上型计算机54C和/或汽车计算机系统54N。节点10可以彼此通信。它们可以在一个或多个网络中物理地或虚拟地分组(未示出),例如如上所述的私有云,共同体云,公共云或混合云,或其组合。这样,云的消费者无需维护本地计算设备上的资源就能够允许云计算环境50提供基础架构即服务、平台即服务和/或软件即服务。应该理解,图1中所示的计算设备54A-N的类型仅仅是示意性的,而计算节点10和云计算环境50可以(例如,使用网络浏览器)通过任何类型的网络和/或网络可寻址连接与任何类型的计算设备通信。

现在参考图2,示出了由云计算环境50(图6)提供的一组功能抽象层。应该事先理解图2中所示的组件、层和功能仅仅是示意性的,并且本发明的实施例不限于此。如图所示,提供了以下层和相应的功能:

硬件和软件层60包括硬件和软件组件。硬件组件的示例包括主机61;基于RISC(精简指令集计算机)体系结构的服务器62;服务器63;刀片服务器64;存储设备65;网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。

虚拟层70提供抽象层,从该抽象层可以提供以下虚拟实体的示例:虚拟机71;虚拟存储72;虚拟网络73(包括虚拟私有网络);虚拟应用和操作系统74;和虚拟客户端75。

在一个示例中,管理层80可以提供下面描述的功能。资源供应功能81提供用于在云计算环境内执行任务的计算资源和其它资源的动态获取。计量和定价功能82在云计算环境内对资源的使用进行成本跟踪,并且提供用于消费这些资源的帐单或发票。在一个示例中,这些资源可以包括应用软件许可。安全功能为云的消费者和任务提供身份认证,以及为数据和其它资源提供保护。用户门户功能83为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能84提供云计算资源的分配和管理,以满足所需的服务水平。服务水平协议(SLA)计划和履行功能85为根据SLA预测的对云计算资源未来需求提供预先安排和供应。

工作负载层90提供可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制与导航91;软件开发和生命周期管理92;虚拟教室的教学提供93;数据分析处理94;交易处理95;和源代码版本化96。可以理解,这些仅仅是一些示例,并且在其它实施例中,这些层可包括不同的服务。

图3示出根据本发明的一个或多个实施例的示例托管节点10。托管节点10经由网络165与一个或多个客户端设备20A-20C通信。此外,客户端设备20A-20C可以与托管节点10直接通信,托管节点10可以是云计算提供商的数据中心或主机服务器。托管节点10执行管理程序12,其促进部署一个或多个虚拟机15(15A-15N)。托管节点10还包括硬件层或毫码层13,其包括安全接口控件11。安全接口控件11包括一个或多个硬件模块和毫码,其促进管理程序12向虚拟机15提供一个或多个服务,在现有技术方案中,在管理程序12与安全接口控件11之间存在通信;在安全接口控件11和一个或多个VM 15之间存在通信;在管理程序12和一个或多个VM 15之间存在通信;以及存在通过安全接口控件11从管理程序12到VM 15的通信。为了促进安全VM环境,根据本发明的一个或多个实施例的托管节点10不包括管理程序12与一个或多个VM 15之间的任何直接通信。

例如,托管节点10可以促进客户端设备20A部署虚拟机15A-15N中的一个或多个。虚拟机15A-15N可以响应于来自不同客户端设备20A-20C的相应请求而被部署。例如,虚拟机15A可由客户端设备20A部署,虚拟机15B可由客户端设备20B部署,并且虚拟机15C可由客户端设备20C部署。托管节点10还可以促进客户端提供物理服务器(而不作为虚拟机运行)。这里描述的示例将托管节点10中的资源供应具体化为‘虚拟机’的一部分,然而,所描述的技术方案可以应用于将资源供应为物理服务器的一部分。

在一个示例中,客户端设备20A-20C可以属于同一实体,诸如个人、企业、政府机构、公司内的部门或任何其他实体,并且托管节点10可以作为实体的私有云来操作。在这种情况下,托管节点10单独地托管由属于该实体的客户端设备20A-20C部署的虚拟机15A-15N。在另一个示例中,客户端设备20A-20C可以属于不同的实体。例如,第一实体可以拥有客户端设备20A,而第二实体可以拥有客户端设备20B。在这种情况下,托管节点10可以作为托管来自不同实体的虚拟机的公共云来操作。例如,虚拟机15A-15N可以以其中虚拟机15A不促进对虚拟机15B的访问的受遮蔽方式来部署。例如,托管节点10可以使用IBM z处理器资源/系统管理器(PR/SM)逻辑分区(LPAR)特征来覆盖虚拟机15A-15N。这些特征,例如PR/SM LPAR提供分区之间的隔离,从而促进托管节点10在不同的逻辑分区中针对同一物理托管节点10上的不同实体部署两个或更多个虚拟机15A-15N。

来自客户端设备20A-20C的客户端设备20A是通信设备,例如计算机、智能电话、平板计算机、台式计算机、膝上型计算机、服务器计算机或请求由托管节点10的管理程序12部署虚拟机的任何其它通信装置。客户端设备20A可以经由网络165或直接发送请求以由管理程序接收。虚拟机15A-15N中的虚拟机15A是管理程序12响应于来自客户端设备20A-20C中的客户端设备20A的请求而部署的虚拟机镜像。管理程序12是虚拟机监视器(VMM),其可以是创建并运行虚拟机的软件、固件或硬件。管理程序12促进虚拟机15A使用托管节点10的硬件组件来执行程序和/或存储数据。通过适当的特征和修改,管理程序12可以是IBM zORACLE VM SERVERTM、CITRIX XENSERVERTM、VMWARE ESXTM、MICROSOFT HYPER-VTM或任何其它管理程序。管理程序12可以是直接在托管节点10上执行的本机管理程序,或者是在另一管理程序上执行的被托管的管理程序。

图4示出根据本发明的一个或多个实施例的示例托管节点的组件。托管节点10可以是计算机,诸如服务器计算机、台式计算机、平板计算机、智能电话或执行管理程序12的任何其它计算机,其继而部署虚拟机15A-15N。托管节点10包括包含硬件(例如电子电路)的组件。托管节点10包括处理器105、耦接到存储器控制器115的存储器110以及一个或多个输入装置145和/或输出装置140,例如经由本地I/O控制器135通信地耦接的外围或控制装置,以及其它组件。这些装置140和145可包括例如电池传感器、位置传感器(高度计40、加速度计42、GPS 44)、指示器/识别灯等。诸如传统键盘150和鼠标155的输入设备可以被耦接到I/O控制器135。I/O控制器135可以是例如如本领域已知的一个或多个总线或其它有线或无线连接。I/O控制器135可以具有附加的元件,例如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器,以实现通信,为了简单起见省略了这些元件。

I/O设备140、145还可以包括与输入端和输出端二者通信的设备,例如磁盘和磁带存储器、网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统或网络)、射频(RF)或其他收发器、电话接口、桥接器、路由器等。

处理器105是用于执行硬件指令或软件的硬件设备,特别是那些存储在存储器110中的硬件指令或软件。处理器105可以是定制的或商业上可获得的处理器、中央处理单元(CPU)、与托管节点10相关联的多个处理器中的辅助处理器、基于半导体的微处理器(以微芯片或芯片组的形式)、宏处理器或用于执行指令的其它装置。处理器105包括高速缓存170,其可以包括但不限于加速可执行指令提取的指令高速缓存、加速数据提取和存储的数据高速缓存、以及用于加速可执行指令和数据二者的虚拟到物理地址转换的转换后备缓冲器(TLB)。高速缓存170可以被组织为更多高速缓存级别(L1、L2等)的层级。

存储器110可包括以下中的一个或其组合:易失性存储器元件(例如,随机存取存储器RAM,诸如DRAM、SRAM、SDRAM)和非易失性存储器元件(例如,闪存、ROM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、磁盘、软磁盘、磁带盒、盒式磁带等)。此外,存储器110可以合并电、磁、光或其它类型的存储介质。注意,存储器110可以具有分布式架构,其中各种组件彼此远离,但是可以由处理器105访问。

存储器110中的指令可包括一个或多个单独的程序,每个程序包括用于实现逻辑功能的可执行指令的有序列表。在图2的示例中,存储器110中的指令包括执行管理程序12的适当的操作系统(OS)。该操作系统可以控制其他计算机程序的执行,并且提供调度、输入-输出控制、文件和数据管理、存储器管理、以及通信控制和相关服务。在诸如z系统的示例中,托管节点10的制造商可以提供管理程序12,在系统具有与z系统的结构不同的结构的情况下,其中管理程序12不是由硬件制造商提供的,所提供的云计算可以使用诸如来自VMWARE的管理程序12或其他管理程序提供商。在示例中,物理托管节点10的管理员不能修改管理程序12,除非在需要时以便应用由制造商提供的服务。例如,管理程序12可以被提供为用于托管节点10的“许可内部码(LIC)”和/或微码的一部分。

附加数据(包括例如用于处理器105的指令或其他可取得信息)可以被存储在存储装置120中,其可以是诸如硬盘驱动器或固态驱动器的存储设备。存储器110或存储装置120中的所存储指令可包括使得处理器能够执行本公开的系统和方法的一个或多个方面的指令。

托管节点10还可以包括耦接到用户接口或显示器130的显示控制器125。在一些实施例中,显示器130可以是LCD屏幕。在其它实施例中,显示器130可以包括多个LED状态灯。在一些实施例中,托管节点10还可以包括用于耦接到网络165的网络接口160。网络165可以是用于经由宽带连接在主机节点10与外部服务器、客户端等之间通信的基于IP的网络。在一个实施例中,网络165可以是卫星网络。网络165在托管节点10和外部系统之间发送和接收数据。在一些实施例中,网络165可以是由服务提供商管理的受管理IP网络。网络165可以例如使用无线协议和技术(诸如WiFi、WiMax、卫星或任何其他)以无线方式实现。网络165还可以是分组交换网络,例如局域网、广域网、城域网、因特网或其他类似类型的网络环境。网络165可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个人区域网(PAN)、虚拟专用网(VPN)、内联网或其它合适的网络系统,并且可以包括用于接收和发送信号的设备。

客户端设备20A可请求管理程序12部署具有对托管节点10的特定硬件和/或软件组件的访问权的对应虚拟机15A,例如,客户端设备20A可请求虚拟机15A具有对预定数量的处理器、预定量的易失性存储器(例如随机存取存储器(RAM))、预定量的非易失性存储器(例如存储空间)或任何其它硬件组件的访问权。可替换地或另外地,客户端设备20A可以请求虚拟机15A具有对特定硬件组件(例如由相应的唯一标识符标识的电子电路)的访问权。例如,客户端设备20A可以请求虚拟机15A具有对特定类型的处理器、协处理器、网卡、或任何其他芯片或电子电路的访问权。在一个示例中,客户端设备20A可以使用由电子电路的制造商提供的标识符来识别电子电路。在一个示例中,标识符可以与版本标识符结合使用。可替换地或另外地,客户端设备20A可请求虚拟机15A具有对特定的软件组件(例如操作系统、应用、基本输入/输出系统(BIOS)、启动镜像或任何其他软件组件)的访问权。所请求的软件组件可包括固件和托管节点10的硬件组件中的嵌入式程序。客户端设备20A可以使用由相应软件组件的开发者/制造商提供的相应唯一标识符来识别所请求的软件组件。在一个示例中,标识符可以与软件组件的版本标识符结合使用。

如前所述,对于将要成为安全VM的虚拟机15A,禁止所有非安全客户机和管理程序12对存储器110、存储装置120、寄存器的一个或多个部分以及与虚拟机15A相关联的任何其它数据的访问。在一个或多个示例中,管理程序12保证对于任何给定的驻留安全客户机页,仅可通过单个管理程序(主机)DAT映射来访问相关联的主机绝对地址。也就是说,存在映射到被分配给安全VM 15A的任何给定主机绝对地址的单个主机虚拟地址。此外,与任何给定安全客户机页相关联的管理程序DAT映射(主机虚拟到主机绝对)在其被页调入时不改变。此外,与任何安全客户机页相关联的主机绝对页仅被映射用于单个安全客户机。另外,在虚拟机15之间不存在存储器/寄存器的共享,尤其是在安全VM 15A的情况下。此外,在一个或多个示例中,管理程序12将存储装置120的安全部分分配给安全接口控件11。存储装置120的该安全部分仅在被分配后才可由安全接口控件11访问。在安全部分的内容被分配给安全接口控件11之后,虚拟机15和/或管理程序12都不能访问安全部分的内容。

对这些规则的任何尝试违反都被安全接口控件11和托管节点10禁止,并且可以引发警报。可以通过向一个或多个人员发送通知、阻止托管节点10的操作、阻止来自一个或多个客户端设备20的请求、阻止安全VM 15(以及任何其他安全VM)的操作等来引发警报。

图5示出了根据本发明的一个或多个实施例的用于管理程序启动安全VM的示例方法的流程图。该方法可包括在501处从客户端设备20A接收用于启动安全VM 15A的请求。在一个或多个示例中,可以从任何其他源接收请求,诸如另一VM 15B-15N、由管理程序12执行的计算机应用、管理员等。

该方法包括在505处创建状态描述符(SD)作为SIE(开始解释执行)指令的操作数。SD包含定义将要在被分配给安全VM的处理器105上仿真的安全vCPU状态的字段,vCPU状态基于客户机设备20A的请求。在一个或多个示例中,处理器105可被认为是虚拟处理器,因为处理器105可被指示在发起安全VM 15A的客户端20的请求下仿真另一处理器体系结构的行为。

图6描绘根据本发明的一个或多个实施例的SD的示例结构。在一个或多个示例中,相同的SD格式用于安全VM和非安全VM两者。

根据本发明的一个或多个实施例,状态描述符(SD)600包括模式控制字段602,其用于指示被分派的VM是安全的还是非安全的。在一个或多个示例中,模式控制字段602可以是比特。

此外,如果模式控制字段602指示SD 600是用于安全VM,则唯一标识标志符604为正在被分派的特定安全VM 15A提供安全客户域ID。对于非安全VM,唯一标识标志符604不被使用,并且可以包括默认值,诸如0(或指示字段未被使用的任何其他值)。

此外,SD 600,这里被称为父SD,包括指向安全SD块608的指针。父SD及其对应的安全SD被称为状态描述对。指向安全SD 608的指针在安全VM的情况下包括有效值,并且在非安全VM被分派的情况下被设置为空值。指向安全SD 608的有效指针指定安全SD块650的存储器位置。安全SD模块650驻留在安全存储器110中被分配为仅由安全接口控件11访问的部分中。安全SD块650包括返回父SD 600的指针658。当管理程序12建立安全VM 15A时,将用于安全SD的存储器的安全部分赠予/分配给安全接口控件11。安全存储器部分只能由安全接口控件11访问,而不能由管理程序12访问。它可以另外用相关联的客户域ID来标记。应注意,在其它示例中,可用不同方式执行在存储器的安全与非安全部分之间分离内容。

此外,SD 600包括一个或多个SD字段606。在一个或多个示例中,在使用安全SD650的情况下,另一组SD字段606也被维护在安全SD 650中。来自安全SD 650的SD字段606仅可由安全接口控件11访问。

图7描述了根据本发明的一个或多个实施例的SD字段的示例结构。在该情景下,术语“状态描述符”不仅包括状态描述本身,而且包括卫星块,其指针驻留在状态描述中,用作扩展。如图7所示,SD字段606可以包括VM通用寄存器(GR)402、访问寄存器(AR)404、控制寄存器(CR)406、VM定时器408(包括时钟比较器和CPU定时器)、VM前缀寄存器410、逻辑分区号(LPN)432、虚拟CPU号(VCN)412、线程有效性掩码(TVM)430、程序状态字(PSW)和指令地址(IA)414。另外,它可以包括控制信息,例如拦截控制(IC)位420,以指示某些指令(例如,加载程序状态字(LPSW)和无效页表进入(IPTE))是否要求对主机的拦截。所示的SD字段606是示例性的,并且在本发明的一个或多个实施例中可以不同,例如包括用于其它VM状态的各种其它字段。

返回参考图5的流程图,管理程序12发布SIE指令,其中SD 600作为操作数,指令的执行由安全接口控件11完成。SIE(开始解释执行)指令用于启动VM 15并将处理器105和其他计算资源分配给VM 15。在510处,安全接口控件11基于SD 600中的模式控制字段602来确定将要分派的VM是否安全。如果将要分派非安全VM,如目前所做的,则在515,使用来自SD600的SD字段606来分派非安全VM 15B。SIE指令将处理器105置于SD中定义的仿真状态。

或者,如果安全VM将要被分派510,则在520,安全接口控件11验证安全VM的正确性。这是通过确保被存储在SD字段606中的各种值在已配对的安全SD 650和父SD 600之间的一致性来执行的。在一个或多个示例中,SD字段606包含检查一致性的信息(例如,密钥、句柄)。例如,从非安全、父SD 600获得安全SD地址。从已配对的安全状态描述(650)获得的父SD地址(658)被期望与原始SIE操作数地址(即,指向非安全SD 600的指针)匹配。其它信息,如域ID,也被保存在安全和非安全SD中,并且可以被检查以确保两者中的值相等。

在安全VM正在被分派并且父、非安全SD 600和已配对的安全SD 650之间的一致性检查失败的情况下,安全VM 15A状态被认为是无效的,中止分派并且发送相应的通知,诸如视听通知、消息等(未示出)。在520处验证VM状态的正确性的情况下,在525,安全接口控件11设置硬件中的一个或多个位以将计算资源配置为以安全模式分配给安全VM 15A。

此外,在530,安全客户域ID 604被加载到硬件和其他计算资源中以建立用于安全VM 15A的安全执行环境。可以存在安全执行环境的不同模式,其通常提供对管理程序12对正被分派的安全VM 15A的状态的访问的变化的限制。在一个或多个示例中,这种模式促进调试涉及安全VM 15A的工作流,尽管在本发明的一个或多个实施例中附加的应用也是可能的。

例如,考虑用于安全VM 15A的安全执行环境的三种调试安全操作模式:透明、半透明和全透明模式。透明调试模式用于允许管理程序12仅查看VM 15的寄存器,而不查看与VM15相关联的安全存储器。在此模式中,父、非安全SD 600保存VM 15的寄存器,并且不使用在其它模式中将用于验证(520)的安全SD 650。在半透明模式中,尽管VM 15的寄存器被保存在安全SD 650中,但是在VM 15的指令拦截或中断时,安全接口控件11通过将寄存器复制到非安全的父SD 600来确定哪个(些)寄存器暴露给管理程序12。在非透明模式中,客户机寄存器根本不暴露给管理程序12,并且仅在安全SD 650中维护。

在535处,所述方法(图5)确定基于安全接口控件来选择的调试安全模式进行控制。提供这些操作模式的硬件控件由被保存在安全SD 650中的调试掩码字段来掩蔽,也就是说,安全SD 650具有指示三种调试模式中的哪一者被允许的信息。安全接口控件11能够在需要时在运行时间改变安全SD 650中的调试掩码。在全透明模式被选择的情况下,在540处,来自非安全SD 600的SD字段606被用于分派VM 15。在这种情况下,允许管理程序访问所分派的VM 15的完整寄存器状态。在半透明模式或非透明模式被选择的情况下,分别在545和550处,使用来自安全SD 650的SD字段606来分派安全VM 15A。然后,执行560所分派的VM,直到达到565退出条件。退出条件可以包括指令或中断解释、退出VM的用户请求等。

图8示出了根据本发明的一个或多个实施例的用于根据所选择的调试安全模式来促进安全VM的退出的方法的流程图。在801处,该方法在VM的退出条件发生之后启动。在805处,安全接口控件11检查当VM被分派时为VM选择的调试安全模式。

在全透明模式被选择805的情况下,VM状态被存储到非安全状态描述600中的SD字段606中。即,在810处,如现有解决方案中所做的,VM类似于非安全VM被退出。通过设置计算资源850的一个或多个参数,与VM 15相关联的计算资源被配置为处于管理程序模式。来自SD 600的SD字段606驻留在非安全存储器中,并且可由管理程序12访问。

在选择805非透明调试安全模式的情况下,VM 15作为安全VM被退出,即使在VM退出之后,管理程序也不能够访问VM状态的任何数据/存储器或其他参数。因此,在820处,安全接口控件11将VM状态保存到安全SD 650中的SD字段606中,其驻留在存储器110的安全部分中,并且不能由管理程序12访问。此外,在822处,安全接口控件11重新配置与VM 15相关联的计算资源以在非安全模式下操作。

在选择了半透明调试安全模式的情况下,在830处,安全接口控件11确定管理程序辅助是否已经被请求用于完成与VM 15相关联的任务。例如,当与VM 15相关联的一个或多个值要经由管理程序12被访问以用于调试或任何其他此类任务时,可以做出此类辅助请求。如果请求管理程序辅助,则安全接口控件11在832处确定在VM 15退出时管理程序将可访问与VM15相关联的什么数据。在一个或多个示例中,辅助请求包括来自VM 15的哪个(哪些)寄存器将可由管理程序12访问的标识。可替换地,或附加地,辅助请求可以包括来自VM状态的任何其他参数的标识,该参数将在VM 15退出时可由管理程序12访问。

在834处,安全接口控件11将所确定的来自VM状态的、管理程序12将可访问的参数/数据存储到非安全SD 600的SD字段606中。因此,由于SD 600驻留在存储器110的非安全部分中,所以管理程序12可访问所存储的数据。此外,在820处,安全接口控件11将VM状态保存到安全SD 650中的SD字段606中,其在存储器110的安全部分中,并且不能由管理程序12访问,此外,在822处,安全接口控件11重新配置与VM 15相关联的计算资源以在非安全模式中操作,并且将管理程序状态加载回硬件中。

如果没有做出管理程序辅助请求(830),则在820处,安全接口控件11将VM状态保存到管理程序12不可访问的安全SD 650中的SD字段606中。此外,在822处,安全接口控件11重新配置与VM 15相关联的计算资源以便在非安全模式下操作。

对于所有三种调试安全模式,在保存VM状态之后,在850处,安全接口控件11退出到管理程序12,以继续托管节点10的进一步操作。

因此,本发明的一个或多个实施例促进将VM作为安全VM或非安全VM来分派和退出(解除分派),并且还保持数据安全,以免被管理程序和/或系统中的其它VM访问。

根据本发明的一个或多个实施例,计算机服务器可以托管禁止管理程序访问存储器、寄存器和与安全VM相关联的其他数据的安全VM,而不必改变管理程序和/或安全VM代码/体系结构来分派安全VM。相反,根据本发明的一个或多个实施例,包括毫码的安全接口控件使用状态描述符的改进结构和存储装置/存储器的安全部分来促进保护数据。此外,安全接口控件基于调试安全模式存储来自VM状态的数据,使得在要使管理程序可访问一个或多个参数的情况下,安全接口控件(毫码)可以这样做。

本发明的一个或多个实施例根植于计算机技术,尤其是虚拟机托管计算机服务器。此外,本发明的一个或多个实施例通过促进托管VM的计算机服务器托管安全VM来促进对计算技术本身的操作的改进,特别是虚拟机托管计算机服务器,其中甚至管理程序也被禁止访问与安全VM相关联的存储器、寄存器和其他此类数据。此外,本发明的一个或多个实施例通过使用安全接口控件来提供朝向对托管计算服务器的VM的改进的重要步骤,所述安全接口控件包括毫码以促进安全VM和管理程序的分离,并且因此维持由计算服务器托管的VM的安全性。安全接口控件提供轻量级中间操作以促进安全性,而不增加如本文所述的在VM的初始化/退出期间保护VM状态的实质开销。

本发明可以是任何可能的技术细节集成级别的系统、方法和/或计算机程序产品。该计算机程序产品可以包括一个计算机可读存储介质(或多个计算机可读存储介质),其上具有计算机可读程序指令,用于使处理器执行本发明的各方面。

计算机可读存储介质可以是有形设备,其可以保留和存储指令以供指令执行设备使用。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何合适组合。计算机可读存储介质的更具体示例的非详尽列表包括以下内容:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字通用光盘(DVD)、记忆棒、软盘、诸如在其上记录有指令的打孔卡或凹槽内凸起结构的机械编码装置、以及前述的任何合适的组合。这里使用的计算机可读存储介质不应被解释为瞬时信号本身,诸如无线电波或其它自由传播的电磁波、通过波导或其它传输介质传播的电磁波(例如,通过光纤电缆传递的光脉冲)或通过电线传输的电信号。

本文描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如,因特网,局域网,广域网和/或无线网络)下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。

用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括诸如Smalltalk,C++等的面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分地在用户计算机上执行、作为独立的软件包执行、部分地在用户计算机上并且部分地在远程计算机上执行、或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户的计算机,或者,可以连接到外部计算机(例如,利用互联网服务提供商来通过互联网连接)。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来个性化定制电子电路,该电子电路执行计算机可读程序指令,以便执行本发明的各方面。

本文参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图图示和/或框图来描述本发明的各方面。将理解,流程图图示和/或框图中的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读程序指令实现。

这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器来生产出机器,以使得通过计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现流程图和/或一个框图块或多个框图块中所指定的功能/动作的装置。这些计算机可读程序指令还可以存储在计算机可读存储介质中,这些计算机可读程序指令可以使得计算机、可编程数据处理装置和/或其它设备以特定方式工作,以使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或一个框图块或多个框图块中指定的功能/动作的各方面的指令。

计算机可读程序指令还可以被加载到计算机,其它可编程数据处理装置或其它设备上,以使得在计算机、其它可编程装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,这样在计算机、其它可编程装置或其它设备上执行的指令实现在流程图和/或一个框图块或多个框图块中指定的功能/动作。

附图中的流程图和框图示出根据本发明的各种实施例的系统,方法和计算机程序产品的可能实施方式的体系结构,功能和操作。在这方面,流程图或框图中的每个框可以表示模块、程序段或指令的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施方式中,框中所标注的功能可以不按图中所示的顺序发生。例如,连续示出的两个框实际上可以基本上并行地执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。还应注意,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行特定功能或动作,或执行专用硬件和计算机指令的组合的专用的基于硬件的系统来实现。

已经出于说明的目的呈现了对本发明的各种实施例的描述,但其并非旨在是穷尽性的或限于所公开的实施例。在不背离所描述的实施例的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。本文所使用的术语被选择为最好地解释实施例的原理、实际应用或对市场上存在的技术的技术改进,或使本领域的其他普通技术人员能够理解本文所公开的实施例。

27页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于中断使能的安全接口控件高级指令拦截

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类