用于计算实例内的增强安全计算的经验证孤立运行时环境的制作方法

文档序号:27343611发布日期:2021-11-10 04:39阅读:102来源:国知局
用于计算实例内的增强安全计算的经验证孤立运行时环境的制作方法
用于计算实例内的增强安全计算的经验证孤立运行时环境


背景技术:

1.许多公司和其它组织操作计算机网络,所述计算机网络互连许多计算系统以支持其操作,如计算系统被共同定位(例如,作为局部网络的一部分)或替代地定位在多个不同的地理位置中(例如,通过一个或多个私人或公共中间网络连接)。例如,容纳大量互连计算系统的数据中心已经变得司空见惯,如由单个组织和代表单个组织运营的专用数据中心,以及由作为企业的实体运营以向客户提供计算资源的公共数据中心。一些公共数据中心运营商为各种客户拥有的硬件提供网络接入、电力和安全安装设施,而其它公共数据中心运营商提供“全方位服务(full service)”设施,所述全方位服务设施还包含可供所述运营商的客户使用的硬件资源。
2.用于商品硬件的虚拟化技术的出现已经在管理具有不同需求的许多客户的大规模计算资源方面提供了益处,从而允许多个客户有效且安全地共享各种计算资源。例如,虚拟化技术可以通过向每个用户提供由单个虚拟化主机托管的一个或多个“客户”虚拟机来允许单个物理虚拟化主机在多个用户之间共享。每个这样的虚拟机可以表示充当不同逻辑计算系统的软件模拟,所述软件模拟向用户提供他们是给定硬件计算资源的唯一运营商的假象,同时还在各种虚拟机之间提供应用隔离和安全性。具现化同一主机上的若干不同虚拟机也可以帮助增加数据中心处的总体硬件利用率水平,从而带来更高的投资回报率。
3.在许多情况下,虚拟化资源可以用于访问或操纵敏感信息的应用程序。例如,金融应用程序、医疗应用程序等都可能处理旨在保密的数据集。可以利用如加密密钥、数字证书等安全相关的工件来确保一些应用程序的机密性和隐私。
附图说明
4.图1展示了根据至少一些实施例的示例系统环境,其中可以使用向虚拟化计算服务的计算实例分配的资源子集来设置具有经验证的软件配置的孤立运行时环境。
5.图2展示了根据至少一些实施例的用于在虚拟化主机的计算实例处验证孤立运行时环境的配置的示例交互的概览。
6.图3展示了根据至少一些实施例的使用安全工件在孤立运行时环境处执行的计算的示例请求/响应工作流程的概览。
7.图4展示了根据至少一些实施例的与孤立运行时环境的配置和使用相关的示例编程交互。
8.图5展示了根据至少一些实施例的可以在虚拟化计算服务处建立的计算实例的示例类别。
9.图6展示了根据至少一些实施例的用于实例化孤立运行时环境的请求的示例元素。
10.图7展示了根据至少一些实施例的对与孤立运行时环境有关的配置验证查询的响应的示例元素。
11.图8展示了根据至少一些实施例的包括孤立运行时环境的计算实例的示例实时迁
移。
12.图9是展示了根据至少一些实施例的可以被执行以在虚拟化计算服务的计算实例内建立和使用孤立运行时环境的操作的各方面的流程图。
13.图10是展示了可以在至少一些实施例中使用的示例计算装置的框图。
14.尽管本文通过举例的方式针对若干实施例和说明性附图描述了实施例,但是本领域技术人员将认识到,实施例不限于所描述的实施例或附图。应当理解的是,附图和对其的详细描述并非旨在将实施例限制于所公开的特定形式,而相反,本发明将覆盖落入由所附权利要求限定的精神和范围内的所有修改、等效物和替代方案。本文所使用的标题只是出于组织目的,而不意图用于限制本说明书或权利要求的范围。如在整个本技术中使用的,词语“可以(may)”以允许的意义(即,意指“有可能”),而不是强制意义(即,意指“必须”)使用。类似地,词语“包含(include、including和includes)”意味着包含但不限于。当在权利要求中使用时,术语“或”用作包含性的而不是排他性的或。例如,短语“x、y或z中的至少一个”意指x、y和z中的任何一个,以及它们的任何组合。
具体实施方式
15.本公开涉及用于实施具有可验证软件配置的孤立运行时环境用于在虚拟化计算服务的计算实例(如客户虚拟机)内进行敏感或增强安全计算的方法和设备。例如,可以代表虚拟化计算服务的客户端设置此类运行时环境,以使用易于使用的编程接口在服务处执行使用安全工件(如加密密钥)的计算,无需使用特殊用途的安全硬件或非标准编程技术,同时降低或最小化安全工件受损的可能性。虚拟化计算服务(vcs)的客户端可能已经将计算实例用于多种类型的应用程序,因此扩展计算实例的功能以支持孤立运行时环境(ire)可以使客户端能够继续使用熟悉的接口,同时显著增强应用程序安全。在各个实施例中,在虚拟化管理软件的一个或多个组件(例如,管理程序内的安全管理器和/或资源隔离管理器)以及在计算实例中设置的中介通信进程(cip)的帮助下,可以降低安全工件的损害或“泄漏”的可能性。在一些情况下,ire可以用于不一定需要使用密钥或其它安全工件的任务。在一些实施例中,vcs客户端可以仅确保已经使用本文所描述的技术验证了ire的配置,并且然后利用ire来执行期望的任务——例如,以用特定的输入数据集运行包含在ire中的特定程序并获得对应的结果。
16.根据至少一些实施例,系统可以包括提供商网络的虚拟化计算服务(例如,公共云计算环境)的一个或多个计算装置。计算装置可以包含当在一个或多个处理器上或跨一个或多个处理器执行时使所述装置在虚拟化主机或服务器处启动计算实例(ci)的指令。可以在不同实施例中设置若干种类型或类别的计算实例中的任何一种,包含例如客户虚拟机、直接访问主机硬件中的一些硬件的裸金属实例等。在各个实施例中,可以分配包含主机的存储器区段的一组资源以供计算实例使用,例如,由在主机处运行的虚拟化管理组件使用。在至少一些实施例中,主机的虚拟化管理组件可以包含管理程序,所述管理程序充当计算实例与主机的物理硬件装置中的至少一些物理硬件装置之间的中介,并且管理程序可以参与计算实例的部分或全部资源的分配。在一些实施例中,一些虚拟化管理任务可以从主机的主处理器或cpu卸载;例如,经由外围互连连接到cpu的一个或多个虚拟化管理卸载卡可以用于实施一些类型的虚拟化管理任务(在一些情况下,包含为计算实例、联网相关任务、
存储相关任务等分配存储器)。
17.在一些实施例中,在虚拟化主机处,为计算实例分配的资源子集可以被隔离或留出以供在计算实例内建立并与所述计算实例紧密耦接的孤立运行时环境(ire)独占使用。例如,如果为计算实例指定了k千兆字节的存储器,则可以为孤立运行时环境(例如,通过主机的虚拟化管理组件)划分出包括l千兆字节的存储器区段,其中l<k,使得计算实例仅可以在孤立运行时环境的寿命内访问剩余的(k

l)千兆字节。在此类实施例中,为ire隔离出的存储器的内容对于处于ire本身外部(即,不是其一部分)的任何程序或进程可能是不可见的。在一些实施例中,还可以为ire留出其它类型的资源,如虚拟化处理器,从而减少对于计算实例保持可用的那种类型的可用资源的量。在一些实施例中,计算实例可以被称为“父”计算实例,并且ire可以被称为父计算实例的“子”运行时环境。在一些实施例中,ire还可以被称为“私有软件飞地”或“虚拟化飞地”。在各个实施例中,可以在ire上强制执行关于与其它实体的交互的多个约束——例如,与虚拟化主机外部的端点的网络通信可能被禁止,在ire内运行的进程可能不被授予对持久存储装置或文件系统的访问权限等等。
18.在至少一些实施例中,可以在计算实例内建立通信中介进程(cip)(或包括一个或多个进程的中介代理)以用于与ire交互。在一些实施方案中,映射在ire和计算实例的相应地址空间内的共享存储器区段可以用作cip与ire之间的本地通信信道。在至少一些实施例中,基于双向通知的机制可以用于cip与ire之间的通信。与涉及轮询的技术相比,在此类实施例中,中断驱动方法可以用于cip与ire之间的通信。在其它实施例中,可以采用轮询技术。
19.在一些实施例中,虚拟化主机可以包括安全管理器,例如,包括在管理程序内运行的一个或多个进程。安全管理器可以测量、分析或验证ire的软件配置,例如响应来自vcs的客户端的请求,并向客户端提供其测量、分析或验证的结果。在一些实施例中,查询可以由客户端(或通过由客户端选择/授权的一些其它实体)发送到计算实例,并且cip可以向ire内的一个或多个进程传输查询的内部版本;ire然后可以与安全管理器交互,以使对ire软件堆栈的测量或分析能够执行。在不同的实施例中,可以采用任何适当的软件验证或认证测试/技术,包含例如生成表示ire的已安装软件的散列值,所述散列值可以与表示相应可接受的软件配置的一组散列值进行比较。在至少一些实施例中,由安全管理器提供的响应可以包含安全管理器的身份的证据(例如,经由证书链植根于客户端所信任的授权机构的数字证书)、ire的身份的证据,和/或其它元素,如由客户端发送的查询中包含的随机数(random number)或随机数(nonce)。
20.如果vcs客户端满意验证/认证的结果由受信任方(安全管理器)提供,并且ire的验证分析或认证的结果对vcs客户端来说是可接受的,则在各个实施例中,可以在客户端与ire之间建立安全通信信道(在概念上类似于tls(传输层安全)会话)。此类信道或会话可以利用cip作为中介,因为在ire或客户端处准备的经加密消息可以由cip传递到客户端或ire。使用此类信道,可以在ire处获得经加密应用程序安全工件,如稍后将用于代表客户端在ire处执行计算的加密密钥。在各个实施例中,可以在ire处解密安全工件。应注意的是,尽管cip可以帮助经由安全信道在客户端于ire之间传输消息,但是在此类实施例中,可以使用cip无法访问的共享秘密来加密安全工件;因此,安全工件的解密版本可能无法在cip或在虚拟化主机处的ire外部运行的任何其它进程或程序处获得。在获得安全工件之后,
ire可以在客户端的请求下使用安全工件执行计算,并且在各个实施例中,所述计算的结果可以从ire(经由cip)提供到任何期望目的地。由于对ire通信进行的各种限制,以及用于验证ire的可信度的技术,在各个实施例中,安全工件被误用或受损的可能性可以显著降低;例如,在至少一些实施例中,即使相对于ire的父计算实例具有根或管理员特权的用户也可能无法访问或获得未经加密的安全工件。因此,在此类实施例中,访问敏感数据的各种类型的应用程序可以使用ire安全地运行,包含所谓的“盲执行”应用程序,其中使用ire处的敏感数据执行算法,使得父计算实例的程序或进程仅可以访问算法的输入和输出,并且不能访问敏感数据本身。在一些场景中,尽管vcs客户端可以如上文所描述的在安全管理器的帮助下验证ire的可信度,但待在ire处运行的应用程序可能不需要经由安全通信信道传输安全工件。相反,在检查了ire的配置并发现满意之后,在一些实施例中,客户端可以仅利用ire来运行不需要安全工件或上文所描述的类型的安全通信信道的期望的应用程序。
21.本领域技术人员根据本公开将理解,某些实施例可以能够实现各种优点,包含以下中的一些或全部:(a)显著增强处理敏感或机密数据并且是在虚拟化计算服务处运行的应用程序的安全性,(b)减少与安全工件受损导致的恢复操作(如撤销数字证书、重新生成和重新分发加密密钥等)相关的处理和/或联网资源使用量,以及(c)通过提供对专门用于敏感数据计算的资源的更清晰的洞察,改善虚拟化计算服务的客户端以及在此类服务处运行的应用程序的管理员的使用体验。
22.在各个实施例中,虚拟化计算服务可以实施可以由客户端用来提交与ire相关的请求的一组编程接口。此类接口可以包含例如一个或多个基于网络的控制台、应用编程接口(api)、命令行工具、图形用户接口等。使用此类接口,在一个实施例中,vcs客户端可以提交用于启动包括ire的计算实例的请求——也就是说,用于启动计算实例的请求还可以包含指示应该设置ire的参数。在其它实施例中,可以响应于第一编程请求来设置计算实例,并且然后可以响应于第二编程请求稍后在计算实例内实例化ire。在一些实施例中,vcs的编程接口可以用于指定ire的各种细节——例如,可以以编程方式指示待用于ire的虚拟机镜像(不同于用于父计算实例的机镜像),可以以编程方式指定待用于ire的软件容器、待在ire内运行的程序等。在一些实施例中,ire可以支持多种编程模型,包含其中库操作系统与unikernel组合的模型、其中行业标准软件容器可以在ire处使用或用于ire的模型等。
23.在至少一些实施例中,由vcs客户端指定或在vcs控制平面(vcs的管理组件)处选择的一个或多个参数可能会限制ire的寿命——例如,ire可以在其被实例化之后t分钟终止或关闭。对ire寿命施加的此类约束可以进一步降低使对ire可用的安全工件被除安全程序的预期接收者或用户之外的实体损害或获取的可能性。在至少一些实施例中,可以使用给定计算实例的资源,例如,利用分配以供ire中的单独的ire独占使用的不同量的存储器和/或其它资源来设置若干不同的ire。例如,在此类实施例中,ire中的单独的ire可以用于处理敏感数据的相应不同应用程序。
24.在至少一个实施例中,响应于客户端请求或基于对在vcs收集的度量的分析,包括一个或多个ire的计算实例可以迁移到不同的虚拟化主机,如比用于计算实例的初始主机具有更多存储器或更多计算容量的主机。在此类实施例中,ire可以与父计算实例一起迁移,并且在一些情况下,为计算实例和/或为ire分配的资源量在新主机上可以与在原始主机上不同。例如,在一种场景中,迁移之后向父计算实例分配的总存储器量可能会增加g千
兆字节,并且为ire隔离出的总存储器量也可能会在迁移之后增加至多g千兆字节。在至少一些实施例中,vcs的编程接口可以用于获得与ire相关的度量——例如,在各个ire处使用的存储器量、ire的cpu利用率的度量、传送入和传送出ire的数据量等可以使对授权的vcs客户端可用。
25.示例系统环境
26.图1展示了根据至少一些实施例的示例系统环境,其中可以使用向虚拟化计算服务的计算实例分配的资源子集来设置具有经验证的软件配置的孤立运行时环境。如所示出的,系统100包括提供商网络102的虚拟化计算服务(vcs)110的各种资源,包含虚拟化主机机群130和在所描绘的实施例中被统称为vcs控制平面的一组管理组件。由如公司或公共部门组织的实体设置的网络,以提供可通过互联网和/或其它网络访问的一个或多个服务(如各种类型的多租户和/或单租户基于云的计算或存储服务)到分布式客户端集,所述网络在各个实施例中可以称为提供商网络。在一些实施例中,提供商网络也可以被称为“公共云”环境。给定的提供商网络可以包含托管实施、配置和分布由提供商提供的基础设施和服务所需的各种资源池的多个数据中心,如物理和/或虚拟化计算服务器、存储装置、联网设备等的集合。
27.vcs 110可以实施一个或多个编程接口177,包含例如一个或多个基于网络的控制台、应用编程接口(api)的集合、命令行工具、图形用户接口等。此类接口可以由如客户端150a

