使得内部资源能够安全且无缝地暴露给公共云应用

文档序号:10538707阅读:206来源:国知局
使得内部资源能够安全且无缝地暴露给公共云应用
【专利摘要】本申请涉及使得内部资源能够安全且无缝地暴露给公共云应用。使部署在公共云中的应用能够安全地并且在无需防火墙上的附加端口的情况下访问内部资源。对一对安全网关进行实例化,一个在云处,另一个位于内部。每个网关可以访问定位内部资源以及建立与内部资源的安全连接所需要的信息。响应于确定应用需要访问内部资源,使用数据集合来定位资源。然后通过在云网关与内部网关之间建立的基于套接字的通信信道来从云网关向内部网关发出通信请求。通过基于HTTP的协议来发送通信请求,使得应用能够访问内部资源,而无需在防火墙处定义附加的IP地址/端口。然后实现从应用到内部资源的代理连接。
【专利说明】
使得内部资源能够安全且无缝地暴露给公共云应用
技术领域
[0001 ]本公开一般涉及在"云"计算环境中部署应用。
【背景技术】
[0002] -种新兴的信息技术(IT)交付模型是云计算,通过云计算根据需要将共享资源、 软件和信息经由因特网提供给计算机和其它设备。云计算可以显著地减少IT成本和复杂 度,而同时改善工作负载优化和服务交付。采用这种方法,可以对应用实例进行托管,并可 以使得该应用实例从基于因特网的资源中可获得,该基于因特网的资源是通过HTTP经由常 规的网络浏览器可访问的。示例应用可以是提供诸如电子邮件、日历安排、联系人管理和即 时消息传送之类的常用的一组消息传送功能的应用。用户然后将通过因特网直接访问服 务。使用这种服务,企业会将其电子邮件、日历和/或合作基础架构放置在云中,并且终端用 户将使用适当的接入系统来访问他的或她的电子邮件,或者执行日历操作。
[0003]云计算资源通常存放在通常使用虚拟化的体系架构来运行一个或多个网络应用 的大型的服务器机群中,在虚拟化的体系架构中应用在虚拟服务器、或者被称为"虚拟机 器"(VM)的内部运行,虚拟服务器被映射到数据中心设施中的物理服务器。虚拟机器通常在 管理程序(hypervisor)之上运行,该管理程序是一种向虚拟机器分配物理资源的控制程 序。
[0004] 提供基于装置或基于平台的解决方案来促进对基于云的供应的快速采用和部署, 在本领域中是已知的。通常,将基于云的供应部署成云应用包。为了这个目可以使用的一个 这样的装置是基于IBM DataP〇wer?7199/9005产品系列的IBM?工作负载部署器( IBM?Workload Deployer)。通常,将该装置直接放置在许多组织使用的业务工作负载 与底层云基础架构和平台组件之间。可替换地,可以使用平台即服务(PaaS)基础架构来部 署云应用包,平台即服务基础架构诸如Sm.artC.l〇_Ild?Orchestrator开放云管 理平台、或lBM?Blu emixTM,其是用于建立、管理以及运行所有类型的应用(例如网络、移 动、大数据和智能设备)的开放标准的基于云的平台。Bluemix能力包括Java、移动后端开发 和应用监测,以及来自生态系统伙伴和开放源的特征一所有这些都被提供为云中的服务。 Bluemix对与托管和管理基于云的应用相关联的复杂性中的大部分进行了抽象和隐藏。 Bluemix是基于云铸造 (Cloud Foundry)开放技术的,并且在SoftLayer基础架构上运行。
[0005] 混合云(hybrid cloud)是两个或更多个云(私有云、共同体云或公共云)的组合, 所述两个或更多个云保持为不同的实体,但是结合在一起,从而提供多个部署模型的益处。 在私有企业使用公共云作为混合环境来开发并部署新的基于云的应用(例如使用Bluemix) 时,有时需要从公共云应用访问客户的内部(on-premises)资源(应用和数据)。特别地,在 这种环境中的应用开发者经常期望开发使用某些应用接口来访问这些内部资源的应用源 代码,内部资源中的许多是通过基于非HTTP的接口可寻址的。然而由于这些非HTTP的接口 是本地的,所以可能需要访问大量的内部传输端口。相应地,实现内部资源的访问通常需要 云应用开发者与企业防火墙管理员交互,以获得向新服务和端口开放防火墙的许可。这样 的许可可能需要花费时间来获得,从而削减开发周期。对于基于HTTP的业务(去往内部应用 和服务器)来说,这样的要求并不是问题,原因在于通常通过经由相同的TCP端口(例如端口 443)使用URL的安全网关或代理来访问HTTP可寻址的资源,其中,URL允许将请求路由到正 确的服务器和应用。在HTTP情况中,本地防火墙管理员仅仅需要允许去往IP地址和若干已 知端口的入站业务。
[0006] 仍然需要针对使用本地(基于非HTTP的)协议的公共云应用提供一种以安全且无 缝的方式访问内部应用和数据的方法,而不需要在内部防火墙处定义的附加的IP地址和端 □ 〇

【发明内容】

