首页 / 专利库 / 电脑编程 / 计算机虚拟化 / 满足应用依赖关系

满足应用依赖关系

阅读:1019发布:2020-09-22

专利汇可以提供满足应用依赖关系专利检索,专利查询,专利分析的服务。并且一种满足应用依赖关系的技术。通过拦截由应用作出的应用程序 接口 调用来标识应用的依赖关系。随后在应用的运行时作出应用的依赖关系是否存在的判断。如果依赖关系不存在,则其上执行应用的客户机设备被配置成使得依赖关系存在且仅对授权的应用可用。如果依赖关系存在,并且应用被授权以与依赖关系进行交互,则允许该应用执行。,下面是满足应用依赖关系专利的具体信息内容。

1.一种包括执行计算机实现的操作的、用于应用依赖关系的计算机实现的方法,所述计算机实现的操作用于:
接收在客户机设备处部署应用以使得所述应用可在所述客户机设备处执行的请求
判断部署所述应用的一个或多个依赖关系必要条件中的每一个是否在所述客户机设备处存在;以及
当确定不是部署所述应用的一个或多个依赖关系中必要条件的每一个都存在时,配置所述客户机设备使得所述依赖关系存在;
当确定部署所述应用的一个或多个依赖关系必要条件中的每一个都存在时,在所述客户机设备上部署所述应用;
其中,当在所述客户机设备处部署所述应用时,拦截来自所述应用的应用程序接口(API)调用,所述API调用请求访问资源;
选择所述API调用将被重定向至的资源的副本;
使用与所述资源相关联的访问控制列表(ACL)来保护私人位置;以及
将所述API调用重定向至被存储在所述私人位置处的资源。
2.如权利要求1所述的计算机实现的方法,其特征在于,还包括:在部署所述应用之前:
将所述应用安装在监控站上;
监控在所述应用的安装期间对所述监控站作出的改动,以标识依赖关系;以及将标识依赖关系的数据存储在依赖关系分析数据库中。
3.如权利要求2所述的计算机实现的方法,其特征在于,还包括:在部署所述应用之前:
在所述监控站上执行所述应用;
监控在所述应用的执行期间对所述监控站作出的改动,以标识依赖关系;以及将标识依赖关系的数据存储在所述依赖关系分析数据库中。
4.如权利要求3所述的计算机实现的方法,其特征在于,监控在所述应用的执行期间对所述监控站作出的改动包括:
拦截由所述应用在执行期间作出的API调用;以及
调查包含在所述API调用中的参数,以标识依赖关系。
5.如权利要求4所述的计算机实现的方法,其特征在于,还包括:
确定所述一个或多个依赖关系中的每一个是否在所述应用的安装或部署期间被添加或被配置;
当确定所述一个或多个依赖关系中的每一个在所述应用的安装或部署期间被添加或被配置时,存储数据,所述数据指示在所述应用的安装或部署期间被添加或被配置的一个或多个依赖关系将需要在所述应用的运行时存在。
6.如权利要求5所述的计算机实现的方法,其特征在于,确定所述一个或多个依赖关系中的每一个是否在所述应用的安装或部署期间被添加或被配置包括:查询由操作系统提供的注册表。
7.如权利要求5所述的计算机实现的方法,其特征在于,确定所述一个或多个依赖关系中的每一个是否在所述应用的安装或部署期间被添加或被配置包括:查询将API调用匹配于依赖关系的内部映射表。
8.一种用于应用依赖关系的系统,包括:
接收部署虚拟化应用以使得所述虚拟化应用可在客户机设备处执行的请求的装置;
判断部署所述虚拟化应用所需的一个或多个依赖关系中的每一个是否存在的装置;以及
当确定不是所述一个或多个依赖关系中的每一个都存在时,配置其上执行所述虚拟化应用的客户机设备,使得依赖关系存在的装置;
响应于确定部署所述虚拟化应用的所述一个或多个依赖关系必要条件中每一个都存在,在所述客户机设备上部署所述虚拟化应用的装置;
当在所述客户机设备上部署所述虚拟化应用时,拦截来自所述虚拟化应用的应用程序接口(API)调用的装置,所述API调用请求访问资源;
选择所述API调用将被重定向至的资源的副本的装置;
使用与所述资源相关联的访问控制列表(ACL)来保护私人位置的装置;以及将所述API调用重定向至被存储在私人位置处的资源的装置。
9.如权利要求8所述的系统,其特征在于,还包括:
将所述虚拟化应用安装在监控站上的装置;
监控在所述虚拟化应用的安装期间对所述监控站作出的改动,以标识依赖关系的装置;以及
将标识依赖关系的数据打包在应用包中的装置,所述应用包被配置为被流送至所述客户机设备。
10.如权利要求9所述的系统,其特征在于,还包括:
执行被安装在所述监控站上的所述虚拟化应用的装置;
监控在所述虚拟化应用的执行期间对所述监控站作出的改动,以标识依赖关系的装置;以及
将标识依赖关系的数据打包在所述应用包中的装置,所述应用包被配置为被流送至所述客户机设备。
11.如权利要求10所述的系统,其特征在于,监控在所述虚拟化应用的执行期间对所述监控站作出的改动以标识依赖关系的装置包括:
拦截由所述虚拟化应用在执行期间作出的API调用的装置;以及
调查包含在所述API调用中的参数,以标识依赖关系的装置;
使用与资源相关联的访问控制列表(ACL)来保护私人位置的装置;以及将所述API调用重定向至被存储在私人位置处的资源的装置。