150c等vcs客户端150用来请求各种类型的配置操作、接收对应的响应等。例如,客户端150可以提交编程请求以使用接口177启动或实例化计算实例(ci)134,如ci 134a、134b、134k和134l,和/或设置孤立运行时环境(ire)136(例如,ire 136a、136b、136c或136k)。在各个实施例中,计算实例134中的单独的计算实例可以包括相应的虚拟机和/或其它类型的程序执行平台(如直接控制被授予比被授予客户虚拟机更多的硬件装置的裸金属实例)。
28.在一些实施例中,用于启动计算实例的至少一些类型的客户端请求可以被定向到vcs控制平面112。控制平面112可以包括多个子组件,包含一个或多个客户端请求处理程序114、配设管理器116、网络配置管理器118、可扩展性/可用性管理器120等,所述子组件中的单独的子组件可以分别使用所描绘的实施例中的一个或多个计算装置处的硬件和软件的某种组合来实施。客户端对计算实例的请求最初可以在请求处理程序114处进行处理。所述请求可以执行一些初始检查(例如,验证客户端对所请求的操作种类具有许可),并且然后将所述请求的内部版本传递到控制平面的一个或多个其它组件以进行实施。例如,配设管理器116可以负责标识特定虚拟化主机(vh)132,如vh 132a或132b,在所描绘的实施例中,一个或多个所请求的计算实例将在所述vh处启动。在各个实施例中,网络配置管理器118可以负责在计算实例134与提供商网络102内部和外部的其它实体之间设置连接,包含例如与提供商网络的存储服务和/或其它服务(图1中未示出)的连接。可扩展性和可用性管理器120可以负责自动修改计算实例和其它资源的配置,例如,基于负载平衡考虑、工作负载的增加或减少等。在一些实施例中,控制平面112还可以包含迁移管理器,所述迁移管理器例如基于对所收集的度量的分析和/或基于来自vcs客户端的请求在虚拟化主机之间传送计算实例(连同其孤立运行时环境)。
29.虚拟化主机(vh)132中的单独的vh可以包括虚拟化管理组件的相应集合,包含例如vh 132a处的管理程序137a和vh 132b处的管理程序137b。此类管理程序137可以充当计
算实例134与vh的硬件元件中的至少一些硬件元件之间的中介,包含例如物理处理器(例如,中央处理单元(cpu)、图形处理单元(gpu)等),存储器、持久存储装置、网卡、外围装置等。在一些实施例中,虚拟化管理责任中的至少一部分可以从管理程序卸载到硬件卡(例如,经由外围连接接口或pci快速互连连接到主机的cpu的卡),以便释放用于计算实例的主机的主处理器的更多计算能力。
30.在由客户端150向vcs控制平面112发送用于启动计算实例134的请求之后,用于启动所述实例的对应内部命令可以被传输到在所描绘的实施例中在机群130的所选虚拟化主机132处运行的虚拟化管理组件(例如,管理程序137,或卸载的虚拟化管理组件)。一组资源,包含虚拟化主机的存储器区段,可以由虚拟化管理组件分配给计算实例134。在一些实施例中,客户端请求和/或内部命令还可以指示待在计算实例处设置一个或多个孤立运行时环境(ire)136。在其它实施例中,单独的请求和/或命令可以被传输到虚拟化主机,例如,在已经设置计算实例134之后,以使用为计算实例134指定的资源中的一些资源来实例化ire 136。在一些实施例中,向计算实例分配的存储器的至少一部分可以由管理程序137为ire 136隔离出或留出。其资源用于ire 136的计算实例134可以被称为ire的“父”计算实例,并且ire可以被称为子或从属运行时环境,在逻辑上紧密连接到父计算实例。因此,例如,ire 136a可以设置为ci 134a作为其父,ci 134b可以被配置为ire 136b和136c的父计算实例,并且ci 134k可以是ire 136k的父计算实例。应注意的是,在所描绘的实施例中,并非vcs 110的vh 132处的所有计算实例都必须具有子ire:例如,在vh 132b处运行的ci 134l可以不包含ire。在至少一些实施例中,在vcs 110处可以支持多种计算实例类型或类别,其中如果期望的话,一些类别使得能够在单独实例处建立ire,并且其它类别不支持ire实例化。如图1所指示的,在至少一些实施例中,给定虚拟化主机132(如132a和132b)的资源可以用于多个计算实例,所述多个计算实例中的一些计算实例可以代表不同的vcs客户端来设置。例如,vh 132a具有两个计算实例:代表客户端150a设置的ci 134a和代表客户端150b设置的ci 134b。其它虚拟化主机,如132b,可以包括代表单个客户端(例如,客户端150c)设置的一个或多个计算实例。此外,在一些场景中,向给定计算实例分配的相应资源子集可以为多个ire 136隔离或划分(如在ci 134b的情况下,其是ire 136b和ire 136c两者的父)。在至少一些实施例中,单独的ire 136和其父计算实例(或其在同一计算实例处的对等ire)的寿命可能不同——例如,在图1所示的示例场景中,其可能是ire 136a在ci 134a之前终止,或者ire 136b在ire 136c之前终止的情况。至少在一些实施例中,在父计算实例处运行的程序或进程可能无法访问为ire隔离出或留出的父计算实例的资源——例如,如果最初分配给ci 134a的总共32千兆字节的存储器中的4千兆字节留出给ire 136a,则ci134a内的程序/进程可能仅能够访问和使用剩余的28千兆字节,而ire 136a仍然存在。
31.当配置或实例化ire 136时,在各个实施例中,可以强制执行多个约束以限制ire内的程序或进程可以与其它实体(例如,在父计算实例中运行的进程/程序、或在父计算实例外部)通信或交互的方式。例如,在至少一个实施例中,可以禁止ire进程/程序与ire外部的任何实体进行有线联网通信(例如,通过不配置可访问ire的虚拟或物理网络接口)。类似地,在各个实施例中,ire 136可以被配置成使得禁止访问持久存储装置和/或文件系统——即,ire136内的进程/程序可能无法对持久存储设备执行读取或写入。在一些实施例中,可以在ire的父计算实例中实例化一个或多个通信中介进程(cip)或守护进程,所述一
个或多个cip或守护进程被允许使用本地通信信道代表父计算实例内部或外部的其它进程/程序与ire通信。例如,在一些实施例中,映射到cip和ire两者的共享存储器的一个或多个缓冲器可以用于此类通信。在至少一些此类实施例中,基于中断或基于通知的通信技术可以用于cip与ire之间的双向通信——例如,当消息准备好用于ire时,通知可以由cip生成,并且类似的通知可以用于指示ire何时完成读取缓冲器、ire何时在缓冲器中准备好出站消息、cip何时完成传输所述出站消息等。在一些实施例中,此类通信机制可以被称为“门铃”机制。
32.在至少一些实施例中,vh 132的虚拟化管理组件,如管理程序137,可以包括负责验证或测量ire 136的软件配置的安全管理器。例如,客户端150可以提交引导到ire 136的验证查询,所述验证查询最终可以在安全管理器处获得。在此类请求的一个示例路径中,可以在通信中介进程(cip)处获得验证请求,所述cip可以经由本地通信信道将所述验证请求传递到ire,并且ire可以进而通知安全管理器关于查询。在各个实施例中,安全管理器可以执行ire的软件堆栈的测量和/或认证,并且可以向查询提交者提供此类配置验证或分析操作的结果。在至少一个实施例中,一个或多个散列函数可以由安全管理器应用于ire的安装软件,并且可以将散列函数的结果与客户端可接受配置的散列结果进行比较。在至少一些实施例中,安全管理器本身可以被信任的证据(如对安全管理器进行标识的数字证书),以及ire136和/或其父计算实例的唯一标识符也可以响应于配置验证查询来提供。在至少一个实施例中,客户端可以根据需要在ire的寿命期间若干不同次提交用于对给定ire的配置进行分析的查询,并且接收响应于安全管理器的每个查询而执行的分析的相应结果。
33.在代表ire建立的客户端对ire的可信度感到满意之后,在各个实施例中,一个或多个安全工件(例如,用于在ire处代表客户端计算一个或多个应用程序的加密密钥)如果需要,可以安全地传输到ire。在此类实施例中,可以采用不允许安全工件的未经加密版本被除供应工件的客户端和ire本身之外的任何方拦截或访问的机制。在一些实施例中,例如,可以在客户端与ire之间建立tls(传输层安全)会话的逻辑等效物,并且可以使用由ire和客户端在会话期间确定/生成的共享秘密密钥对安全工件进行加密。应注意的是,即使工件的经加密版本可以在从客户端到ire的途中通过通信中介进程(cip)传递,但在各个实施例中,cip可能不具有解密工件所需的共享秘密密钥。在至少一些实施例中,可以使用共享秘密密钥在ire内生成工件的解密版本。
34.在各个实施例中,在ire内获得安全工件之后,用于代表客户端使用工件执行计算的请求可以由cip例如从父计算实例内的其它进程/程序传送到ire。考虑其中将代表媒体分发应用程序使用安全工件来转换或处理数字媒体对象(如视频或音频记录)的部分或全部的示例场景。在此示例场景中,可以将用于执行转换的请求连同数字媒体对象本身一起经由cip从在父计算实例中运行的应用进程传递到ire。可以使用安全工件在ire处实施转换,并且可以经由cip向应用进程提供结果。在此示例场景中,可以在ire内使用安全工件来实现应用程序的计算目标,而甚至不会在虚拟化主机处暴露于ire外部的任何其它进程或程序。在至少一些实施例中,在完成需要来自ire的安全计算之后,可以终止ire,并且可以将较早与父计算实例隔离开的资源返回到父计算实例。
35.孤立运行时环境的示例设置操作
36.图2展示了根据至少一些实施例的用于在虚拟化主机的计算实例处验证孤立运行
时环境的配置的示例交互的概览。在所描绘的实施例中,客户端255可以向例如与图1的vcs 110类似的虚拟化计算服务(vcs)的控制平面提交请求以实例化可以在其处建立ire的计算实例,从而导致在虚拟化主机232上建立计算实例244。基于用于启动计算实例的请求的参数,或基于单独的编程请求,可以在各个实施例中设置孤立运行时环境(ire)246,其中较早分配给计算实例244(ire的“父”计算实例)的一些资源被划分或隔离以供ire独占使用。在至少一些实施例中,客户端可以例如通过提供虚拟机镜像、通过从由vcs支持的一组软件堆栈中进行选择等来指示待在ire处使用的期望软件堆栈的至少一部分。在至少一些实施例中,虚拟化主机232的虚拟化管理组件234可以包含ire资源隔离管理器(irersm)238,所述irersm负责标识待被配置为由ire(通过在ire内启动的线程或进程)独占使用的资源。例如,从最初分配给父计算实例244的存储器区段277,irersm 238可以选择或标识存储器子集278以供ire独占使用;当在同一个父ci内设置另外的ire时,irersm 238可以为此类ire专门留出相应的另外子集。在父ci内运行的进程/程序在其被配置用于此类实施例中的ire之后可能无法访问隔离的存储器。在一些实施例中,其它资源的子集,如可能已经被指定由父计算实例244使用的虚拟cpu,也可以被指定为由ire独占使用。
37.在计算实例内,可以在各个实施例中实例化通信中介进程(cip)248。在一些实施例中,操作系统守护进程可以用作cip。在一个实施例中,可以建立此类cip守护进程作为建立ire 246的过程的一部分;在其它实施例中,cip守护进程可以作为父计算实例244的初始化或启动序列的一部分,或者在计算实例启动之后响应api的调用而启动。在各个实施例中,cip 248可以被配置成将数据从希望与ire通信的任何其它实体(例如,包括客户端255)传送到ire 246,并且将出站数据从ire 246传送到一个或多个目的地(例如,包含客户端255)。作为确保ire与任何外部实体(例如,除了管理程序234之外)隔离的配置步骤的一部分,在至少一些实施例中,ire 246的进程/程序可能不被允许通过使用虚拟化主机的网络接口卡的网络连接将数据传送到任何实体或端点;在此类实施例中,去往/来自ire的所有通信可能必须通过cip。类似地,在一些实施例中,ire 246的配置设置也可以禁止ire与持久存储设备之间的交互,以及在此类实施例中ire 246与文件系统之间的交互——也就是说,ire的进程/程序可能不允许从持久存储设备读取和写入到所述持久存储设备。在至少一些实施例中,可以为cip与ire之间的数据传送设置本地通信信道249。例如,在一个实施例中,cip和ire两者都可以访问的共享存储器的一部分可以被指定为存储被传送进/出ire的数据。在一些实施例中,可以使用双向通知或基于中断的机制来指示数据何时准备好由ire读取(对于入站到ire的数据)或由cip读取(对于从ire出站的数据)。在所描绘的实施例中,计算实例244可以包括各种其它进程/程序,如计算实例的应用组件256和/或操作系统组件,其在使用安全工件如加密密钥执行计算方面可以比ire更不受信任(从客户端的角度来看)。
38.在至少一些实施例中,为了验证ire 246的可信度,客户端255(例如,待在ire处用于计算的安全工件的外部源)可以向例如vcs控制平面或计算实例244发出配置验证查询,如箭头291所指示的。例如,在所描绘的实施例中,查询可以包含随机数或随机数;客户端255稍后可以确认在对查询的响应中包含相同的随机数。可以在cip 248处接收查询,所述cip进而可以将查询传递到ire。ire安全管理器(iresm)236可以例如基于由cip 248或ire 246提供的指示来确定查询已经被引导到ire 246。iresm 236然后可以对ire 246的软件堆
栈执行配置验证/分析操作,如箭头292所指示的。在一些实施例中,例如,一个或多个散列函数可以应用于ire 246的软件的各个层,并且输出散列值可以表示软件堆栈的签名。在至少一些实施例中,iresm 236可以执行ire软件堆栈的认证。在所描绘的实施例中,由iresm 236采用的配置测量/验证测试的结果可以提供给客户端255,例如,经由从客户端255提交的查询所采用的路径的反向遍历。在此类场景中,结果可以从iresm传递到ire,从ire传递到cip,并且最终传递到客户端。在其它实施例中,可以将与用于查询的路径不同的路径用于验证结果。在至少一些实施例中,除了认证/验证结果和随机数之外,还可以向客户端255提供(a)对iresm的身份的指示,类似于植根于受信任的证书授权机构的tls证书和(b)对ire和/或其父计算实例的身份的指示(例如,包括相应非对称密钥对的一个或多个公钥)。客户端255然后可以验证认证结果和身份信息是可接受的,并且如果是可接受的,则可以将ire指定为受信任并验证用于使用客户端的安全工件中的一个或多个安全工件的计算。在一些实施例中,客户端可以向vcs提供表示可接受的软件配置的一个或多个散列值,并且安全管理器可以代表客户端将其对ire软件的分析结果与此类可接受的散列值进行比较;也就是说,在此类实施例中,可以在管理程序本身处执行ire软件状态的基于散列值的验证。
39.在图2所展示的工作流程的此阶段,对于一些类型的应用程序,一个或多个安全工件287可能必须从客户端(或从由客户端选择的某个其它源)传送到ire。为了这样做,在各个实施例中,可以在客户端(或工件源)与ire之间建立类似于tls会话的安全通信会话或信道。在计算实例244内,cip和本地通信信道248可以用于此类安全会话。使用会话的一个或多个消息,即使cip将会话的消息传递到/从ire传递也不能被cip解密的经加密版本的安全工件287可以安全地传送到ire 246。ire 246然后可以开始使用工件287执行计算,如图3所展示的。在一些情况下,在ire处运行的应用程序中的至少一些应用程序可能不需要安全工件287。
40.在孤立运行时环境处执行计算的示例工作流程
41.图3展示了根据至少一些实施例的使用安全工件在孤立运行时环境处执行的计算的示例请求/响应工作流程的概览。在类似于在图2的上下文中讨论的那些设置操作的设置操作完成之后,其中vcs客户端验证孤立运行时环境(ire)具有用于客户端应用程序的适当软件配置,并且向ire提供用于代表客户端执行应用程序的计算的安全工件,而不会被在虚拟化主机处运行的其它软件可见或可访问,则ire可能已准备好执行计算。
42.在至少一些实施例中,不需要访问安全工件的客户端应用程序的组件也可以在父计算实例244处运行。例如,此类不太受信任的组件256可以访问数据集,在所述数据集上待执行需要使用安全工件287的应用程序的计算的子集。在一些情况下,不太受信任的组件256还可以负责获得ire的计算结果,用于本地的进一步处理或分析,和/或传送到某个外部端点。在至少一些实施例中,对应于箭头391的请求