[0007] 根据本公开,使得部署在公共云中的、并且通过基于非HTTP的协议运行的应用能 够安全地访问内部资源,而不需要开放企业防火墙上的除了标准HTTP端口(即,端口 80和 443)以外的附加端口。为此,对一对安全网关进行实例化,一个在公共云处,而另一个位于 内部。公共云中的安全网关适合于耦接到所部署的云应用,而内部安全网关适合于耦接到 内部资源(例如内部应用、数据库等)。每个网关或维持策略数据集合的副本(或可以以其它 方式获得对策略数据集合的副本的访问)。策略数据集合包括一个或多个数据对,特定的数 据对是"条件"和关联"动作"。条件识别服务名称,并且动作识别内部资源的位置(例如URI 等)以及建立与该内部资源的安全连接所需要的安全要求。因此,特定的策略数据集合提供 定位所识别的内部资源和建立与所识别的内部资源的安全连接所需要的信息。
[0008] 响应于确定公共云应用需要访问特定的内部资源,使用策略数据集合中的信息来 促进连接的建立。基于该信息,通过在网关之间建立的基于套接字的通信信道来从云网关 向内部网关发布通信请求。优选地,以HTTP WebSocket Upgrade(网络套接字升级)请求(端 口 443或者任何其它分配的HTTP端口上)的形式通过基于HTTP的协议来发送通信请求,使得 应用能够访问内部资源,而不需要在与内部网关相关联的内部防火墙处定义附加的IP地 址/端口。此处,实现从公共云应用到内部资源的代理连接。之后,应用数据入站并通过本地 的、基于非HTTP的协议从应用流入内部资源。
[0009] 以上已经概述了所公开的主题的较为相关的特征中的一些。这些特征应当被解释 为仅仅是说明性的。通过以不同的方式应用所公开的主题或者通过修改所公开的主题可以 获得许多其它的有益效果,如将要描述的那样。
【附图说明】
[0010] 为了对所公开的主题及其优点的更完全的理解,现在参考结合附图进行的以下描 述,在附图中:
[0011]图1描绘了可以实施说明性实施例的示例性方面的分布式数据处理环境的示例性 框图;
[0012]图2是可以实施说明性实施例的示例性方面的数据处理系统的示例性框图;
[0013] 图3示出了可以实施所公开的主题的示例性云计算体系架构;
[0014] 图4示出了可以使用基于网络的装置来促进对一个或多个基于云的供应的部署的 示例性操作环境;
[0015]图5示出了根据本公开的可以支持部署的云应用的代表性平台即服务(PaaS)基础 架构,诸如
[0016]图6示出了根据本公开的实施例、公共云应用如何访问内部资源;以及 [0017]图7描绘了根据本公开的连接建立。
【具体实施方式】
[0018] 现在参考附图并且具体地参考图1-2,提供了数据处理环境的示例性图,在该数据 处理环境中可以实施本公开的说明性实施例。应当理解的是,图1-2仅仅是示例性的,不旨 在主张或暗示关于在其中可以实施所公开的主题的方面或实施例的环境的任何限制。在不 背离本发明的精神和范围的情况下,可以对所描绘的环境进行许多修改。
[0019] 客户端-服务器技术
[0020] 现在参考附图,图1描绘了可以实施说明性实施例的方面的示例性分布式数据处 理系统的图形表示。分布式数据处理系统100可以包括可以实施说明性实施例的方面的计 算机网络。分布式数据处理系统100包含至少一个网络102,其是用于提供分布式数据处理 系统100内的连接在一起的各个设备和计算机之间的通信链路的介质。网络102可以包括连 接,诸如有线通信链路、无线通信链路或光纤线缆。
[0021] 在所描绘的示例中,服务器104和服务器106连同存储单元108连接到网络102。另 外,客户端110、112和114也连接到网络102。这些客户端110、112和114可以是例如个人计算 机、网络计算机等等。在所描绘的示例中,服务器104向客户端110、112和114提供数据,诸如 引导文件、操作系统映像和应用。在所描绘的示例中,客户端11〇、112和114是服务器104的 客户端。分布式数据处理系统100可以包括附加的服务器、客户端和未示出的其它设备。 [0022]在所描绘的示例中,分布式数据处理系统100是具有网络102的因特网,因特网表 示使用传输控制协议/因特网协议(TCP/IP)协议组彼此通信的网络和网关的世界范围集 合。在因特网的中心是主节点或主机计算机之间的、路由数据和消息的高速数据通信线路 的骨干,主节点或主机计算机包括数以千计的商用计算机系统、政府计算机系统、教育计算 机系统和其它计算机系统。当然,还可以将分布式数据处理系统100实施为包括若干不同类 型的网络,诸如例如内联网、局域网(LAN)、广域网(WAN)等等。如上面阐明的那样,图1旨在 作为示例,并不作为所公开的主题的不同实施例的体系架构限制,并且因此在图1中示出的 特定元件不应当被认为是关于在其中可以实施本发明的说明性实施例的环境而具有限制 性的。
[0023]现在参考图2,示出了示例性数据处理系统的框图,在该示例性数据处理系统中可 以实施说明性实施例的方面。数据处理系统200是实施本公开的说明性实施例的进程的计 算机可用代码或指令可以位于其中的计算机的示例,诸如图1中的客户端110。
[0024]现在参考图2,示出了可以实施说明性实施例的数据处理系统的框图。数据处理系 统200是实施说明性实施例的进程的计算机可用程序代码或指令可以位于其中的计算机的 示例,诸如图1中的服务器104或客户端110。在该说明性示例中,数据处理系统200包括通信 结构202,其提供处理器单元204、存储器206、持久存储装置208、通信单元210、输入/输出 (I/O)单元212、和显示器214之间的通信。
[0025] 处理器单元204用于执行可以被加载到存储器206的软件指令。处理器单元204可 以是一个或多个处理器的集合,或者可以是多处理器核,这依赖于特定实施方式。此外,可 以通过使用一个或多个异构处理器系统来实施处理器单元204,在该异构处理器系统中,主 处理器与次处理器(secondary processor) -起存在于单个芯片上。作为另一个说明性示 例,处理器单元204可以是包含多个同种类型的处理器的对称多处理器(SMP)系统。
[0026]存储器206和持久存储装置208是存储设备的示例。存储设备是能够在临时的基础 和/或永久的基础上存储信息的任何一块硬件。在这些示例中,存储器206可以是例如随机 存取存储器或任何其它适当的易失性或非易失性存储设备。持久存储装置208可以采取各 种形式,这依赖于特定实施方式。例如,持久存储装置208可以包含一个或多个组件或设备。 例如,持久存储装置208可以是硬盘驱动器、闪速存储器、可重写光盘、可重写磁带、或以上 的某种组合。持久存储装置208所使用的介质也可以是可移除的。例如,可移除硬盘驱动器 可以用于持久存储装置208。
[0027]在这些示例中,通信单元210提供与其它数据处理系统或设备的通信。在这些示例 中,通信单元210是网络接口卡。通信单元210可以通过使用物理通信链路和无线通信链路 中的任何一个或两者来提供通信。
[0028]输入/输出单元212允许与可以连接到数据处理系统200的其它设备之间的数据输 入和数据输出。例如,输入/输出单元212可以通过键盘和鼠标提供用于用户输入的连接。此 外,输入/输出单元212可以向打印机发送输出。显示器214提供用于向用户显示信息的机 制。
[0029] 用于操作系统和应用或程序的指令位于持久存储装置208上。这些指令可以被加 载到存储器206以供处理器单元204的执行。不同实施例的进程可以由处理器单元204使用 计算机实施的指令来执行,计算机实施的指令可以位于诸如存储器206之类的存储器中。这 些指令被称为可以由处理器单元204中的处理器读取和执行的程序代码、计算机可用程序 代码、或计算机可读程序代码。不同实施例中的程序代码可以体现在不同的物理或有形计 算机可读介质上,例如存储器206或持久存储装置208。
[0030] 程序代码216以功能的形式位于选择性可移除的计算机可读介质218上,并且可以 被加载到数据处理系统200或被传递到数据处理系统200以供处理器单元204的执行。在这 些示例中,程序代码216和计算机可读介质218形成计算机程序产品220。在一个示例中,计 算机可读介质218可以是有形的形式,诸如例如,被插入或置入驱动器中的光盘或磁盘,或 者作为持久存储装置208的一部分、以用于传递到存储设备的其它设备,诸如作为持久存储 装置208的一部分的硬盘驱动器。以有形的形式,计算机可读介质218还可以采用持久存储 装置的形式,诸如连接到数据处理系统200的硬盘驱动器、拇指驱动器或闪速存储器。有形 形式的计算机可读介质218还被称为计算机可记录的存储介质。在一些实例中,计算机可记 录介质218可以不是可移除的。
[0031] 可替换地,可以通过与通信单元210的通信链路和/或通过与输入/输出单元212的 连接,将程序代码216从计算机可读介质218传递到数据处理系统200。在说明性示例中,通 信链路和/或连接可以是物理的或无线的。计算机可读介质还可以采用非有形介质的形式, 诸如包含程序代码的通信链路或无线传输。针对数据处理系统200说明的不同组件不意味 着对不同实施例可以被实施的方式提供体系架构的限制。可以在包括除了针对数据处理系 统200所说明的那些组件以外的组件、或者包括替换针对数据处理系统200所说明的那些组 件的组件的数据处理系统中实施不同的说明性实施例。图2中所示的其它组件可以与所示 的说明性示例不同。作为一个示例,数据处理系统200中的存储设备是可以存储数据的任何 硬件装置。存储器206、持久存储装置208、和计算机可读介质218是有形形式的存储设备的 示例。
[0032]在另一示例中,总线系统可以用于实施通信结构202,并且可以由诸如系统总线或 输入/输出总线之类的一个或多个总线组成。当然,可以使用在附接到总线系统的不同组件 或设备之间提供数据传递的任何适当类型的体系架构来实施总线系统。附加地,通信单元 可以包括用于发送和接收数据的一个或多个设备,诸如调制解调器或网络适配器。此外,存 储器例如可以是,存储器206或诸如在接口和存储器控制器中心中发现的高速缓存,所述接 口和存储器控制中心可以存在于通信结构202中。
[0033] 可以用一个或多个编程语言的任何组合来撰写用于实施本发明的操作的计算机 程序代码,该一个或多个编程语言包括诸如允¥&1、3111 &11〖&11^、0++、0#、01^6(^"6-(:等等之 类的面向对象的编程语言以及常规的过程化编程语言。程序代码可以完全地在用户的计算 机上执行,部分地在用户的计算机上执行,作为独立的软件包部分地在用户的计算机上执 行并且部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后面的 情形中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用 户的计算机,或者可以(例如,使用因特网服务提供者(Internet Service Provider)通过 因特网)进行与外部计算机的连接。
[0034] 本领域普通技术人员将清楚的是,图1-2中的硬件可以根据实施方式而变化。除了 图2所描绘的硬件以外,或者替代图2中所描绘的硬件,可以使用其它内部硬件或外围设备, 诸如闪速存储器、等效的非易失性存储器、或光盘驱动器等。而且,除了将说明性实施例的 进程应用到先前提及的SMP系统以外,还可以将说明性实施例的进程应用到多处理器数据 处理系统,而不背离所公开的主题的精神和范围。
[0035] 如将看到的那样,本申请所描述的技术可以结合如图1所示的标准的客户端-服务 器范例而运行,在标准的客户端-服务器范例中,客户端机器与在一个或多个机器的集合上 执行的因特网可访问的基于网络的门户进行通信。终端用户对能够访问该门户并能够与该 门户交互的因特网可连接设备(例如,台式计算机、笔记本计算机、因特网使能的移动设备 等)进行操作。通常,每个客户端或服务器机器是诸如图2所示的包括硬件和软件的数据处 理系统,并且这些实体通过诸如因特网、内联网、外联网、专用网络或任何其它通信介质或 链路之类的网络彼此通信。数据处理系统通常包括一个或多个处理器、操作系统、一个或多 个应用、以及一个或多个实用程序。数据处理系统上的应用提供对网络服务的本地支持,包 括但不限于,对HTTP、SOAP、XML、WSDL、UDDI 和WSFL等等的支持。关于 SOAP、XML、WSDL、UDDI 和 WSFL的信息可以从万维网联盟(World Wide Web Consortium)(W3C)获得,万维网联盟负责 开发并维护这些标准;关于HTTP和XML的进一步信息可以从互联网工程任务组(Internet Engineering Task Force)(IETF)获得。假定熟悉这些标准。
[0036] 作为本公开的附加背景,已知的因特网标准协议是WebSockeLWebSocket协议在 2011年由IETF标准化,作为因特网评论请求(RFOeASSJebSocket提供在单个TCP连接上的 全双工通信信道。其通常被实施在网络浏览器和网络服务器中,网络浏览器和网络服务器 是通信的端点。该协议为网络服务器提供了一种向网络浏览器发送内容的标准化的方式, 而不需要客户端进行请求,并允许来回传递消息同时保持连接开放。在这种方式中,可以在 浏览器和服务器之间发生双路(双向)持续会话。为了建立WebSocket连接,客户端发送 WebSocket握手请求,服务器针对WebSocket握手请求返回WebSocket握手响应。WebSocket 连接可以是安全的,例如使用TLS传输。握手与HTTP兼容但是独立于TCP和HTTP两者。因此 WebSocket协议实现例如在客户端与远程主机之间的双路通信,其中该客户端在受控环境 中运行不可信代码,该远程主机根据该代码选择参与通信。
[0037] 云计算模型
[0038] 云计算是一种服务交付模式,用于对共享的可配置计算资源池进行方便、按需的 网络访问。可配置计算资源是能够以最小的管理成本或与服务提供者进行最少的交互就能 快速部署和释放的资源,例如可以是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟 机和服务。这种云模式可以包括至少五个特征、至少三个服务模型和至少四个部署模型,这 些都在 Peter Mell 和Tim Grance 在 2009年10 月7 日的 "Draft NIST Working Definition of Cloud Computing"中被更具体地描述和限定。
[0039] 特别地,下列是其典型特征:
[0040]按需自助式服务:云的消费者在无需与服务提供者进行人为交互的情况下能够单 方面自动地按需部署诸如服务器时间和网络存储等的计算能力。
[0041]广泛的网络接入:计算能力可以通过标准机制在网络上获取,这种标准机制促进 了通过不同种类的瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助 理PDA)对云的使用。
[0042]资源池:提供者的计算资源被归入资源池并通过多租户(multi-tenant)模式服务 于多重消费者,其中按需将不同的实体资源和虚拟资源动态地分配和再分配。一般情况下, 消费者不能控制或甚至并不知晓所提供的资源的确切位置,但可以在较高抽象程度上指定 位置(例如国家、州或数据中心),因此具有位置无关性。
[0043]迅速弹性:能够迅速、有弹性地(有时是自动地)部署计算能力,以实现快速扩展, 并且能迅速释放来快速缩小。在消费者看来,用于部署的可用计算能力往往显得是无限的, 并能在任何时候都能获取任何数量的计算能力。
[0044] 可测量的服务:云系统通过利用适于服务类型(例如存储、处理、带宽和活跃用户 帐号)的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资 源使用情况,为服务提供者和消费者双方提供透明度。
[0045] 服务模型通常如下:
[0046] 软件即服务(SaaS):向消费者提供的能力是使用提供者在云基础架构上运行的应 用。可以通过诸如网络浏览器的瘦客户机接口(例如基于网络的电子邮件)从各种客户机设 备访问应用。除了有限的特定于用户的应用配置设置外,消费者既不管理也不控制包括网 络、服务器、操作系统、存储、乃至单个应用能力等的底层云基础架构。
[0047] 平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建或获 得的应用,这些应用利用提供者支持的程序设计语言和工具创建。消费者既不管理也不控 制包括网络、服务器、操作系统或存储的底层云基础架构,但对其部署的应用具有控制权, 对应用托管环境配置可能也具有控制权。
[0048] 基础架构即服务(IaaS):向消费者提供的能力是消费者能够在其中部署并运行包 括操作系统和应用的任何软件的处理、存储、网络和其他基础计算资源。消费者既不管理也 不控制底层的云基础架构,但是对操作系统、存储和其部署的应用具有控制权,对选择的网 络组件(例如主机防火墙)可能具有有限的控制权。
[0049] 部署模型通常如下:
[0050]私有云:云基础架构单独为某个组织运行。云基础架构可以由该组织或第三方管 理并且可以存在于该组织内部或外部。
[0051 ]共同体云:云基础架构被若干组织共享并支持有共同利害关系(例如任务使命、安 全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管 理并且可以存在于该共同体内部或外部。
[0052]公共云:云基础架构向公众或大型产业群提供并由出售云服务的组织拥有。
[0053] 混合云:云基础架构由两个或更多部署模型的云(私有云、共同体云或公共云)组 成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术 (例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
[0054]云计算环境是面向服务的,特点集中在无状态性、低耦接性、模块性和语意的互操 作性。云计算的核心是包含互连节点网络的基础架构。
[0055]代表性的云计算节点如图2所示。特别地,在云计算节点中,具有计算机系统/服务 器,其可与众多其它通用或专用计算系统环境或配置一起操作。众所周知,适于与计算机系 统/服务器一起操作的计算系统、环境和/或配置的示例包括但不限于:个人计算机系统、月艮 务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可 编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统 的分布式云计算技术环境,等等。
[0056]计算机系统/服务器可以在由计算机系统执行的计算机系统可执行指令(诸如程 序模块)的一般语境下描述。通常,程序模块可以包括执行特定的任务或者实现特定的抽象 数据类型的例程、程序、目标程序、组件、逻辑、数据结构等。计算机系统/服务器可以在通过 通信网络链接的远程处理设备执行任务的分布式云计算环境中实施。在分布式云计算环境 中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
[0057]现在参考图3,作为附加的背景,示出了云计算环境所提供的一组功能性抽象层。 应当提前理解的是,图3所示的组件、层和功能意图仅仅是说明性的,并且本发明的实施例 并不限于此。如所描绘的那样,提供了以下层和相应功能:
[0058] 硬件和软件层300包括硬件和软件组件。硬件组件的示例包括:主机,例如 IBM? zSeries?系统;基于Rise(精简指令集计算机)体系结构的服务器,例如IBM pSeriesd)系统;IBMxSeries?系统;IBM BladeCenter?系统;存储设备;网络和网 络组件。软件组件的示例包括:网络应用服务器软件,例如IBM WebSphere?应用服务 器软件;数据库软件,例如IBMDB2.⑩数据库软件。(IBM, zSeries,pSeries,xSeries, BladeCenter,WebSphere以及DB2是国际商业机器公司在全世界各地的注册商标)。
[0059]虚拟层302提供一个抽象层,该层可以提供下列虚拟实体的示例:虚拟服务器、虚 拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作系统,以及虚拟客户端。
[0060] 在一个示例中,管理层304可以提供下述功能:资源供应功能:提供用于在云计算 环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能:在云计算环境内对 资源的使用进行成本跟踪,并为此提供帐单和发票。在一个示例中,该资源可以包括应用软 件许可。安全功能:为云的消费者和任务提供身份认证,为数据和其它资源提供保护。用户 门户功能:为消费者和系统管理员提供对云计算环境的访问。服务水平管理功能:提供云计 算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能:为根 据SLA预测的对云计算资源未来需求提供预先安排和供应。
[0061] 工作负载层306提供云计算环境可能实现的功能的示例。在该层中,可提供的工作 负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学提 供;数据分析处理;交易处理;以及其他(例如,在私有云中的企业专用功能)。
[0062]提前理解的是,虽然本公开包括关于云计算的详细描述,但是本申请中记载的教 导的实施方式不限于云计算环境。相反,本发明的实施例能够结合现在已知的或以后开发 的任何其它类型的计算环境而被实施。
[0063]因此,代表性的云计算环境具有一组高级别的功能组件,其包括前端身份管理器、 业务支持服务(BSS)功能组件、操作支持服务(0SS)功能组件以及计算云组件。身份管理器 负责与请求客户端对接以提供身份管理,并且这个组件可以用诸如可从纽约阿蒙克市的 IBM公司获得的Tivoli Federated Identity Manager(TFIM)之类的一个或多个已知系统 来实施。在适当的环境中,可以使用TFIM来提供对其它云组件的联合单点登录(F-SS0)。业 务支持服务组件提供某些管理功能,诸如账单支持。操作支持服务组件用于提供诸如虚拟 机(VM)实例之类的其它云组件的供应和管理。云组件代表主要的计算资源,其通常是用于 执行目标应用的多个虚拟机实例,目标应用可用于经由云进行访问。使用一个或多个数据 库来存储字典、日志和其它工作数据。所有这些组件(包括前端身份管理器)都位于云"内", 但是这不是必要条件。在替换实施例中,可以在云的外部操作身份管理器。也可以在云的外 部操作服务提供者。
[0064] 一些云是基于非传统的IP网络的。因此,例如,云可以基于双层的基于CL0S的网 络,其中使用MAC地址的散列(hash)进行特殊的单层IP路由。本申请描述的技术可以用在这 样的非传统云中。
[0065]在非限制性的实施方式中,代表性的平台技术是但不限于,具有VMware vSphere 4 · 1更新1和5 · 0的IBM System χ錢服务器。
[0066] 云部署技术
[0067] 提供基于装置的解决方案来促进对基础架构即服务以及平台即服务的供应两者 的快速采用和部署是已知的。一个这样的装置是IBM工作负载部署器(IBM Workload DeployerKlWD),并且该装置还可以用于管理共享的多租户环境,其中隔离和安全是重要 的。物理装置的安全特点通常是由自禁止开关提供的,如果装置的盖被移除,那么触发自禁 止开关。这种物理安全使得装置能够用作凭证的安全库,该凭证可以在整个生命周期中(在 存储、分发、运行于云中、或从云中移除的过程中)被绑定到虚拟映像。IBM工作负载部署器 还包含存储驱动器,该存储驱动器简化映像定制的存储。IBM工作负载部署器还用作针对预 先加载和定制的中间件虚拟映像和模式的专用存储装置。
[0068] 在操作中,装置可以供应标准的和定制的中间件虚拟映像和模式,可以在私有或 内部云计算环境内安全地部署和管理该标准的和定制的中间件虚拟映像和模式。这些虚拟 映像可以帮助组织容易并快速地开发、测试和部署商业应用。在完成时,自动地将资源返回 给共享资源池以供将来使用,并记录资源以用于内部退单的目的。该装置还管理单独的用 户和组对资源的访问,给IT管理者提供以精细粒度的等级来优化效率所需要的控制。
[0069] 参考图4,代表性的操作环境包括物理装置400,其与云402对接。可以使用诸如上 面关于图2描述的数据处理系统来实施该装置。优选地,装置400包括基于Web 2.0的用户接 口(UI)、命令行接口(CLI)和基于REST的应用编程接口(API)。该装置提供使得基于云的方 案能够快速部署的管理功能。为此,该装置提供(i)用于管理用户和组对资源的访问的数据 404的存储、(ii)预先加载的和/或可定制的中间件虚拟映像406的存储、和(iii)可配置的 模式和脚本包(408)的存储。模式是对包括特定解决方案的物理资产和虚拟资产两者的逻 辑描述。管理功能和接口向许可对另外的复杂的一组硬件和软件组件进行快速创建和修改 的结构提供基于模板的方法。
[0070] 同样如图4所示,中间件应用在其上运行的内部或私有云环境402通常包括监督程 序、联网基础架构和分配给装置的存储设备。可以用上面关于图3描述的方式来实施代表性 的环境。
[0071] 作为进一步的背景,是用于建立、管理和运行诸如网络、移动、大 数据和智能设备之类的所有类型的应用的开放标准的、基于云的平台。能力包括Java、移动 后端开发和应用监测,以及来自生态系统伙伴和开放源的特征一所有这些都被提供为云中 的服务。Bluemix抽象并隐藏了与托管并管理基于云的应用相关联的大部分复杂性。使用 Bluemix,应用开发者可以专注于开发云应用,而不必管理对其进行托管所需要的基础架 构。对于移动应用,开发者可以使用Bluemix所提供的预先建立的服务。对于网络应用,开发 者可以将应用上传到Bluemix并指示运行多少个实例。然后,Bluemix负责部署。在应用被部 署之后,在应用的使用或装载发生变化时,用户可以容易地对应用进行扩展或缩减。
[0072] Bluemix可以用于用最流行的编程语言进行快速的应用开发和部署。例如,可以用 JavaScript在iOS、Android和HTML中开发和部署移动应用。可以使用诸如Ruby、PHP和Java? 之类的语言来开发并部署网络应用。此外,Bluemix还提供中间件服务以供应用使用。具体 地,Bluemix在其供应新的服务实例时代表应用进行动作,并且然后将这些服务绑定到应 用。这使得应用能够执行其真正的工作,从而将对服务的管理留给基础架构。
[0073]参考图5, Bluemix是用于建立云应用并在开发应用时使用服务的环境500。 Bluemix还向在诸如Liberty之类的应用服务器上运行的主机应用构件提供环境。通过使用 SoftLayer 504,并且如下面将描述的那样,Bluemix部署托管每个所部署的应用508的虚拟 容器。在这种环境中,应用可以使用预先建立的服务(包括第三方服务)510来使得应用组装 变得容易。开发者可以通过使用基于浏览器的用户接口 512、或者被称为cf的云铸造命令行 接口 514来与Bluemix基础架构交互,以部署网络应用。客户端与Bluemix托管的应用交互, 该客户端可以是移动应用516、外部运行的应用、在Bluemix上建立的应用、或正在使用浏览 器的应用开发者518。优选地,客户端使用REST或HTTP API 520来通过Bluemix路由器524向 应用实例或组合服务中的一个路由请求。
[0074] 在Bluemix中,通常将云应用部署到不同的Bluemix区域,其中区域通常是定义的 地理地域。开发者可以选择部署到一个区域或者跨多个区域部署。当用户将应用部署到 Bluemix时,他或她必须用足够的信息来配置Bluemix以支持该应用。对于移动应用, Bluemix包含表示移动应用后端的构件,诸如移动应用用来与服务器通信的服务。对于网络 应用,开发者必须确保关于适当的运行时间和框架的信息被传送给Bluemix,使得可以建立 运行应用的适当的执行环境。包括移动和网络的每个执行环境是与其它应用的执行环境隔 离的。即使这些应用可能处于相同的物理机器上,执行环境也是隔离的。
[0075] 再参考图5,当用户创建应用并将其部署到Bluemix时,Bluemix环境确定应用或应 用所表示的构件被发送到的合适的虚拟机(VM)522。对于移动应用,在Bluemix上创建移动 后端投影。在云中运行的移动应用的任何代码最终在Bluemix环境中运行。对于网络应用, 在云中运行的代码是开发者部署到Bluemix的应用本身。VM的确定基于若干因素,包括:已 经在机器上的负载以及该VM所支持的运行时间或框架。在选择了 VM之后,每个VM上的应用 管理器为应用安装适当的框架和运行时间。然后,可以将应用部署到该框架中。在部署完成 时,启动应用构件。如图5所示,VM 522,也被称为微滴执行代理(droplet execution agent) (DEA),其具有多个部署于其中的应用508。在每个VM中,应用管理器与Bluemix基础 架构的其余部分进行通信,并且管理被部署到该VM的应用。每个VM具有分隔并保护应用的 容器。在每个容器中,Bluemix安装每个应用所需要的合适的框架和运行时间。在部署应用 时,如果应用具有网络接口(诸如Java网络应用)、或者其它基于REST的服务(诸如公开暴露 给移动应用的移动服务),那么应用的用户可以通过使用正常的HTTP请求与其进行通信。每 个应用可以具有一个或多个与其相关联的URL,但是这些URL的全部必须都指向Bluemix端 点。当请求进入时,Bluemix检查该请求,确定它是发往哪个应用,并且然后选择应用实例中 的一个来接收该请求。
[0076]服务510是由Bluemix托管的云扩展。服务提供应用的运行代码的备好待用的功 能。Bluemix提供的预定服务包括数据库、消息传送、移动应用的推送通知、以及网络应用的 弹性缓存。开发者还可以在Bluemix中创建服务,这些可以包括简单的实用程序(例如运行 时间库的功能),或者对服务或数据库建模的进程的复杂业务逻辑。Bluemix通过供应新的 服务实例、并将那些服务实例绑定到应用来简化服务的使用。Bluemix自动地处理服务的管 理。
[0077]运行时间是用于运行应用的一组资源。Bluemix提供运行时间环境,以作为不同类 型的应用的容器。运行时间环境作为建立包(buildpack)被集成到Bluemix,并且被自动地 配置以供使用。建立包是准备用于在目标PaaS上执行的部署代码的脚本集合。建立包收集 应用的运行时间和框架的依赖关系。然后,建立包将它们与应用一起打包到可以被部署到 云的微滴(droplet)中。
[0078]当然,任何这样的上述云管理环境不旨在是限制性的,原因在于可以在其它(开 放、封闭或混合的)环境中,和/或使用其它部署技术(不管是开放的还是专属的还是混合 的)实施本文中的技术。
[0079] 使内部服务能够被安全地暴露给公共云应用
[0080] 在以上作为背景的情况下,现在描述本公开中的技术。
[0081] 图6描绘了基本的操作情形。通常地,该情形是混合云情形,其中,已经例如通过使 用Bluemix将云应用部署在公共云中,同时部署该应用的企业维持其自己的(通常是私有和 安全的)企业网络。因此,如图6所描绘的那样,企业侧包括企业网络600,其包括防火墙602 或其它类似机制(例如,NAT等)。内部资源604(或者更通常地,"服务")包括内部应用、数据 库等。公共云侧包括公共云606,诸如Bluemix。公共云606是经由诸如可公开路由(基于IP) 的因特网、或者某种其它基于网络的链路(或多个链路)之类的中介608可访问的。例如使用 上面描述的云部署技术中的一个来将一个或多个云应用610部署在公共云606中。根据本公 开,假定云应用610经由基于非HTTP的协议612在正常的过程中访问内部资源604。因此,例 如,如果所部署的云应用610是数据库系统并且内部资源604是数据库,那么基于非HTTP的 协议612可以是JDBC。基于非HTTP的协议612有时在本申请中被称为"本地"协议。更通常地, 本申请中使用的"本地"协议指的是非HTTP(或非HTTPS)协议(即,不使用公知的基于HTTP的 端口(80和443)的协议)。
[0082]在这种操作情形下,并且根据本公开,使部署在公共云606中的并且通过基于非 HTTP的协议612运行的应用610能够安全地访问内部资源604,并且不需要开放的企业防火 墙602上的除标准HTTP端口(即端口 80和443)以外的附加端口。为此,对一对安全网关进行 实例化,一个(云网关614)在公共云处,而另一个(内部网关616)位于内部。如图6所描绘的 那样,公共云中的安全网关614适合于耦接到所部署的云应用610,而内部安全网关616适合 于耦接到内部资源604(例如,内部应用、数据库等)。每个网关或维持策略数据集合618(或 可以以其它方式获得对策略数据集合618的访问)。策略数据集合包括一个或多个数据对, 其中特定的数据对是"条件"和关联"动作"。条件识别服务名称,而动作识别内部资源604的 位置(例如,URI等),以及建立与该内部资源的安全连接所需要的安全要求。因此,特定的策 略数据集合提供使得网关614和616能够定位所识别的内部资源并且建立与所识别的内部 资源的安全连接所需要的信息。
[0083]现在描述本公开的技术的基本操作。响应于确定公共云应用610需要访问特定的 内部资源604 (例如接收到连接请求),使用策略数据集合618中的信息来促进连接的建立。 具体地,并基于该信息,通过在云网关与内部网关之间建立的基于套接字的通信信道622从 云网关向内部网关发出通信请求620。所期望的是,通过基于HTTP的协议(优选地以端口 443 上的HTTP WebSocket Upgrade请求的形式)发送通信请求620,使得应用610能够访问内部 资源602,而不需要在与内部网关616相关联的内部防火墙620处定义附加的IP地址/端口。 [0084] HTTP WebSocket的使用在该上下文中提供了显著的优点。具体地,并且与常规的 HTTP WebSocket请求(常规的HTTP WebSocket请求会被传递给在该请求中指定的端点)不 同,初始通信请求仅仅用于在网关614与616之间传递(即,传输)目标应用信息(即,其位置 和安全要求);因此,优选地,初始的基于HTTP的连接请求终止于内部安全网关616处。进一 步地,一旦安全网关616识别出内部资源的位置和安全要求,然后就可以创建端到端的通信 路径。具体地,实现从公共云应用610到云网关614、从云网关614到内部网关616以及然后从 内部网关616到内部资源602的代理连接。在每个这样的代理连接内可以存在附加的连接 (或路径)。优选地,所部署的云应用610通过本地的、基于非HTTP的协议来与其相关联的网 关616进行通信,其中,该应用使用所述本地的、基于非HTTP的协议来与内部资源交互。这些 网关之间的通信通过在它们之间建立的WebSocket通信信道进行;然而,在该上下文中, WebSocket不是按照(在标准协议中)设计那样被使用的,而是仅仅被用于代理原始的TCP业 务(从网关到网关)。一旦业务跨过网关到网关连接(例如通过公共的因特网),那么它然后 就需要被传递给内部网关。此时,通常使用本地的、基于非HTTP的协议以用于内部网关616 与其相关联的端点(即内部资源602)之间的交互。因此,应用数据入站并通过本地的、基于 非HTTP的协议从应用流入内部资源。当然,可以以类似的方式来传递从内部资源602发起的 并去往云应用的出站数据流。
[0085] WebSocket协议原始被设计为帧协议以促进长轮询业务的实时业务流。根据本公 开,并且如上所述,该协议被重利用以使得网关能够在不需要开放防火墙上的特殊端口的 情况下传输初始的连接请求,以及代理原始TCP业务(基于非HTTP的协议数据)JebSocket 连接用作从内部网关到云网关(例如Bluemix)的隧道。可能存在从不同的内部网关到相同 的云网关配置的多于一个的隧道。当存在多于一个的(1)与云网关配置相关联的内部网关 时,可以使用负载均衡规则(例如,轮询(round robin)、最先活动、最少连接等)来确定哪个 隧道以及从而确定哪个内部网关是接收HTTP/TCP连接请求的目标(对于入站的情况)。可能 存在许多这样的去往特定策略数据集合所确定的目的地的连接请求。
[0086] 在一个实施例中,在每个网关处复制上面所描述的策略数据集合。然而,这不是必 要条件。在替换的实施例中,内部网关可以是"无状态的",在该情况下,策略数据集合可以 在令牌(例如,JSON Web Token(JWT))内被编码,并且在传递HTTP连接请求时被"即时"或 "按需"绑定到通信信道。这可以提供策略的"及时"或者"后期绑定"。在该替换实施例中,内 部网关可以被概括为具有以这种无状态方式与云网关交互的能力的"客户端"。代表性的客 户端可以包括具有建立并管理Bluemix连接性的能力的客户端软件(和软件安装程序)、包 括"随处运行"功能的Docker映像、具有安全执行的IBM DataPower装置等等。当客户端无状 态时,软件提供针对客户端可以连接到的每个网关实例生成JWT的能力。具体地,JWT允许无 状态的客户端连接云网关并向云网关验证,以获取配置(例如,策略数据集合)、实时的客户 端软件升级、以及其它信息。JWT还可以包含特定于区域的连接信息。通常,在这种实施例 中,使用令牌来唯一地识别云网关,并且这种网关整个地保存目的地配置(即,策略数据集 合,连同它们的关联的安全策略)。
[0087] 图7以附加的细节描绘了WebSocket的连接建立和使用的流程图。在该示例情形 中,云应用710是数据库应用,其期望与数据库(内部资源)710入站地通信。云网关716通过 因特网与客户端714进行通信,如上面提到的那样,客户端714表示先前描述的内部网关。在 云侧,可以存在一个或多个管理应用实例(未示出),这些实例都连接到云应用710。通常,针 对每个区域存在一个云网关716(在Bluemix中)。在步骤(1),云网关建立用于侦听从应用发 起的(对于数据库的)访问请求的服务器侦听器线程。在步骤(2),云应用尝试建立与数据库 的连接。在步骤(3),云网关生成"处于连接"事件,其提供充足的信息(例如,服务名称)以实 现对端点状态(位置和安全要求)的查找。在步骤(4),网关在WebSocket隧道722上对"处于 连接事件"进行回应,WebSocket隧道722优选地先前已经在客户端与网关之间建立。可以响 应于由网关接收到(来自云应用的)连接请求而"按需"建立隧道,但是通常会提前建立隧 道。在步骤(5),客户端接收在HTTP连接请求中的端点信息,并建立与数据库(端点)的新连 接。在步骤(6),数据库进行响应,并且在应用与数据库之间的双向数据流被使能以完成进 程。
[0088]如图7所描绘的那样,优选地,TCP终止于云网关处,并然后在客户端处被重新建 立。
[0089] 如图7所示,公共云虚拟安全网关正在唯一的本地IP地址/TCP端口对组合上进行 侦听,该组合表示在符合条件的目标的列表中配置的特定目标应用或数据库。要注意的是, 公共云安全网关实例可以在这些唯一的本地IP地址/TCP端口对组合(针对每个内部应用或 数据库有一个)中的多个上进行侦听。公共云虚拟网关使用本地IP地址/TCP端口对组合作 为输入,来用策略规则动作定位策略规则条件,策略规则动作解析到针对目标内部应用或 数据库的"服务名称"或URI。
[0090] 在任何应用数据在公共云安全网关与内部安全网关之间流动之前,使用 WebSocket协议的公共云安全网关优选地通过发送WebSocket "升级"请求来执行策略规则 动作,WebSocket "升级"请求包含与符合条件的目标的列表中的内部目标应用相对应的服 务名称或URI。因为WebSocket协议是基于HTTPS的,因此内部安全网关可以处理端口 443上 的WebSocket "升级"请求,以及其它非相关的HTTPS业务。当接收到升级请求时,内部安全网 关从符合条件的目标列表中定位所期望的内部目标应用,并按照指定的安全会话要求代理 与被指名的应用之间的连接。如先前所描述的那样,WebSocket "升级"请求本身优选地不被 转发给目标应用,这是因为其仅仅在公共云与内部安全网关之间被用作传递目标应用信息 的方法。此时,已经实现从公共云应用到目标应用的代理连接,并且通过这些代理连接来发 送本地应用流。然而,因为这些并不是HTTPS请求,因此内部网关优选地绕开其用于这种建 立的连接的HTTP逻辑。
[0091] 使用上面描述的方法,使用本地应用(非HTTP)协议的公共云应用能够访问内部应 用和数据,而无需在内部防火墙定义附加的IP地址和端口。
[0092] 可以存在被供应作为网关服务的多个云网关。在一个实施例中,针对每个区域可 以存在多个云网关(对于基于Bluemix的配置)。
[0093]上面描述的技术通常用于从内部客户端侧网关和云网关在先前建立的WebSocket (隧道)上的入站流。在替换方案中,可以实施区域感知的客户端隧道建立,客户端通过该区 域感知的客户端隧道来建立到网关的隧道。在该替换方案中,客户端是无状态的,而JWT包 含初始HTTPS GET请求应当去往的区域特定的URL阵列,以获知连接到哪个网关节点。例如, 在B1 uemiX中,嵌入在JWT中的URL指向该区域的网关节点的子集。在该示例中,初始HTTP GET请求允许云基础架构确定哪个节点将提供最佳服务以提供有效的WebSocket隧道负载 均衡。客户端尝试连接到每个URL,直到成功的连接被建立为止。因为JWT指向可用节点的子 集,因此第一请求通常确定应当与其建立WebSocket连接的实际网关节点。
[0094] 一旦建立了 WebSocket连接隧道,数据流就可以在任何方向上流动。
[0095] 可以增大策略数据集合以包括附加的信息,诸如连接限制数据、验证和访问控制 信息等,在该情况中,在WebSocket上发出HTTP连接请求之前,(网关处的)策略规则匹配可 以考虑这样的信息。可替换地,这样的附加信息可以与连接请求一起被传递,并且在内部被 执行。
[0096] 本公开的技术提供了许多优点。本公开的技术提供了用于安全地允许来自公共云 的非HTTP业务访问内部资源而无需开放防火墙上的除标准http端口 80和443(或任何其它 被分配的HTTP或HTTPS端口)以外的附加端口的方法。该方法是由虚拟安全网关实现的,该 安全虚拟网关是在公共云中被实例化的,并且与企业位置处的内部安全网关协作地工作。 在公共云安全网关与内部安全网关之间,利用WebSocket协议来使信息经由新的WebSocket 子协议注册流动,所述新的WebSocket子协议注册使得最初来自公共云应用的业务能够被 路由到正确的内部应用。使用这种方法,在公共云中写入的应用使用其本地连接协议以无 缝且安全的方式访问内部应用或数据。经由诸如传输层安全(TLS)之类的标准的方式,利用 一系列代理连接确保从这种应用的连接的安全。如已经描述的那样,这种代理通信所涉及 的节点是:(1)公共云应用,其连接到(2)公共云中的虚拟安全网关,其连接到(3)内部安全 网关,其连接到(4)目标内部应用或数据库。内部安全网关使用一个或多个本地IP地址来仅 仅使得公知端口 443开放。在内部网关上,符合条件的目标应用或数据库的列表被配置具有 做出与内部应用/数据库的安全连接所需要的位置信息(主机名或IP地址、TCP端口)以及安 全信息(例如TLS密码套件、凭证)。
[0097]在不受限制的情况下,可以在已经描述的云部署平台系统或装置(图4或图5)内, 或者与这些平台系统或装置相关联地,或者使用任何其它类型的部署系统、产品、设备、程 序或过程,来实施本主题。利用其可以实施安全保证服务的代表性的云应用平台包括但不 限于IBM?:BluemiX。对这种商用系统的引用不旨在是限制性的,因为本公开中的安全保 证服务可以与任何云基础结构进行交互操作。
[0098]本申请的技术可以被实施为管理方案、服务、产品、装置、设备、进程、程序、执行线 程等。通常,这些技术被实施在软件中,作为在硬件处理元件中执行的一个或多个计算机程 序,该计算机程序与存储在诸如问题数据库之类的一个或多个数据源中的数据相关联。所 描述的处理步骤中的一些或全部可以是自动的,并且自主地与其它系统关联地操作。自动 可以是完全的或部分的,而操作(全部或部分地)可以是同步或异步的、基于需要的或者其 它方式的。
[0099] 上面描述的本公开的安全网关服务可以由对用于私有云、公共云或混合云的基础 架构进行操作的云服务提供者来实施。这种安全网关服务以已知的方式部署和管理安全基 础架构以支持功能。
[0100]如所描述的那样,本文中的方法可以完全或部分手动地或者以自动的方式来实 施。
[0101]虽然已经描述了优选的操作环境和使用情况(云部署装置或平台环境),但是可以 在期望在其中部署应用或其他服务同时执行所描述的安全约束的任何其它操作环境中使 用本文中的技术。
[0102] 如已经描述的那样,上面描述的功能可以被实施为独立的方法,例如由一个或多 个硬件处理器执行的一个或多个基于软件的功能,或者其可以用作被管理的服务(包括经 由S0AP/SML接口用作网络服务)。本申请中所描述的特定硬件和软件实施细节仅仅用于说 明的目的,并不意味着限制所描述主题的范围。
[0103] 更通常地,所公开主题的上下文内的计算设备的每一个都是包括硬件和软件的数 据处理系统(如图2所示),并且这些实体通过诸如因特网、内联网、外联网、专用网络或任何 其它通信介质或链路之类的网络彼此进行通信。数据处理系统上的应用提供对网络以及其 它已知服务和协议的本地支持,包括但不限于对HTTP、FTP、SMTP、SOAP、SML、WSDL、UDDU^ WSFL等的支持。关于5(^?、乂]\^、'^01^、1]001和'\^^的信息可以从万维网联盟(1(^1(1'^(16 Web Consortium)(W3C)中获得,万维网联盟负责开发并维护这些标准;关于HTTP和XML的进 一步信息可以从因特网工程任务组(IETF)中获得。
[0104] 除了基于云的环境之外,本申请中描述的技术可以在各种服务器侧体系架构中实 施或者结合各种服务器侧体架构实施,所述服务器侧体系架构包括简单的η层体系架构、网 站门户、联合系统等。
[0105] 更通常地,本申请中所描述的主题可以采用完全硬件实施例、完全软件实施例、或 者包含硬件元件和软件元件两者的实施例的形式。在优选实施例中,安全保证服务(或其中 的任何组件)在软件中被实施,该软件包括但不限于固件、常驻软件、微代码等。此外,下载 和删除接口和功能可以采用计算机程序产品的形式,该计算机程序产品可以从提供程序代 码以供计算机或任何指令执行系统使用或与其结合使用的计算机可用介质或计算机可读 介质访问。为了本描述的目的,计算机可用介质或计算机可读介质可以是可以包含或存储 以供指令执行系统、装置或设备使用或与其结合使用的程序的任何装置。介质可以是电子、 磁性、光学、电磁、红外或半导体系统(或装置或设备)。计算机可读介质的示例包括半导体 或固态存储器、磁带、可移除计算机磁盘、随机存取存储器(RAM)、只读存储器(R0M)、刚性磁 盘和光盘。光盘的当前示例包括紧凑盘-只读存储器(CD-ROM)、紧凑盘-读/写(CD-R/W)和 DVD。计算机可读介质是有形的、非暂时性的物品。
[0106] 在代表性实施例中,这些技术在专用计算平台,优选为由一个或多个处理器执行 的软件中实施。软件被维持在与一个或多个处理器相关联的一个或多个数据装置或存储器 中,并且软件可以被实施为一个或多个计算机程序。共同地,这种专用的硬件和软件包括上 面描述的功能。
[0107] 在上面描述的优选实施例中,本文中提供的功能被实施为现有的云计算部署管理 方案的附属物或延伸。
[0108] 虽然所描述的实施例引用位于公共云中的云网关,并且同时这将是常用的使用情 况,但是可以用部署在其它类型的基础架构(诸如私有云、共同体云或起源)中的特定网关 来实施这些技术。因此,"云网关"的概念应当被解释为涵盖这些布置中的任何一个。
[0109] 此外,虽然已经在上面描述了一般的使用情况(云应用从内部资源拉取数据),但 是应当理解的是,可能存在以相对的方向实施该方法的情况(例如内部资源从云应用拉取 数据)。可以在这样的情形中使用本公开中的双网关、基于套接字的通信信道技术。更通常 地,可以实施本体系架构和所描述的方法,而不管应用流的方向。
[0110] 虽然上面描述了由本发明的某些实施例所执行的操作的特定顺序,但是应当理解 的是,这种顺序是示例性的,这是因为替换的实施例可以以不同顺序执行这些操作、组合某 些操作、重叠某些操作等等。在说明书中对某些实施例的引用指示所描述的实施例可以包 括特定特征、结构或特性,但是每个实施例可能未必包括所述特定特征、结构或特性。
[0111] 最后,虽然已经单独地描述了系统的给定组件,但是本领域普通技术人员将理解 的是,这些功能中的一些可以在给定的指令、程序序列、代码部分等中被组合或共享。
[0112] 本文中的技术提供对技术或技术领域(即,管理云部署的计算实体)的改进,以及 对应用部署机制本身的运行的改进(即,通过延伸已经描述的常规功能)。
[0113] 在描述了我们的发明之后,现在我们请求保护的内容如下。
【主权项】
1. 一种使得在云中部署的应用能够访问内部资源的方法,其中,所述应用通过本地的、 基于非HTTP的协议来正常地访问所述内部资源,所述方法包括: 提供具有至少一个条件和相关联的动作的策略数据集合,其中,所述条件识别服务名 称,而所述动作识别所述内部资源的位置以及建立与所述内部资源的安全连接所需要的安 全要求; 响应于确定所述应用需要访问所述内部资源,从与所述应用相关联的云网关向内部网 关发出通信请求,所述通信请求是通过在所述云网关与所述内部网关之间建立的基于套接 字的通信信道发出的,所述通信请求是通过基于HTTP的协议提供的,以及包括所述策略数 据集合以使得所述内部网关能够定位所述内部资源,并且能够根据所述安全要求建立与所 述内部资源的代理连接;以及 之后,通过所述本地的、基于非HTTP的协议从所述应用向所述内部资源传递应用数据。2. 如权利要求1所述的方法,其中,所述通信请求是端口443上的HTTP WebSocket升级 请求。3. 如权利要求2所述的方法,其中,所述HTTP WebSocket升级请求适合于在所述内部网 关处终止。4. 如权利要求2所述的方法,还包括:建立从所述应用到所述云网关的代理连接。5. 如权利要求4所述的方法,其中,所述应用数据通过本地的、基于非HTTP的协议从所 述应用通过所述代理连接传送到所述网关,然后通过所述基于套接字的通信信道从所述云 网关传送到所述内部网关的,并且然后从所述内部网关传送到所述内部资源。6. 如权利要求1所述的方法,还包括:将第二内部网关与所述云网关关联,以及将所述 基于套接字的通信信道用于所述云网关与所述第二内部网关之间的通信。7. 如权利要求1所述的方法,还包括:在所述确定之前或者响应于所述确定,建立所述 基于套接字的通信信道。8. 一种装置,包括: 处理器; 保存计算机程序指令的计算机存储器,所述计算机程序指令被所述处理器执行以使得 部署在云中的应用能够访问内部资源,其中,所述应用通过本地的、基于非HTTP的协议来正 常地访问所述内部资源,所述计算机程序指令包括: 提供具有至少一个条件和相关联的动作的策略数据集合的程序代码,其中,所述条件 识别服务名称,而所述动作识别所述内部资源的位置以及建立与所述内部资源的安全连接 所需要的安全要求; 响应于确定所述应用需要访问所述内部资源,从与所述应用相关联的云网关向内部网 关发出通信请求的程序代码,所述通信请求是通过在所述云网关与所述内部网关之间建立 的基于套接字的通信信道发出的,所述通信请求是通过基于HTTP的协议提供的,以及包括 所述策略数据集合以使得所述内部网关能够定位所述内部资源,并能够根据所述安全要求 建立与所述内部资源的代理连接;以及 通过所述本地的、基于非HTTP的协议从所述应用向所述内部资源传递应用数据的程序 代码。9. 如权利要求8所述的装置,其中,所述通信请求是端口443上的HTTP WebSocket升级 请求。10. 如权利要求9所述的装置,其中,所述HTTP WebSocket升级请求适合于在所述内部 网关处终止。11. 如权利要求9所述的装置,其中,所述程序代码指令还包括建立从所述应用到所述 云网关的代理连接的程序代码。12. 如权利要求11所述的装置,其中,所述应用数据通过本地的、基于非HTTP的协议从 所述应用通过所述代理连接传送到所述网关,然后通过所述基于套接字的通信信道从所述 网关传送到所述内部网关的,并且然后从所述内部网关传送到所述内部资源。13. 如权利要求8所述的装置,其中,所述计算机程序指令还包括:用于将第二内部网关 与所述云网关关联的程序代码,其中所述基于套接字的通信信道用于所述云网关与所述第 二内部网关之间的通信。14. 如权利要求8所述的装置,其中,所述计算机程序指令还包括:用于在所述确定之前 或者响应于所述确定,建立所述基于套接字的通信信道的程序代码。
【文档编号】H04L29/08GK105897688SQ201610085022
【公开日】2016年8月24日
【申请日】2016年2月15日
【发明人】小L·H·欧弗尔拜, A·弗伦奇, B·莫萨科沃斯基, A·F·罗德里古埃茨
【申请人】国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1