说明书全文

满足应用依赖关系

技术领域

[0001] 本发明涉及应用的依赖关系。

背景技术

[0002] 计算机应用程序(“应用”)通常具有一连串的依赖关系,这些依赖关系是成功部署并执行这些应用所必需的。这些依赖关系可包括对诸如数据库、应用、硬件组件、网络连接等等的资源的访问。当设备在企业的公司网络中进行本地操作时,许多的这些依赖关系是借由连接到公司网络而存在的。然而,一旦此设备不再连接到公司网络(例如,当此设备离开公司的场地时),此设备将不再连接到公司网络。结果是,借由设备连接到公司网络而存在的许多应用的依赖关系将不再存在。因此,应用无法在此设备上部署或实施,直到依赖关系恢复。
[0003] 一种恢复依赖关系的机制要求与公司网络建立连接。例如,在家工作的公司用户可需要经由虚拟个人网络(VPN)连接到公司网络,以重新建立依赖关系。然而,以此方式使用连接会是麻烦的,或可能将公司网络暴露于安全威胁中。
[0004] 此处所做出的本公开正是关于这些和其他考虑事项而提出的。

发明内容

[0005] 在此描述了用于满足虚拟化应用的依赖关系的诸个技术。通过在此提供的概念和技术的实施方式,可在应用运行时标识并恢复应用依赖关系。由此,客户机设备可成功地部署并执行应用,而不需要建立设备和公司网络之间的后端连接。如在此所使用的,术语“依赖关系”指代应用执行所需要的任何资源。依赖关系可包括但不限于,配置设置、硬件组件、网络连接、访问权限、或任何其他类型的资源。
[0006] 根据在此所提供的一个方面,提供了应用虚拟化环境,该环境通过配置客 户机设备使得虚拟化应用的所有依赖关系均存在,而能够执行虚拟化应用。应该理解到,本公开的范围不旨在限于应用虚拟化环境中的使用。相反,在此公开的诸个实施例可被用于满足在虚拟化或非虚拟化的环境中执行的任何类型的应用的依赖性。
[0007] 根据另一个方面,当接收到部署虚拟化应用的请求时,应用虚拟化客户机组件确定用于部署该虚拟化应用的依赖关系必要条件是否存在。如果应用虚拟化客户机组件确定依赖关系不存在,则应用虚拟化客户机组件配置客户机设备使得依赖关系存在。如果应用虚拟化客户机组件确定依赖关系存在,则应用虚拟化客户机组件部署该虚拟化应用以便执行。
[0008] 根据另一个方面,应用虚拟化客户机组件也被配置为提供虚拟化应用和非虚拟化应用之间的安全边界,使得非虚拟化应用无法访问特定资源。例如,在一个实施例中,应用虚拟化客户机组件拦截由虚拟化应用作出的用于访问资源的应用程序编程接口(API)调用,诸如访问对客户机设备可用的资源的请求。应用虚拟化客户机组件随后修改所请求的资源的名空间,使得该资源可在新的位置访问。在一些实施例中,应用虚拟化客户机组件也可修改与该资源相关联的访问控制列表(ACL),并将API调用传递给存储在新位置上的资源。来自非虚拟化应用的对访问资源的请求不能访问在新位置的资源。
[0009] 根据另一个方面,通过执行对应用的静态分析,在运行时之前标识应用依赖关系。在一个实施方式中,虚拟化应用被安装在监控站上,监控站提供了其中虚拟化应用的所有依赖关系均存在的环境。监控站的依赖关系分析引擎监控在虚拟化应用的安装和执行期间对监控站所作出的改变,以标识依赖关系。在监控虚拟化应用时,依赖关系分析引擎将标识依赖关系的数据存储在依赖关系分析数据库中。依赖关系分析数据库可在应用的运行时使用,以确保所有要求的依赖关系均存在。
[0010] 本发明内容并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在将本概述用来限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本发明的任一部分中提及的任何或所有缺点的实现。附图说明
[0011] 图1是示出用于此处公开的各个实施例的一个说明性操作环境的软件和网络体系结构图;
[0012] 图2是示出根据此处提供的一个实施例的用于标识虚拟化应用的依赖关系的一个过程的示意图;
[0013] 图3是示出根据此处提供的一个实施例的用于在操作的学习模式中标识虚拟化应用的依赖关系的在此所公开的一个说明性过程的各个方面的流程图
[0014] 图4是示出根据此处提供的一个实施例的用于满足虚拟化应用的依赖关系的在此所公开的一个说明性过程的各个方面的流程图;
[0015] 图5是示出根据此处提供的一个实施例的用于提供安全边界以防止外部非虚拟化应用访问资源的一个过程的示意图;
[0016] 图6是示出根据此处提供的一个实施例的用于提供单向安全边界以防止外部应用与资源进行交互的在此所公开的一个说明性过程的各个方面的流程图;
[0017] 图7是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。