响应工作流程可以在计算实例244处实施,其中应用组件向ire 246提交计算请求(经由cip 248和本地通信信道249),ire使用安全工件287执行所请求的计算,并将所述计算的结果提供给应用组件256。在各个实施例中,还可以经由本地通信信道249向ire提供待对其执行计算的数据集(如果有的话)。例如,如果要使用加密密钥对数字媒体对象(如视频或音频文件)执行某种类型的转换或提取操作,则可以经由本地通信信道将数字媒体对象传送到ire 246,并且在至少一些实施例中也可以经由本地通信信道将变换/提取的结果传送回应用组件256。在其中必须从不太受信任的
463;从ire 463到客户端的消息可以采用反向路径。在建立安全通信会话之后,客户端可以任选地在会话的(由经由安全会话传输安全工件(transmitsecurityartifactviasecuresession)426指示的)一个或多个消息中将一个或多个安全工件传输到ire,例如,以加密形式使得工件不能被父ci的除了在ire中运行的软件之外的任何软件提取或获得。在ire处对工件进行解密之后,在如上所述的各个实施例中,可以在ire处执行需要使用工件的客户端应用的计算。
48.在一些实施例中,客户端401可以使用获取ire度量(getiremetrics)请求431来请求关于ire的度量,如特定于ire等的资源利用度量、数据传送度量等,并且所请求的度量集合433可以由vcs作为响应提供。在一些实施例中,可以经由获取ire调试信息(getiredebuginfo)请求437来请求ire的调试信息(例如,与意外退出的进程相关的调用堆栈,或者ire的存储器转储),并且如果可用,可以经由调试信息(debuginfo)消息439提供所请求的信息。在至少一些实施例中,客户端可以经由终止ire(terminateire)请求441请求关闭或终止特定的ire。可以执行此类终止,并且在一些此类实施例中可以提供ire终止的响应443。应注意的是,在至少一些实施例中可以支持与孤立运行时环境相关的其它类型的编程交互,并且在至少一个实施例中,可能不支持图4所示的请求类型中的一些请求类型。
49.计算实例的示例类别
50.在一些实施例中,虚拟化计算服务可以使客户端能够从各种类型的受支持计算实例中进行选择,所述计算实例中的一些计算实例可以使客户端能够请求建立上文介绍的类型的孤立运行时环境。图5展示了根据至少一些实施例的可以在虚拟化计算服务处建立的计算实例的示例类别。当请求计算实例时,在所描绘的实施例中,vcs客户端可以指定所请求的计算实例(ci)所属的特定预定义类别205。在一些实施例中,vcs还可以允许客户端为所请求的ci提供客户端定义的规范,例如,在其中预定义类别不满足客户端要求的场景中。
51.在一些实施例中,计算实例类别的标准化集合505可以细分为系列,如通用ci系列510、经计算优化ci系列520、经存储器优化ci系列530、经存储优化ci系列540、启用ire的系列550(可以支持类似于上文介绍的那些的孤立运行时环境的计算实例)等。根据待由客户端使用的给定ci的应用程序的已知或估计的需求,可以选择来自适当系列的ci类型。可以使用由vcs选择或定义的单位来表示不同ci类型的相对资源能力,例如,对于计算而言,可以定义单元如虚拟cpu,其性能大致等同于以特定时钟速度运行的特定的公知的处理器。可以基于定性考虑来选择系列(例如,对如“待在ci上运行的应用程序是否需要待使用如加密密钥等安全工件执行的计算?”、“应用程序组合更多的是存储器密集型还是计算密集型?”等问题的答案),而系列中的特定ci类型(例如,通用系列中的小型512对中型514对大型516)可以基于如期望的性能水平、成本等考虑来选择。在所描绘的实施例中,可以例如使用具有相比于通用ci更多和/或更快的处理器或核心的主机来实施经计算优化ci 520,如co小型ci 522、co中型ci 524或co大型ci 526。在经存储器优化ci 530,如mo小型ci 532、mo中型ci 534或mo大型ci 536中,相对于计算能力的存储器的量(例如,每个虚拟cpu的存储器的千兆字节数)可以比在经计算优化ci 520或通用vm中的要高。类似地,在包括so小型ci 532、so中型ci 534和so大型ci 536的经存储优化系列540中,本地存储与计算能力的比率(例如,每个虚拟cpu的本地固态装置(ssd)存储的千兆字节数)可能比其它系列中的要高。
52.启用ire的ci 550,如ire小型ci 542、ire中型ci 554或ire大型ci 556,在其存储
器和/或计算能力上也可能彼此不同。在至少一个实施例中,vcs的虚拟化主机可以包含若干种不同类型的虚拟化管理软件和/或卸载硬件组合:例如,一些主机可以具有管理程序h1并且没有用于虚拟化管理任务的卸载卡,其它主机可以具有不同的管理程序h2和执行联网和存储相关虚拟化管理任务的一个或多个卸载卡等等。在一个此类实施例中,可以在vcs虚拟化主机的子集上建立启用ire的ci 550,所述vcs虚拟化主机具有为待处理敏感数据的计算实例设计或强化的特定管理程序。在一些实施例中,可能不必定义特殊类别的ire启用的ci或使其对vcs客户端可用;相反,可以在一个或多个其它预定义类别的ci处或不属于预定义类别的客户指定的自定义ci处设置ire。
53.用于实例化孤立运行时环境的示例请求
54.图6展示了根据至少一些实施例的用于实例化孤立运行时环境的请求的示例元素。在所描绘的实施例中,可以由类似于图1的vcs 110的虚拟化计算服务(vcs)的客户端提交的启动ire请求610可以包括多个字段或元素。在一些实施例中,父计算实例信息(parentcomputeinstanceinfo)字段612可以指示先前创建的计算实例的标识符。在其它实施例中,父计算实例信息字段可以指示计算实例的类别(例如,如在图5的上下文中讨论的ire小型、ire中型或ire大型类别),并且响应于请求610,vcs可能负责首先启动所述类别的实例,并且然后在其内启动ire——也就是说,单个请求可能会导致父ci以及父ci内的ire的建立。在一个实施例中,代替指定预先存在的ci类别,客户端可以经由父计算实例信息字段612指示父ci的期望属性的组合(例如,处理能力、存储器大小、操作系统版本等)。
55.在一些实施例中,ire资源要求(ireresourcerequirement)字段614可以用于指示待被留出供ire独占使用的父ci的资源的分数(或实际量)。例如,在其中父ci具有所分配的g千兆字节的一个实施例中,字段614可以指示父ci的存储器的25%待为ire留出。在其它实施例中,代替指定分数或百分比,可以指示为ire留出的存储器(和/或其它资源,如虚拟cpu等)的绝对量。
56.在所描绘的实施例中,可以经由ire软件要求(iresoftwarerequirement)字段616指示用于ire的期望软件堆栈,如操作系统版本、待包含在ire中的一组应用程序等。在一些实施例中,可以经由标识符来指示待用于ire的虚拟机镜像或待用于ire的软件容器。在一些实施例中,可以在单独的交互中将用于启动ire的虚拟机镜像或其它可执行对象传输到vcs;此类对象可以存储在例如vcs控制平面的存储库中,或者使用父ci的存储。
57.根据至少一个实施例,客户端可以例如经由启动请求610的ire寿命信息(irelifetimeinfo)参数618指示关于ire将保持操作多长时间的指导。例如,为了进一步降低安全工件(其可以提供给ire并在ire处用于代表vcs客户端进行计算,如先前所讨论的)被未经授权的实体获得或访问的可能性,客户端可以指示在ire被启动之后t分钟自动终止。在其它实施例中,客户端可以指示ire将不在其父ci之前被终止。在一些实施例中,可以经由ire启动请求的参数而不是图6所示的那些参数来指示关于ire配置和使用的其它客户端偏好。在至少一些实施例中,在其中客户端不提供值的场景中,vcs可以使用ire的一些或所有参数的默认值——例如,可以为ire留出默认的存储器量,默认最大寿命参数设置可以用于ire等等。
58.对配置验证查询的示例响应
59.如前所述,在至少一些实施例中,vcs客户端可以提交查询或请求以分析或验证代
表客户端设置的ire的软件配置,例如,以确保ire的软件状态匹配客户端预期的软件状态。图7展示了根据至少一些实施例的对与孤立运行时环境有关的配置验证查询的响应的示例元素。在所描绘的实施例中,ire验证请求器750可以经由编程接口向ire的父计算实例或vcs控制平面提交关于已经为客户端建立的ire的验证查询760(类似于图4所示的验证ire配置(verifyireconfig)请求)。此类验证查询也可以被称为配置分析查询或请求。所述查询可以标识ire和/或父计算实例,并且在至少一些实施例中,可以包含被称为随机数761的随机数。随机数可以由客户端750作为令牌包含在查询中(并且也由客户端本地存储),所述令牌可以用于(通过将其与包含在对查询的响应中的随机数进行比较)验证由vcs生成的响应实际上是对由客户端发送的特定查询的响应。
60.在ire的父ci处,vq 760可以在类似于图2的cip 248的通信中介进程751处被接收,并且经由本地通信信道传输到目标ire 752,所述目标ire的状态待在所描绘的实施例中被验证。ire 752进而可以将vq 760传递到ire安全管理器754(例如,父ci被实例化的主机处的管理程序的子组件)。ire安全管理器754然后可以执行ire 752的分析/测量762,并且在所描绘的实施例中生成被发送回到请求器750的响应710。在至少一些实施例中,响应710可以包含请求760中包含的随机数761、安全管理器的身份的证据714、ire的软件堆栈或状态的表示716(例如,包含分析/测量762的结果)和/或ire的身份718的证据等其它元素。在一些实施例中,可以提供植根于众所周知且受信任的证书授权机构(ca)的信任序列的相应证书作为安全管理器的身份和可信度的证据和/或作为ire的身份的证据。在其它实施例中,非对称加密密钥对的密钥可以用作安全管理器和/或ire的身份证据。在至少一个实施例中,散列函数可以应用于安装在ire处的软件的至少一部分,并且散列函数的结果可以包含在表示716中。例如,可以将散列结果与验证请求器可用的一组一个或多个独立获得的散列结果进行比较,其中所述独立获得的散列结果对应于相应可接受的软件配置。在一些实施例中,如果表示ire的散列结果与其它散列结果之一匹配,则ire的软件配置可以被视为是可接受的;否则,ire可以被视为是不可接受的。在一个实施例中,可以在安全管理器处执行ire的散列结果与可接受的散列结果的比较,并且响应710可以包含此类比较的结果,而不是ire的散列结果或者除了ire的散列结果之外。
61.具有孤立运行时环境的实例的示例迁移
62.在一些实施例中,孤立运行时环境(ire)和/或其父计算实例(ci)的资源需求可以随时间改变。图8展示了根据至少一些实施例的包括孤立运行时环境的计算实例的示例实时迁移。在所描绘的实施例中,为ire 830的父ci 820所选择的初始虚拟化主机810a例如可以具有可用存储器容量m和可用cpu容量c。
63.在所描绘的实施例中,在已经建立ire之后,可以在迁移管理器820(例如,类似于图1的vcs 110的vcs的控制平面的一部分)处收集和获得ire(和/或父ci 820)的资源使用度量850。应注意的是,至少在一些实施方案中,可以相对于在给定计算实例处建立的ire中的单独的ire,从父计算实例的对应度量中分别收集如cpu利用率、存储器利用率等相应的度量集合,使得可以分析ire和父计算实例的相应的资源使用分布。在一些实施例中,代表其设置ire的客户端可以向vcs提交一个或多个迁移相关请求852,例如指示应导致计算实例和ire传送到不同虚拟化主机的触发条件(例如,某个时间段内ire处的平均cpu利用率超过x%)。在其它实施例中,此类ire迁移标准821可以在vcs处确定,而无需由客户端指示的
特定输入或偏好。
64.基于对资源使用度量的分析和/或来自vcs客户端的编程请求,在至少一些实施例中,父计算实例和820(连同其组成的ire 830)可以移动到更高容量的虚拟化主机810b。例如,在一些示例场景中,主机810b可以具有原始主机810a的4倍的存储器容量,以及4倍的计算容量。在更高容量的主机处,现在迁移的父计算实例可以被指派新的(例如,更大的)资源集,从所述资源集中可以指派新的(例如,更大的)子集以供迁移的ire独占使用。例如,如果g1千兆字节的存储器在从其父计算实例迁移出4*g1千兆字节之前分配给ire 830,则可以为ire 830迁移后留出2*g1千兆字节(例如,从向父计算实例的迁移版本指派的更大的8*g1千兆字节池)。
65.在至少一个实施例中,可能是这样的情况:父ci和其子ire可以迁移到具有比原始主机更低的可用资源容量的主机。在至少一些实施例中,如图8所指示的,父计算实例和其ire可以作为单元迁移;例如,在不将其父ci也迁移到同一目的地主机的情况下,可能无法迁移ire。在其它实施例中,有可能独立于其父ci迁移ire。
66.用于配置和使用孤立运行时环境的方法
67.图9是展示了根据至少一些实施例的可以被执行以在虚拟化计算服务的计算实例内建立和使用孤立运行时环境的操作的各方面的流程图。如元素901所示,可以在网络可访问计算服务的虚拟化主机处启动计算实例ci1(如客户虚拟机)。在至少一些实施例中,可以在主机处设置安全强化的管理程序——例如,在管理程序被实例化之前,可以验证主机的固件,可以使用虚拟化管理卸载组件在主机处启动安全引导进程等。主机的管理程序和/或其它虚拟化管理组件进而可以将主机的存储器部分和/或其它资源(例如,虚拟cpu)指派或分配给计算实例,例如作为计算实例的启动过程的一部分。
68.在各个实施例中,在ci1启动之后的某个点,子孤立运行时环境ire1可以在ci1内启动或实例化(例如,使用较早分配给ci1的资源)(元素904)。因此,ci1可以被称为ire1的父计算实例。在各个实施例中,待在ire1处使用的特定软件堆栈的至少一部分可以由代表其设置ire1的客户端指定或选择——例如,待在ire1中运行的程序的可执行版本可以由客户端指示,待用于ire1的机器镜像或软件容器映像可以由客户端指示等等。在至少一些实施例中,指派给ci1的存储器的一部分可以例如由管理程序划分或隔离,并且指派给在ire1内运行的进程/程序独占使用。在一些实施例中,ci1的其它类型资源的子集,如虚拟cpu,也可以留出供ire1独占使用。在如下文所讨论的至少一些实施例中,为子运行时环境留出的父实例资源子集可能无法从在ci1中运行的其它程序/进程访问,尽管存储器区域可以由ire1和在ci1中设置的通信中介进程共享。
69.在所描绘的实施例中,可以在ci1内建立通信中介代理(例如,操作系统守护进程或进程)以用于管理ire1与其它通信端点、数据目的地或数据源之间的交互(元素907)。在各个实施例中,可以在虚拟化主机处生成和/或存储对ire1自身发起通信的能力施加严格限制的多个配置设置,从而导致中介被用于任何此类通信。例如,在一些实施例中,在ire1处可以禁止与主机外部的端点的网络通信,和/或在ire1处可以通过配置设置禁止对持久存储设备的访问。在一些实施例中,例如,配置设置可以包括一组逻辑或软件装置,并且所建立的一组装置可以排除在线联网、到文件系统的i/o(读取或写入)、存储卷等所需的装置。在至少一些实施例中,基于本地共享存储器的通信信道可以用于在中介与ire1之间传
送数据——例如,可以设置映射到中介进程和ire1内的进程两者的共享存储器区域中的一个或多个缓冲器。在一些实施例中,可以采用基于通知或基于中断的机制来进行此类数据传送,例如,与基于轮询的技术相反。例如,当数据待传送到ire1时,中介进程可能会将入站数据写入到共享存储器缓冲器,并且使等效的中断传递到ire1,并且当数据待从ire1传送时,出站数据可以被ire1内的进程写入到共享存储器缓冲器,并且类似的中断样通知可以被引导到中介,从而使中介进而将出站数据朝其预期目的地传送。
70.在已经建立ire1之后,在至少一些实施例中,可以例如从代表其建立ire1的客户端接收用于验证或分析ire1的配置的请求或查询。响应于此类查询,可以提供从由安全管理器在ire1的软件堆栈上执行的一个或多个测试、测量或分析获得的结果(元素910)。在至少一个实施例中,安全管理器可以被实施为在虚拟化主机处运行的管理程序的子组件。在其它实施例中,安全管理器可以在别处运行,例如作为虚拟化管理卸载卡内执行的线程。在一些实施例中,测试或测量可以包括ire1的软件堆栈的认证,并且测试结果可以包含通过将一个或多个所选散列函数或其它转换函数应用到ire1的软件的至少一部分而生成的一个或多个值。在一些实施例中,由安全管理器生成的结果消息可以包括例如包含在配置验证查询中的随机值或随机数(其可以由查询提交器使用以检查响应对应于提交的查询)、与ire1的软件堆栈相对应的认证结果、安全管理器自身的身份信息/证据(如数字证书和/或一个或多个加密密钥)和/或与ire1相关的身份信息。在不同实施例中,结果消息可以从安全管理器经由各种路径中的任个路径传送到查询提交器——例如,沿包含ire1和通信中介的路径,或者沿不使用ire1或中介的路径。
71.在一些情况下,如上文所讨论的,待在ire1处运行的应用程序或计算可能需要一个或多个安全工件,如另外的加密密钥。在此类场景中,在配置验证结果由查询提交器接受之后(这可能例如涉及将ire1认证结果与由提交器先前生成或获得的一组可接受结果进行比较),在各个实施例中,安全(例如,经加密)通信信道或会话可以经由中介在客户端与ire1之间建立(元素913)。在一个实施例中,查询的提交器可以向ire1、ci1和/或安全管理器发送消息,所述消息指示配置验证结果是可接受的。在其它实施例中,可以隐式地指示接受:例如,建立安全信道的尝试可以指示验证/认证结果已经被接受,并且可能不需要显示地指示接受的单独消息。在各个实施例中,可以使用多种不同技术中的任何技术来建立安全会话/信道。在一些实施例中,例如,tls握手机制的等效物,涉及传输“tls客户端你好”消息或等效物、“tls服务器你好”消息或等效物等,可以用于设置安全信道。在所描绘的实施例中,使用安全信道,客户端应用程序的一个或多个安全工件(例如,待用于在ire1处进行应用程序计算的加密密钥,与先前在验证ire1和设置信道以与ire1通信的进程中已经使用的密钥不同)可以传送到ire1。至少在一些实施例中,所述工件可能仍然无法被虚拟化主机的不是ire1的一部分的进程/程序访问——例如,在ire1内已知的、未向通信中介或ire1外部的任何其它进程提供的密钥可能需要对工件进行解密。应注意的是,在一些实施例中,代表其建立ire1的客户端可以指定第三方工件源(如提供商网络的密钥管理服务),并且可以在工件源与ire1之间而不是在客户端的计算装置与ire1之间建立安全通信信道。在一些情况下,在ire1执行的操作可能不需要必须使用安全通信信道传送的安全工件。
72.可以在ire1处例如经由中介代理接收用于(如果需要,使用安全工件)执行客户端的应用程序的计算的一个或多个请求(元素916),并且可以在ire1处执行所请求的计算(元
素919)。在各个实施例中,计算的结果可以经由中介传输到一个或多个目的地。应注意的是,在一些情况下,计算请求可以由例如在ci1内运行的进程生成,并且类似地,可以将结果提供给在ci1内运行的进程。
73.在一些实施例中,在可能涉及使用安全工件的一组安全应用程序计算完成之后,和/或在表示ire1的最大允许寿命持续时间的超时到期之后,ire1可以被解除配置或终止(元素922)。在至少一些实施例中,在ire1被解除配置或终止之后,其它程序/进程可以在ci1内继续运行。在一个实施例中,可以在ire1终止之后将先前从ci1取走并指定给由ire1独占使用的资源返回到ci1。
74.应注意的是,在各个实施例中,图9所示的操作中的一些操作可以以与附图中所示的顺序不同的顺序来实施,或者可以并行地而不是顺序地执行。另外地,在一个或多个实施方案中,可以不需要图9所示的操作中的一些操作。
75.使用案例
76.上文所描述的在虚拟化计算服务处设置计算实例的子孤立运行时环境使得运行时环境的配置可以由受信任的管理程序认证或验证的技术可以用于各种场景。随着越来越多的应用程序迁移到提供商网络环境,并且在给定主机处运行的来自不同来源的应用程序数量增加,提供商网络的客户端可能希望确保安全工件(如用于应用程序计算的加密密钥)被最小化。通过使用所描述的方法,其中提供商网络客户端可以使用熟悉的编程范式,如行业标准软件容器,客户端可以能够增强此类工件的安全性,而无需依赖定制硬件,并且无需修改其应用程序(例如,通过利用添加到指令集的特殊安全相关指令)。
77.不需要此类工件的应用程序的安全性也可以通过在经过验证的执行平台处运行来增强。例如,用户可以具有被证明以分析特定数据集的特定的程序。用户可以如本文所描述的在孤立运行时环境内运行所述程序,并且可以向孤立运行时环境内的程序提供特定数据集,以便确保经认证的程序(而不是其它程序)可以访问数据。
78.说明性计算机系统
79.在至少一些实施例中,实施本文所描述的技术中的一种或多种技术的服务器,包含例如虚拟化主机处的管理程序、具有通信中介进程/守护进程的计算实例、在计算实例内实例化的孤立运行时环境、控制平面和/或网络可访问服务的数据平面组件等可以包含通用计算机系统,所述通用计算机系统包含一个或多个计算机可访问介质或被配置成访问一个或多个计算机可访问介质。图10展示了此类通用计算装置9000。在所展示的实施例中,计算装置9000包含经由输入/输出(i/o)接口9030耦接到(可以包括非易失性存储器模块和易失性存储器模块两者的)系统存储器9020的一个或多个处理器9010。计算装置9000进一步包含耦接到i/o接口9030的网络接口9040。
80.在各个实施例中,计算装置9000可以是包含一个处理器9010的单处理器系统,或者包含若干处理器9010(例如,两个、四个、八个或另一个合适数量)的多处理器系统。处理器9010可以是能够执行指令的任何合适的处理器。例如,在各个实施例中,处理器9010可以是实施各种指令集架构(isa)中的任何一种的通用或嵌入式处理器,如x86、powerpc、sparc或mips isa、或任何其它合适的isa。在多处理器系统中,处理器9010中的每一个处理器可以共同但不是必须地实施相同的isa。在一些实施中,可以使用图形处理单元(gpu)来代替常规的处理器或作为常规处理器的补充。
81.系统存储器9020可以被配置成存储可由处理器9010访问的指令和数据。在至少一些实施例中,系统存储器9020可以包括易失性部分和非易失性部分两者;在其它实施例中,可以仅使用易失性存储器。在各个实施例中,系统存储器9020的易失性部分可以使用任何合适的存储器技术来实施,例如,静态随机存取存储器(sram)、同步动态ram或任何其它类型的存储器。对于系统存储器的非易失性部分(例如,其可以包括一个或多个nvdimm),在一些实施例中,可以使用基于闪速的存储器装置,包含与非(nand)闪速装置。在至少一些实施例中,系统存储器的非易失性部分可以包含电源,如超级电容器或其它电力存储装置(例如,电池)。在各个实施例中,基于忆阻器的电阻随机存取存储器(reram)、三维nand技术、铁电ram、磁阻ram(mram)或任何各种类型的相变存储器(pcm)可以至少用于系统存储器的非易失性部分。在所展示的实施例中,实施如上述那些方法、技术和数据等一个或多个所期望功能的程序指令和数据被示为存储在系统存储器9020中作为代码9025和数据9026。
82.在一个实施例中,i/o接口9030可以被配置成协调处理器9010、系统存储器9020与装置中的任何外围装置之间的i/o业务量,包含网络接口9040或如各种类型的持久和/或易失性存储装置的其它外围接口。在一些实施例中,i/o接口9030可以执行任何必要的协议、定时或其它数据变换,以将来自一个组件(例如,系统存储器9020)的数据信号转换为适合于由另一个组件(例如,处理器9010)使用的格式。在一些实施例中,例如,i/o接口9030可以包含对通过各种类型的外围总线(如外围组件互连(pci)总线标准或通用串行总线(usb)标准的变体)而附接的装置的支持。在一些实施例中,例如,i/o接口9030的功能可以拆分成两个或更多个独立组件,如北桥和南桥。而且,在一些实施例中,如用于系统存储器9020的接口等i/o接口9030的一些或所有功能可以直接地合并到处理器9010中。
83.网络接口9040可以被配置成允许数据在计算装置9000和附接到网络或网络9050的其它装置9060之间交换,例如,如图1到图9所示的其它计算机系统或装置。例如,在各个实施例中,网络接口9040可以支持经由任何适合的有线或无线一般数据网络进行通信,如以太网类型。另外地,网络接口9040可以支持经由如模拟语音网络或数字光纤通信网络等电信/电话网络、经由如光纤信道san等存储区域网络、或经由任何其它适合类型的网络和/或协议的通信。
84.在一些实施例中,系统存储器9020可以是计算机可访问媒体的一个实施例,所述计算机可访问媒体被配置成存储如上文针对图1到图9所描述的程序指令和数据,用于实施对应方法和设备的实施例。然而,在其它实施例中,程序指令和/或数据可以是在不同类型的计算机可访问介质上接收、发送或存储。一般而言,计算机可访问媒体可以包含非暂时性存储媒体或如磁性或光学媒体等存储媒体,例如经由i/o接口9030耦合到计算装置9000的磁盘或dvd/cd。非暂时性计算机可访问存储媒体还可以包含任何易失性或非易失性媒体,如ram(例如sdram、ddr sdram、rdram、sram等)、rom等,其可以包含在计算装置9000的一些实施例中作为系统存储器9020或另一种类型的存储器。在一些实施例中,多个非暂时性计算机可读存储介质可以共同存储程序指令,当所述程序指令在一个或多个处理器上或者跨一个或多个处理器执行时实施上文所描述的方法和技术的至少一个子集。计算机可访问媒体可以包含传输媒体或如电信号、电磁信号或数字信号等信号,经由如网络和/或无线链路等通信媒体传送,如可以经由网络接口9040实施。可以使用如图10所展示的计算装置等多个计算装置中的部分或全部计算装置来实施各个实施例中的所描述功能;例如,在各种不
同的装置和服务器上运行的软件组件可以协作以提供功能。在一些实施例中,除了使用通用计算机系统实施之外或代替使用通用计算机系统实施,可以使用存储装置、网络装置或专用计算机系统来实施所描述的功能的部分。如本文所使用的术语“计算装置”是指至少所有这些类型的装置,并且不限于这些类型的装置。
85.可以根据以下条款描述本公开的实施例:
86.1.一种系统,其包括:
87.虚拟化计算服务的一个或多个计算装置;
88.其中所述一个或多个计算装置包含指令,所述指令在一个或多个处理器上或跨一个或多个处理器执行时使所述一个或多个计算装置:
89.在虚拟化主机处启动计算实例,其中所述虚拟化主机的存储器部分被分配给所述计算实例;
90.为所述计算实例的第一子孤立运行时环境隔离出所述存储器部分的第一子集,其中所述第一子孤立运行时环境禁止与所述虚拟化主机外部的端点进行网络通信,并且其中所述第一子集不能从在所述第一子孤立运行时环境外部运行的程序被访问;
91.使对所述第一子孤立运行时环境的配置的认证由在所述虚拟化主机的虚拟化管理组件处建立的安全管理器发起;
92.向一个或多个目的地提供(a)所述认证的结果和(b)对所述安全管理器的身份的指示;
93.确定所述认证的所述结果已经被接受;
94.在所述第一子孤立运行时环境处经由在第一计算实例处建立的通信中介获得经加密安全工件,其中对所述安全工件的解密需要(a)所述通信中介和(b)在所述计算实例处运行的其它程序无法访问的密钥;并且
95.在所述第一子孤立运行时环境处使用所述安全工件和所述存储器部分的所述第一子集执行一个或多个计算。
96.2.根据条款1所述的系统,其中所述一个或多个计算装置包含另外的指令,所述另外的指令在一个或多个处理器上或跨一个或多个处理器执行时进一步使所述一个或多个计算装置:
97.至少部分地基于针对所述计算实例的启动请求的参数来确定待在所述计算实例内建立所述第一子孤立运行时环境。
98.3.根据条款1或2中任一项所述的系统,其中所述一个或多个计算装置包含另外的指令,所述另外的指令在一个或多个处理器上或跨一个或多个处理器执行时进一步使所述一个或多个计算装置:
99.至少部分地基于在启动所述计算实例之后接收到的编程请求来确定待在所述计算实例内建立所述第一子孤立运行时环境。
100.4.根据条款1到3中任一项所述的系统,其中所述第一子孤立运行时环境的配置设置不允许到或来自持久存储设备的输入/输出(i/o)操作。
101.5.根据条款1到4中任一项所述的系统,其中所述一个或多个计算装置包含另外的指令,所述另外的指令在一个或多个处理器上或跨一个或多个处理器执行时进一步使所述一个或多个计算装置:
102.在所述虚拟化主机处实例化所述计算实例的第二子孤立运行时环境,其中隔离出所述存储器部分的第二子集以供从所述第二子孤立运行时环境中独占使用。
103.6.一种方法,其包括:
104.在一个或多个计算装置处执行:
105.由管理程序指派分配给在虚拟化主机处建立的孤立运行时环境的父计算实例的资源子集,以供所述孤立运行时环境独占使用;
106.向一个或多个端点提供对所述孤立运行时环境的配置分析的结果,其中所述配置分析由所述管理程序的安全管理器执行;
107.在接受所述配置分析的所述结果之后在所述孤立运行时环境处获得经加密应用程序安全工件,其中在所述虚拟化主机处解密所述应用程序安全工件需要在所述孤立运行时环境外部不能访问的密钥;以及
108.在所述孤立运行时环境处使用所述应用程序安全工件执行一个或多个计算。
109.7.根据条款6所述的方法,其进一步包括在所述一个或多个计算装置处执行:
110.至少部分地基于对所述父计算实例的启动请求的参数,确定待在所述父计算实例内建立所述孤立运行时环境。
111.8.根据条款6到7中任一项所述的方法,其进一步包括在所述一个或多个计算装置处执行:
112.至少部分地基于在启动所述父计算实例之后接收到的编程请求,确定待在所述父计算实例内建立所述孤立运行时环境。
113.9.根据条款6到8中任一项所述的方法,其中所述孤立运行时环境的配置设置不允许所述孤立运行时环境与所述孤立运行时环境外部的端点之间进行网络通信。
114.10.根据条款6到9中任一项所述的方法,其中所述孤立运行时环境的配置设置不允许到持久存储的输入/输出(i/o)操作或从所述持久存储设备的i/o操作。
115.11.根据条款6到10中任一项所述的方法,其进一步包括在所述一个或多个计算装置处执行:
116.在所述父计算实例处实例化通信中介,所述通信中介被配置成利用本地通信信道与所述孤立运行时环境进行通信。
117.12.根据条款11所述的方法,其中利用所述本地通信信道包括写入到共享存储器的一个或多个缓冲器。
118.13.根据条款6到11中任一项所述的方法,其进一步包括在所述一个或多个计算装置处执行:
119.经由编程接口获得对待在所述孤立运行时环境中运行以执行所述一个或多个计算的程序的指示;以及
120.使所述程序的可执行版本在所述孤立运行时环境内启动。
121.14.根据条款6到11或13中任一项所述的方法,其进一步包括在所述一个或多个计算装置处执行:
122.至少部分地基于寿命参数设置,使所述孤立运行时环境的一个或多个程序被终止。
123.15.根据条款6到11或13到14中任一项所述的方法,其进一步包括在所述一个或多
个计算装置处执行:
124.收集所述孤立运行时环境的一个或多个度量;
125.响应于检测到所述一个或多个度量满足迁移标准,
126.使所述父计算实例迁移到另一个虚拟化主机;以及
127.在所述父计算实例的所述迁移之后指派在所述另一个虚拟化主机处分配给迁移的父计算实例的另一个资源子集,以供从所述孤立运行时环境中独占使用,其中所述另一个资源子集包含的存储器量不同于在所述迁移之前指派给所述孤立运行时环境的存储器量。
128.16.一种网络可访问计算服务的虚拟化主机,所述虚拟化主机包括:
129.一个或多个处理器;以及
130.存储器;
131.其中所述存储器包括指令,所述指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时:
132.在由管理程序启动的计算实例内实例化孤立运行时环境,
133.提供对所述孤立运行时环境的配置分析的结果,其中所述配置分析由所述管理程序的安全管理器执行;并且
134.在所述孤立运行时环境处执行一个或多个计算。
135.17.根据条款16所述的虚拟化主机,其中所述存储器包括另外的指令,所述另外的指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时:
136.存储所述孤立运行时环境的配置设置,其中所述配置设置不允许所述孤立运行时环境与所述孤立运行时环境外部的端点之间进行网络通信。
137.18.根据条款16到17中任一项所述的虚拟化主机,其中所述存储器包括另外的指令,所述另外的指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时:
138.存储所述孤立运行时环境的配置设置,其中所述配置设置不允许从所述孤立运行时环境访问持久存储设备。
139.19.根据条款16到18中任一项所述的虚拟化主机,其中所述存储器包括另外的指令,所述另外的指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时:
140.在所述计算实例处实例化通信中介,所述通信中介被配置成利用本地通信信道与所述孤立运行时环境进行通信。
141.20.根据条款16到19中任一项所述的虚拟化主机,其中所述存储器包括另外的指令,所述另外的指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时:
142.至少部分地基于寿命参数来对所述孤立运行时环境解除配置。
143.结论
144.各个实施例可还包含在计算机可访问介质上接收、发送或存储根据前述描述而实施的指令和/或数据。一般而言,计算机可访问介质可以包含存储介质或存储器介质(如磁性介质或光学介质,例如,磁盘或dvd/cd

rom)、易失性或非易失性介质(如ram(例如,sdram、ddr、rdram、sram等)、rom等)以及传输介质或信号(如通过通信介质(如网络和/或无线链路)而输送的电信号、电磁信号或数字信号)。
145.如图所展示和本文所描述的各种方法表示方法的示例性实施例。所述方法可以以
软件、硬件或其组合的方式实施。可以改变方法的顺序,并且可以添加、重新排序、组合、省略、修改等各种元素。
146.对于受益于本公开的本领域的技术人员来说显而易见的是,可进行各种修改和改变。旨在包含所有这些修改和变化,并且因此,以上描述被认为是说明性的而不是限制性的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1