具体实施方式

[0018] 下述详细描述针对用于满足应用的依赖关系的诸个技术。如以上所简略讨论的,以在此公开的方式配置的客户机设备能标识应用依赖关系,并使这些依赖关系在应用运行时可用。以此方式,客户机设备可被配置为执行应用而不需要手动动作(诸如,连接到VPN)来满足依赖关系。
[0019] 尽管在结合计算机系统上的操作系统和应用程序的执行而执行的程序模的一般上下文中呈现了此处描述的主题,但是本领域技术人员将认识到,其他实现可以结合其他类型的程序模块来执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构和其它类型的结构。此外,本领域技术人员将明白,可以利用其他计算机系统配置来实施此处描述的主题,这些计算机系统配置包括手持式设备、多处理器系统、基于微处理器的或可编程消费电子产品、小型计算机、大型计算机等等。
[0020] 在下面的详细描述中,将参考构成本发明的一部分的附图,并且在附图中 作为说明示出了各具体实施例或示例。现在参考附图(在若干附图中相同的标号表示相同的元素),将描述用于满足应用依赖关系的计算系统和方法的各方面。
[0021] 图1是示出用于此处揭示的各个实施例的一个说明性操作环境100的软件和网络体系结构图。图1中所示的说明性操作环境100包括:被配置为经由网络106与服务器104通信的客户机设备102。客户机设备102是被配置为执行操作系统108A和应用虚拟化客户机组件110的计算设备。客户机设备102可以是标准台式或膝上型计算机、平板计算机、智能手机或能执行此处呈现的用于满足虚拟化应用依赖关系的操作的任何其他类型的计算设备。客户机设备102还可以是被配置为提供此处公开的功能的服务器计算机。
[0022] 服务器104是被配置为执行操作系统108B和应用虚拟化客户机组件120的计算系统。应该理解的是服务器104可以是被配置为执行应用虚拟化客户机组件110的实际服务器计算机或者可包括被配置为执行由服务器104所执行的此处描述的功能的另一种类型的计算机系统。
[0023] 图1中所示的网络106可包括广域网或局域网。例如,网络106可以是公司局域网、诸如因特网之类的广域网、或者多个广域网和局域网的组合。应该理解的是,虽然图1中示出了单个网络106,但可使用许多其他网络。还应该理解的是,尽管图1中已经示出了单个客户机设备102和服务器104,此处公开的诸个实施例可使用许多这样的设备。
[0024] 如上所简要讨论的,客户机设备102被配置为执行应用虚拟化客户机组件110。应用虚拟化客户机组件110是被配置为提供应用虚拟化环境的软件组件。在此方面,应用虚拟化客户机组件110被配置为部署并执行虚拟化应用112。
[0025] 应用虚拟化客户机组件110提供与操作系统108A分开地封装将虚拟化应用112的执行的功能。应用虚拟化客户机组件110还可提供与客户机设备102的其他应用程序和系统资源分开地封装虚拟化应用112的执行的功能。例如,应用虚拟化客户机组件110可将操作系统108A或客户机设备102的资源虚拟化。当虚拟化应用112尝试访问物理资源的时候,应用虚拟化客户机组件110将虚拟化资源呈现给应用112。以此方式,可以不对由操作系统108A或客户机设备102所展现的实际资源产生影响的方式而实行虚拟化应用112。
[0026] 根据其他方面,应用虚拟化客户机组件110还提供用于按照需而加载虚拟化应用112的部分的功能。具体地,应用虚拟化客户机组件110可与应用虚拟化服务器组件120结合操作,以将虚拟化应用112的所需部分从服务器104流送至客户机设备102。以此方式,可在客户机设备102处按需访问虚拟化应用112。此外,因为仅仅虚拟化应用112的所需部分从服务器104流送至客户机设备102,则可提供对虚拟化应用112的访问而不需要将整个应用112从服务器104流送至客户机设备102。
[0027] 有关应用虚拟化客户机组件110所提供的用于封装虚拟化应用112的执行、以及用于将虚拟化应用112从服务器104流送至客户机设备102的诸个功能的附加细节可在2007年5月29日提交的、名为“Systems and Methods for Delivering Content over a Computer Network(用于通过计算机网络上传递内容的系统与方法)”的专利号为7,225,264的美国专利;在2007年4月3日提交的、名为“Method and System for Serving Software Applications to Client Computers(用于将软件应用提供到客户机计算机的方法与系统)”的专利号7,200,632的美国专利;在2008年11月11日提交的、名为“Operating System Abstraction and Protection Layer(操作系统抽象与保护层)”的专利号7,451,451的美国专利;以及在2010年9月14日提交的、名为“Serving Software Applications from Servers for Client Computers(将来自服务器的软件应用提供给客户机计算机)”的专利号7,797,372的美国专利中可找到,上述每一个专利通过引用整体结合到此处。
[0028] 如将在此更为详细地描述的,应用虚拟化客户机组件110也可被配置为确保虚拟化应用112的一个或多个依赖关系114在应用112的运行时被满足。如在此所使用的,术语“依赖关系”指代应用112执行所需要的任何资源。依赖关系可包括但不限于:配置设置、硬件组件、网络连接、访问权限、在特定位置的特定文件的存在、应用资源(诸如反病毒软件的安装)、硬件组件(诸如监视器或其他设备)、存储器要求、处理能、以及其他。
[0029] 如将在下文中更为详细地描述的,可在应用112的安装期间、在应用112的运行时之前、或在应用112的运行时标识依赖关系114。例如,当接收到执行虚拟化应用112的请求时,应用虚拟化客户机组件110确定部署和/或执行该 虚拟化应用112的依赖关系114必要条件是否存在。如果应用虚拟化客户机组件110确定依赖关系114不存在,则应用虚拟化客户机组件110配置客户机设备102使得所有依赖关系114均存在。一旦所有依赖关系114均存在或被满足,则虚拟化应用112可被部署。如在此所使用的,术语“部署”指代使应用112可用于执行。在下文中参考附图2-4提供了关于客户机设备102的配置的进一步细节以使得所有依赖关系114均存在。
[0030] 应该理解到,客户机设备102也可包括可被执行在操作系统108A上的非虚拟化外部应用118。如将在下文中更为详细地描述的,应用虚拟化客户机组件110在一个实施例中提供了用于确保外部应用118不能访问由虚拟化应用112所使用的资源的功能。例如,应用虚拟化客户机组件110可将访问一资源的请求重定向至不存在该资源的位置。由此,操作系统可对请求作出响应,指示所请求的资源不存在或无法被定位。关于该过程的其他细节将在以下参考图5-6来提供。
[0031] 如上所述,服务器104可包括虚拟化应用112、应用虚拟化客户机组件110、以及操作系统108B。此外,服务器104可包括依赖关系分析引擎122以及依赖关系数据库124,依赖关系数据库124用于存储标识依赖关系114的依赖关系数据126。应该理解到,包含依赖关系数据126的依赖关系分析数据库124也可被存储在客户机设备102上和/或可由客户机102的应用虚拟化客户机组件110访问。根据诸个实施例,服务器104可操作为监控站,该监控站被配置为安装并执行虚拟化应用112并标识虚拟化应用112的依赖关系114。根据多个实施例,依赖关系分析引擎122可标识虚拟化应用112的依赖关系114,并将标识依赖关系114的依赖关系数据126存储在依赖关系分析数据库124中。也可提供用户接口
130用于查看并编辑数据库124的内容。将在下文中参考附图2和3提供在此所述的用于标识依赖关系114的各种过程的附加的细节。
[0032] 应该理解到,在此所述的诸个实施例仅仅是用于说明性目的,并且不旨在将本发明的范围限于在此所述的诸个实施例。本领域技术人员应该理解,,在此所述的诸个技术可以与多种类型的应用一起使用,并且在此所述的诸个实施例不被限于满足虚拟化应用112的依赖关系。也应该理解,在此所述的概念可被用于任意类型的应用,包括但不限于,执行在虚拟化和非虚拟化环境中的虚 拟化和非虚拟化应用。
[0033] 图2是示出根据在此提出的一个实施例的用于标识当虚拟化应用112在一个环境中执行时虚拟化应用112的依赖关系的一个过程的示意图。具体而言,图2示出了用于标识依赖关系114的操作的学习模式的诸个方面。在操作的学习模式中,API调用拦截器202拦截由应用112作出的用于访问资源的API调用。如下文中将要讨论的,API调用可在应用112的运行时期间或在应用112的安装时作出。
[0034] 当虚拟化应用112被安装在设备(诸如,客户机设备102)上时,应用112的安装方可对设备102作出改动。例如,与虚拟化应用112有关多种文件可被存储,或注册表文件可被创建或修改。依赖关系分析引擎122监控应用112的安装以检测由虚拟化应用112的安装所导致的任何配置改动。依赖关系分析引擎122也可将在安装虚拟化应用112之前该依赖关系分析引擎122在其上执行的计算机的配置与安装虚拟化应用112之后的配置进行比较。依赖关系分析引擎122可随后使用所检测到的改动来标识依赖关系114。标识依赖关系114的依赖关系数据126随后被存储在依赖关系分析数据库124中。
[0035] 作为操作的学习模式的一部分,依赖关系分析引擎122还可在运行时期间监控虚拟化应用112。当虚拟化应用112在执行时,虚拟化应用112可作出API调用以访问资源。API调用拦截器202钩取(hook)由虚拟化应用112作出的API调用,并将调用传递至依赖关系分析引擎122,在依赖关系分析引擎122中对调用进行调查以收集与虚拟化应用112的额外依赖关系114有关的信息。API调用可包括访问特定资源(诸如,文件、数据库,等等)的请求。此外,API调用可包括访问特定应用的请求。
[0036] 依赖关系分析引擎122对所拦截的API调用进行调查,以标识虚拟化应用112的运行时依赖关系114。依赖关系引擎122可将标识运行时依赖关系114的数据存储在依赖关系分析数据库124中。另外,指示所标识的依赖关系114是否由操作系统108所提供的数据可被存储在数据库124中。在替换实施例中,标识运行时依赖关系114的数据可从服务器104被流送至客户机设备102。在这些实施例中,标识依赖关系的数据可被打包在应用包中,应用包可被配置为被流送至客户机设备102。如下文中将更详细描述的,在操作的学习模式中所 生成的数据在应用112的运行时使用以确保所有的依赖关系114都对应用112可用。例如,存储在数据库124中的依赖关系数据126可被用于确定应用的执行是否依赖于未由操作系统提供的任何资源。如果如此,则资源可被使得对应用可用。
[0037] 应该理解到,不是所有的资源都可被使得对应用可用。在这些情况中,应用可能无法被部署在设备上,直到这些资源被使得可用并且应用的所有依赖关系都被适当地满足。例如,公司可拥有文档,这些文档仅能从公司大楼内访问。当在公司大楼之外的用户运行与这些文档进行交互的应用时,应用虚拟化客户机组件110可阻止应用访问这些文档。在该情况中,依赖关系可以是指示用户位于公司大楼内的公司IP地址的存在。如果用户不位于公司大楼内,则虚拟化应用112可能无法被部署,因为对应于公司IP地址的存在的依赖关系不被满足。
[0038] 图3是示出在上述的学习模式中的用于标识虚拟化应用112的依赖关系114的在此所述的一个说明性过程的各个方面的流程图。应当理解,此处参考图3、4、6所描述的逻辑操作被实现为:(1)一系列计算机实现动作或运行于计算系统上的程序模块,和/或(2)计算系统内的互连机器逻辑电路或电路模块。取决于计算系统的性能及其他要求,可以选择不同的实现。因此,此处所描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可用软件、固件、专用数字逻辑,及其任何组合来实现。还应该明白,可以执行比附图中示出并在此处描述的操作更多或更少的操作。这些操作还可以按与此处所描述的不同的次序来执行。
[0039] 图3示出例程300,例示了在图2所示的以及在上文中描述的操作的学习模式中所执行的诸个操作。例程300开始于操作302,其中在监控系统(诸如,服务器104)上安装虚拟化应用112。服务器104包括依赖关系分析引擎122,依赖关系分析引擎112提供了上述的用于标识虚拟化应用112的依赖关系114的功能。服务器104也可包括虚拟化应用112适当安装和执行的所有依赖关系114必要条件。以此方式,虚拟化应用112可按照学习模式而在服务器104上操作。应该理解,除了服务器104之外的另一计算机可被用作为用于执行在此所述的学习过程的监控站。
[0040] 根据一个实施方式,当服务器104在学习模式中操作时,依赖关系分析引擎122被配置为监控对服务器104所作出的改动(这些改动标识了虚拟化应用112的依赖关系114),并将标识依赖关系114的依赖关系数据126存储在依赖关系分析数据库124中。依赖关系114可包括通过对应用112的安装和配置进行分析来标识的依赖关系,以及通过在运行时拦截由虚拟化应用112作出的API调用来标识的依赖关系。
[0041] 例程300从操作302继续至操作304,其中依赖关系分析引擎122监控在虚拟化应用112的安装期间所作的改动。依赖关系分析引擎122可通过将虚拟化应用112安装之后的系统的配置设置与虚拟化应用112安装之前的系统的配置设置进行比较来监控改动。此外,依赖关系分析引擎122可监控系统的各种资源以标识依赖关系114,诸如,对注册表作出的改动或与虚拟化应用112的安装有关的额外文件和文件夹的创建。
[0042] 例程300从操作304继续至操作306,其中虚拟化应用112被执行。在执行期间,依赖关系分析引擎122连续地在虚拟化应用112中监控由虚拟化应用112作出的访问资源的API调用,以及由虚拟化应用112的执行所导致的任何配置改动。
[0043] 例程300从操作306继续至操作308,其中API调用拦截器202拦截由虚拟化应用112作出的API调用。API调用拦截器202随后可将这些API调用提供给依赖关系分析引擎122。例程300从操作308继续至操作310,其中依赖关系分析引擎122调查被拦截的API调用的参数,以标识虚拟化应用112的依赖关系114。如上所述的,API调用可包括访问特定资源(诸如,文件、应用、或诸如扬声器或显示器之类的硬件组件)的请求。同样地,依赖关系分析引擎122能够通过调查被拦截的API调用的格式和内容来确定虚拟化应用112的运行时依赖关系。
[0044] 例程300从操作310继续至操作312,其中依赖关系分析引擎122将在虚拟化应用112的安装和执行期间所收集的标识依赖关系114的依赖关系数据126存储在依赖关系分析数据库124中。根据一个实施方式,依赖关系分析数据库124可被存储在服务器104或可由客户机102或服务器104经由网络106访问的任何其他位置上。
[0045] 例程300从操作312继续至操作314,其中作出虚拟化应用112的每个依赖关系114是否在虚拟化应用112的安装或部署期间被添加或被配置的判断。这可例如通过检查由操作系统提供的注册表来完成。或者,这可通过检查将API调用映射到依赖关系的映射表来完成。该映射表可包括指示每个依赖关系是否由操作系统所提供的信息。
[0046] 如果依赖关系在应用的安装或部署期间被添加或被配置,则例程300从操作314继续至操作316。在操作316中,在依赖关系分析数据库124中存储数据,该数据指示在虚拟化应用112的安装或部署期间被添加或被配置的依赖关系114将需要在运行时存在于客户机设备102处,以成功在客户机设备102处部署该虚拟化应用112。如果在操作314中确定依赖关系114在虚拟化应用112的安装或部署期间没有被添加或配置,则例程300继续至操作318,其中例程300结束。类似地,例程300也从操作316继续至操作318,在操作318例程结束。
[0047] 一旦标识了虚拟化应用112的依赖关系114,并且标识依赖关系114的依赖关系数据126被存储在依赖关系分析数据库124中,虚拟化应用112就可被部署在客户机设备102处。然而,在客户机设备102处部署虚拟化应用112之前,部署虚拟化应用112所需的依赖关系114可能需要可由客户机设备102访问。在一个实施方式中,标识依赖关系114的依赖关系数据126被存储在客户机设备102处,并且被应用虚拟化客户机组件110利用,以确保当在客户机设备102上部署虚拟化应用112的运行时,虚拟化应用112的依赖关系
114存在。以下参考图4来提供关于这一过程的附加细节。
[0048] 图4是示出根据此处提供的一个实施例的用于满足客户机设备102上的虚拟化应用112的依赖关系的在此公开的一个说明性流程的各个方面的流程图。具体而言,图4示出了例程400,例程400示出了在应用112的运行时所执行的操作。具体而言,例程400开始在操作402,其中应用虚拟化客户机组件110接收在客户机设备102上部署虚拟化应用112的请求。根据一个实施方式,客户机设备102的用户可递交在客户机设备102上部署虚拟化应用112的请求。
[0049] 例程400从操作402继续至操作404,其中应用虚拟化客户机组件110通过查询依赖关系分析数据库124来确定虚拟化应用112的依赖关系114。应用 虚拟化客户机组件110也可查询依赖关系分析数据库124来确定所标识的依赖关系是否由操作系统108提供。如果是,则不需要由应用虚拟化客户机组件110在运行时恢复这些依赖关系。
[0050] 例程400从操作404继续至操作406,其中应用虚拟化客户机组件110确定是否所有依赖关系114都存在。根据一些实施方式,应用虚拟化客户机组件110可通过将依赖关系分析引擎122在学习模式期间所确定的依赖关系114与客户机设备102处存在的依赖关系进行比较来完成该动作。如果应用虚拟化客户机组件110确定所有依赖关系114都存在,则例程400继续至操作414,其中应用虚拟化客户机组件110在客户机设备102上部署虚拟化应用112。
[0051] 然而,如果在操作406应用虚拟化客户机组件110确定不是所有依赖关系114都存在于客户机设备102,则例程400从操作406继续至操作408,其中应用虚拟化客户机组件110标识丢失的依赖关系。丢失的依赖关系可以是不存在的或没有被适当配置的资源。例如,如果依赖关系114中的一个包括在客户机设备102处开启防火墙,则应用虚拟化客户机组件110可检查客户机设备102以查看防火墙是否被开启。如果防火墙没有被开启,则应用虚拟化客户机组件110将防火墙标识为丢失的依赖关系。
[0052] 例程400从操作408继续至操作410,其中应用虚拟化客户机组件110配置客户机设备102使得丢失的依赖关系被满足。应用虚拟化客户机组件110可通过如下配置客户机设备102来完成此动作:客户机设备102的配置设置与虚拟化应用112在服务器104上安装且执行时的服务器104的配置设置相匹配。使用以上所述的示例,应用虚拟化客户机组件110可通过改变客户机设备102的防火墙设置来自动开启防火墙。在一些实施例中,应用虚拟化客户机组件110也可使资源可用。由此,应用虚拟化客户机组件110可将客户机设备102配置成满足部署和/或执行应用的依赖关系114必要条件。
[0053] 例程400从操作410继续至操作412,其中应用虚拟化客户机组件110确定是否存在任何其它的丢失的依赖关系114。如果应用虚拟化客户机组件110确定存在其它的丢失的依赖关系114,则例程400继续返回操作406,其中例程400标识另一个丢失的依赖关系。然而,如果应用虚拟化客户机组件110确定没有其它的丢失的依赖关系114,则例程400继续至操作414,其中应用虚 拟化客户机组件110部署虚拟化应用112。例程400从操作414继续至操作416,在操作416例程400结束。应该理解到,应用虚拟化客户机组件110可能无法满足部署虚拟化应用112所需的每个依赖关系。例如,在以上所述的示例中,应用虚拟化客户机组件110可能无法满足一依赖关系,诸如,公司IP地址的存在,该公司IP地址仅被提供给公司大楼内操作的设备。
[0054] 图5是示出用于提供安全边界以防止外部应用访问对应用112可用的资源的过程的示意图。根据一些实施方式,安装在客户机设备102上的非公司应用(诸如,外部应用118)可试图获得对虚拟化应用112所用的资源的访问权。这会引起安全威胁,因此,需要作出努力以防止外部应用118与这些资源交互。在一个实施方式中,客户机设备102提供用于将外部应用作出的API调用重定向以防止外部应用118访问这些资源的功能。在一些实施方式中,该重定向可通过修改资源的名字(在此称为:“名空间校正”)来进行。图5示出在此提供的一种用于执行该功能的过程。
[0055] 当虚拟化应用112作出访问或修改外部资源的API调用时,路由层502拦截该API调用并执行两个功能。第一,路由层502使得原始资源504的名字被修改,由此创建重新命名的资源506。结果是,在应用虚拟化客户机组件110之外执行的外部应用118无法查看资源的所期望的位置。以此方式,将制止好奇的应用来尝试获取对资源的访问权。然而,所确定的外部应用118仍可打开并访问原始资源504。为了防止任何所确定的外部应用访问资源,应用虚拟化客户机组件110也可将原始资源504的访问控制列表(ACL)修改为自定义的ACL,使得外部应用118不能打开或访问资源504。图6示出该过程的其他方面。
[0056] 应该理解到,应用虚拟化客户机组件110可具有资源的多个副本,并可将不同的进程重定向以查看该资源的不同版本。例如,客户机设备102可具有名为“foo”的注册表值的两个副本,其中一个副本被设置为0,另一个副本被设置为1。当一个进程访问该注册表值时,客户机设备102透明地将该进程重定向至被设置为0的资源的副本。当另一个进程访问它认为是同一个注册表值时,客户机设备102透明地将该进程重定向至被设置为1的资源的副本。两个进程都尝试访问同一个资源,但客户机设备102将它们重定向至该资源的不同命名 的实例,而不让它们发现这一情况。以此方式,两个进程可执行两个单独的操作,因为这两个进程接收到不同的输入值。结果是,客户机设备102能够向授权的应用提供正确的输入值,并向未被授权的应用提供不正确的输入值,这可向客户机设备102提供安全性。
[0057] 在另一个示例中,当两个进程都尝试访问相同的文件时,客户机设备102能将其中一个重定向至该文件的有效副本,并可通知另一个进程文件不存在或可替换地将其重定向至不存在文件的位置并允许操作系统对此作出响应。结果是,可不向未被授权的进程提供对文件的访问。
[0058] 图6是示出在此所公开的用于提供安全边界的一种说明性过程的诸个方面的流程图。具体而言,图6示出例程600,例程600示出在一个实施例中所执行的用于以以上参考图5描述的方式来提供安全边界的诸个操作。
[0059] 例程600开始于操作602,其中路由层502拦截由虚拟化应用112所作出的访问资源的API调用。如上所述的,路由层502可仅仅拦截由虚拟化应用112所作出的API调用。例程600从操作602继续至操作604,其中路由层502选择由虚拟化应用112所作出的API调用将被重定向至的资源的副本。资源的副本之前就可被操作系统所保存。例程600从操作604继续至操作606,其中操作系统108A还重新配置与该资源相关联的ACL,使得该资源对在应用虚拟化客户机组件110的外部操作的外部程序不可访问。例程600从操作606继续至操作608,其中被拦截的API调用被路由至重命名后的资源506。
[0060] 例程600从操作608继续至操作610,其中操作系统108A从外部应用118接收请求访问资源的API调用。根据诸个实施例,因为外部应用118直接与操作系统108A直接通信,而不通过应用虚拟化客户机组件110进行,则操作系统108A从外部应用118接收API调用。然而,应该理解到,外部应用可通过应用虚拟化客户机组件110来发送API调用。在这些实施例中,应用虚拟化客户机组件110不进行任何重定向,而是将原始API调用传递给操作系统108A以便操作系统108A来处理。
[0061] 例程600从操作610继续至操作612,其中操作系统108A将来自外部应用118的API调用路由至原始资源504。以此方式,从非企业应用(诸如,外部应用118)作出的API调用可能不能访问资源506。例程600从操作612继 续至操作614,在操作614例程600结束。
[0062] 图7是示出用于能够实现本文所提出的各种实施例的计算系统的说明性计算机硬件和软件体系结构的计算机体系结构图。图7的计算机体系结构示出了传统台式计算机、膝上计算机,或服务器计算机,并可被用来执行此处描述的各种软件组件。
[0063] 图7所示的计算机体系结构包括中央处理单元702(“CPU”)、包括随机存取存储器714(“RAM”)和只读存储器(“ROM”)716的系统存储器708、以及将存储器耦合至CPU702的系统总线704。包含诸如在启动时有助于在计算机700内的元件之间传输信息的基本例程的基本输A/输出系统(“BIOS”)被存储在ROM 716中。计算机700还包括用于存储操作系统718、应用程序和其他程序模块的大容量存储设备710,这将在以下更为详细地描述。
[0064] 大容量存储设备710通过连接至总线702的大容量存储控制器(未示出)连接到CPU 704。大容量存储设备710及其相关联的计算机可读存储介质为计算机700提供非易失性的存储。虽然对此处包含的计算机可读介质的描述引用了诸如硬盘或CD-ROM驱动器等大容量存储设备,但本领域的技术人员应当理解,计算机可读介质可以是可由计算机700访问的任何可用计算机存储介质。
[0065] 作为示例而非限制,计算机可读存储介质可包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据的信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机可读存储介质包括,但并不限于,RAM、ROM、EPROM、EEPROM、闪存或其他固态存储器技术,CD-ROM、数字多功能盘(“DVD”)、HD-DVD、蓝光或其他光学存储,磁带盒、磁带、磁盘存储器或其他磁存储设备,或可以用来存储所需信息并可由计算机700访问的任何其他非易失性介质。
[0066] 可以理解,此处的计算机可读介质也包括通信介质。通信介质通常以诸如载波或其他传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其他数据,并包括任意信息传送介质。术语“已调制数据信号”是指其一个或多个特征以在信号中对信息进行编码的方式来设置或改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接线连接之类的有线介质,以及诸如声学、RF、红外及其他无线介质之类的无线介质。上述中任一组合也 应包括在计算机可读介质的范围之内。计算机可读存储介质不包括通信介质。
[0067] 根据各实施例,计算机700可以使用通过诸如网络720之类的网络到远程计算机的逻辑连接来在联网环境中操作。计算机700可以通过连接至总线704的网络接口单元706来连接到网络720。应当理解,网络接口单元706还可以被用来连接到其他类型的网络和远程计算机系统。计算机700还可包括输入/输出控制器712用于接收和处理来自多个其他设备的输入,这些设备包括键盘鼠标或者电子指示笔(未在图7中示出)。类似地,输入/输出控制器可以提供至显示屏、打印机或其他类型的输出设备(也未在图7中示出)的输出。
[0068] 如前简述的那样,多个程序模块和数据文件可以存储在计算机700的海量存储设备710和RAM 714内,包括适于控制联网的台式、膝上型或服务器计算机的操作的操作系统718。大容量存储设备710和RAM 714还可以存储一个或多个程序模块。具体而言,大容量存储设备710和RAM 714可存储虚拟化应用112、应用虚拟化客户机组件110、和/或上述的其他软件组件。大容量存储设备710和RAM 714还可存储其他程序模块和数据,诸如依赖关系114。
[0069] 一般而言,软件应用或模块在加载到CPU 702中并执行时,可将CPU 702和整个计算机700从通用计算系统变换成被定制成执行此处所呈现功能的专用计算系统。CPU 702可以用任意数量的晶体管或其他分立的电路元件(它们可以分别地或共同地呈现任意数量的状态)构建。更具体地说,CPU 702可以响应软件或模块内包含的可执行的指令,作为一个或多个有限状态机来操作。这些计算机可执行的指令可以通过指定CPU 702如何在多个状态之间转换来转换CPU 702,从而在物理上转换构成CPU 702的晶体管或其他分立的硬件元件。
[0070] 通过将软件或模块编码到海量存储设备上,还可变换海量存储设备或相关联的计算机可读存储介质的物理结构。在本说明书的不同实现中,物理结构的具体变换可取决于各种因素。这些因素的示例包括但不限于:用来实现计算机可读存储介质、计算机可读存储介质是否被表征为主存储还是次级存储等技术。例如,如果计算机可读取的存储介质是作为基于半导体的存储器实现的,则当软件被编码到其中时,软件或模块可以转换半导体存储器的物理状态。例如,软件可以转换构成半导体存储器的晶体管、电容器或其他分立的电路元件 的状态。
[0071] 作为另一个示例,计算机可读取的存储介质可以使用磁性或光学技术来实现。在这样的实现方式中,当软件被编码到其中时,软件或模块可以转换磁性或光学介质的物理状态。这些变换可以包括改变给定磁性介质内的特定位置的磁性。这些变换还可以包括改变给定光学介质内的特定位置的物理特征或特性,以改变这些位置的光学特性。在没有偏离本说明书的范围和精神的情况下,物理介质的其他转换也是可以的,前面提供的示例只是为了便于此讨论。
[0072] 基于前述内容,应当理解到,在此已经提供了用于确保在运行时中应用依赖关系被满足的诸个技术。虽然以计算机结构特征、方法动作、以及计算机可读介质专用的语言描述了本文呈现的主题,但是应该理解,在所附权利要求书中所限定的本发明不一定仅限于本文描述的具体特征、动作、或介质。相反,这些具体特征、动作和介质是作为实现权利要求的示例形式来公开的。
[0073] 上述主题仅作为说明提供,并且不应被解释为限制。可对此处所述的主题作出各种修改和改变,而不必遵循所示和所述的示例实施例和应用,且不背离所附权利要求书中所述的本发明的真正精神和范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