云服务安全中介和代理的制作方法

文档序号:10664021阅读:299来源:国知局
云服务安全中介和代理的制作方法
【专利摘要】本申请一般涉及一种对基于网络的软件即服务(SaaS)供应商与客户机之间的网络流量进行操作的系统。该系统可以被配置作为受管通信网络代理并基于预定策略和规则对网络流量采取行动。所述系统可以包括后缀代理,所述后缀代理被配置用于通过处理SaaS服务器响应的捕获页面处理,以便后续的请求由后缀代理依据文件类型和响应类型来处理。
【专利说明】云服务安全中介和代理
[0001] 相关申请的交叉引用
[0002] 本申请要求在2013年11月11日提交的名为"Cloud Service Security Broker and Proxy(云服务安全中介和代理)"的美国临时专利申请序列号61/902,786、在2013年11 月11 日提交的名为"Cloud Service Risk Analysis and Threat Detection(云服务风险 分析和威胁检测)"的美国临时专利申请序列号61/902,787、在2013年11月11日提交的名为 "Cloud Service Discovery (云服务发现)"的美国临时专利申请序列号61/902,789、在 2014年9月12日提交的名为"Cloud Service Suffix Proxy(云服务后缀代理)"的美国临时 专利申请序列号62/049,473的各申请的优先权,每个申请的内容通过整体引用被结合于 此。 发明领域
[0003] 本申请一般涉及通过监视和保护通信来保护通信网络和系统,尤其是通过使用后 缀代理来保护通信网络和系统。
[0004] 背景
[0005] 企业越来越多地采用基于云的软件即服务供应。这些服务常遭受各种网络安全风 险。已知的用于保护这些网络的系统通过检测运行软件即服务的服务器与用户操作的端点 之间的流量来工作。这些已知网络安全系统通常需要复杂的端点配置,这增加了系统复杂 性。此外,在许多情况下,端点可能不在企业的完全控制之下、可能完全不受管、或以其他方 式不可配置。除了配置和管理用户控制的端点方面的固有困难之外,在网络地址被动态生 成时难以确保整个会话的流量捕获(captivation)。
[0006] 附图简述
[0007] 图1示出示例体系架构和方法操作的示例概览。
[0008] 图2示出具有多个代理节点的示例体系架构。
[0009] 图3示出使用SAML的示例认证方法。
[0010] 图4示出包括全局分布以减少等待时间的代理节点的多个不同的网络的示例。
[0011] 图5示出显示了失效启动(f a i 1 -open)的路由的示例网络代理体系架构。
[0012] 图6示出由负载平衡器群集和多个代理节点组成的示例代理节点。
[0013] 图7示出了示例用户界面。
[0014] 图8示出了示例用户界面。
[0015] 图9示出了示例用户界面。
[0016] 图10示出了示例用户界面。
[0017] 图11示出了用于威胁检测的示例方法。
[0018] 图12示出了示例参数集。
[0019]图13示出了发现软件即服务(SaaS)的环境的示例方法。
[0020] 图14示出非高速缓存的后缀代理操作的示例方法。
[0021] 图15示出高速缓存的后缀代理操作的示例方法。
[0022] 详细描述
[0023] 在此描述了一种用于监视并保护通信的体系架构。在此所述的系统和方法可以被 用于透明地实现针对任何地方的用户的云流量安全和控制。所述系统可以被配置为保护公 司的云服务账户中的任何或全部流量和活动。在一些实施例中,所述系统可以被配置以使 得它不需要任何客户端侧或网络安装。所述系统可以包括由分布在世界上多个位置的独立 的自主网络代理所构成的高复原性虚拟网络。
[0024] 受管通信网络代理服务可被用来截取、监视、修改以及转发用户与基于网络的软 件服务供应商之间的网络通信流量。受管网络代理服务可以被配置为操作以便检测和减轻 网络威胁。作为非限制性示例,服务可以被配置为在各种模式下操作,包括应用防火墙模 式;被动入侵检测(IDS)模式,以通知可疑的网络流量和行为;或入侵预防系统(IPS)模式, 以阻止威胁。所述系统还可以被配置为执行应用控制、URL过滤以及针对网络流量的恶意软 件防护。
[0025] 体系架构
[0026] 在此所述的系统可以被配置为对基于网络的软件即服务(SaaS)供应商与客户端 之间的网络流量进行操作。在一些实施例中,在还未为客户端设备或网络设置任何控制或 限制的情况下,当该客户端计算设备通过公共网络(例如因特网)被连接到SaaS供应商时, 该系统能够被配置为对SaaS供应商与该客户端计算设备之间的这样的网络流量进行操作。 在一些实施例中,无需对客户端设备的进行配置。
[0027]体系架构设计
[0028]所述系统的组件可以以受管通信网络代理的形式来实现。尽管在此提及的是代 理,但可以理解所述代理可以以一个或多个网络设备的形式来实现。而且,受管网络代理可 以被分散,并且受管网络代理的功能分布在不同的地理区域中的多个机器上。
[0029]在一些实施例中,网络代理可以被配置,以使得客户端设备和SaaS供应商之间的 流量流过该网络代理。因为网络代理中介了该通信,因此它可以被用于监视这些点之间的 网络流量并基于预定的策略和规则对网络流量采取行动。在图1中示出了示例体系架构和 方法操作的概览。代理网络可以针对复原性而被优化,并且失效开启控制可以被用于如果 代理网络故障则重新路由用户流量。如下详细描述地,在部署后,SaaS流量的通用流程如 下:
[0030] 从任何位置、在任何设备上,用户访问机构的云服务。流量被路由通过最近的受管 网络代理节点。节点可以用作策略实施节点并提供对云活动的全面审核。在代理网络数据 中心,在中央数据中心中事件被令牌化并被聚集在每个承租人的分开的数据库中。事件处 理发生并且事故被报告(例如"未知设备访问敏感数据")。可以提供用户界面,通过该用户 界面,管理员可以访问控制台并且具有对云活动的可见性。而且,可以由代理节点来定义并 实施策略。在图2中示出了具有多个代理节点的示例体系架构。
[0031] 所述代理可以被配置为自主运作、确保跨不同的因特网服务供应商(ISPs)和地理 的复原性和高可用性。在一些实施例中,星型体系架构可以被使用,其中所有的节点向中央 数据中心发送信息(单向)。
[0032] 该系统可以被配置成要么失效保护要么失效启动。如果外部主存解决方案被使 用,万一其它装置故障,用户可以被路由到原始SaaS供应商。这确保了用户的无缝体验。
[0033] 公共和私有云
[0034] 私有云部署:代理服务器可以被部署在公司的私有云中以为公司数据提供额外的 安全性。在这种布置中,元数据日志还是可以被发送到机构周界之外,而网络流量被包含在 机构的网络内。
[0035]公共云部署:代理服务器可以被部署在公司的私有云之外。云本身可以是公共或 私有云。
[0036]受管网络代理服务基础架构
[0037]在此所述的受管通信网络代理可以以各种代理模式被配置,包括(作为非限制性 示例)正向代理、后缀代理或反向代理。
[0038]如果被配置作为正向代理,该网络代理可以使用代理自动配置(PAC)文件和/或被 连接到代理链中的现有网络代理。如果被配置作为反向代理,可以通过机构的DNS服务器来 完成部署。
[0039]在优选实施例中,受管网络代理可以被配置作为后缀代理。例如,作为后缀代理, http : //www · salesforce · com可以通过http: //www.salesforce. com.network-proxy-service. com被访问,其中network-proxy-service. com(网络-代理-服务.com)是用于受管 网络代理的域名。在一些实施例中,后缀代理可以使用双因素认证,对在后缀代理处的认证 中心以及对SaaS供应商两者都进行认证。
[0040] 协议支持
[0041] 受管网络代理可以被配置为支持任何任意的应用或协议。作为非限制性示例,下 述协议可以被支持:HTTP和HTTPS、HTTP上的RPC、0utlook anywhere,WebDAV,FTP,以及专用 厂商协议。
[0042]安全性:SaaS流量捕获
[0043]受管网络代理可以被配置为检查流量并检测SaaS因特网地址。在一些实施例中, 受管网络代理可以被配置为检查因特网地址(例如统一资源定位符、统一资源标识符等)的 网络流量。作为非限制性示例,所述网络代理可反编译、解构或分解网络流量以供检查。受 管网络代理可以被配置为修改客户端设备和SaaS供应商之间的网络流量,以使得引导客户 端设备绕过受管网络代理来直接访问SaaS资源的网络地址不被提供给客户端设备。如果检 测到SaaS因特网地址,通过将网络代理服务的域名附加到原始网络地址,该地址可以被重 写成在网络代理处的地址。
[0044] 后缀代理可以被配置用于通过处理SaaS服务器响应来进行捕获页面处理,使得后 续的请求由后缀代理来处理。所述处理可以取决于文件类型和响应类型。作为非限制性示 例,经处理的文件类型可包括HTML或JavaScript而响应可包括压缩响应或分块响应。所述 后缀代理可被配置为模拟任何内容,包括从SaaS供应商发送的网页。所述后缀代理可被配 置为检查和/或反编译任何内容来标识在内容中存在的任何提到的页面和/或URL并重写那 些 URL。
[0045]在一些情况下,检查将要求执行在客户端和SaaS供应商之间传送的代码或脚本。 例如,JavaScript可在所述后缀代理处被模拟以检测将会直接访问所述SaaS供应商的网络 地址的生成。若在所述内容中标识出直接访问地址,所述内容可被修改以重写所述地址来 指代所述网络代理。
[0046] 安全性:SaaS服务锁定
[0047]所述系统可以被配置为限制仅通过受管网络代理访问SaaS服务。所述系统可以包 括用于这种锁定的多种技术,并且所选的技术可以依赖于部署方法,如下将详细描述的。在 创建会话时或在此后的任何时间可以锁定网络流量。会话的发起将在下面更详细地描述。 [0048]锁定方法1:凭证替代
[0049] 在一些环境中,SaaS供应商可以使用安全断言标记语言(SAML)。在那些环境中, SAML令牌替代可以被用于锁定网络连接。例如,SAML令牌可以是5分钟有效的。当SAML代理 被配置时,用户仅可以通过受管网络SAML代理来访问所述服务。
[0050] 浏览器cookie替代可以被用于锁定网络连接。当用户认证SaaS供应商时,该SaaS 供应商发送cookie给用户。被发送的cookie可以是由SaaS供应商所使用的指示该用户是否 登录以及该用户用哪个账号登录的认证cookie。因为受管网络代理是在该用户和SaaS供应 商之间,它可以截取并加密由SaaS供应商发送的用户浏览器cookie。随后,受管网络代理可 以发送经加密的cookie给用户以供存储在用户的设备上。这样,该用户仅仅保留有cookie 的经加密版本,该版本不能由原始SaaS站点上的客户端直接使用。当通过受管代理网络被 使用时,所述cookie被从客户端设备发送到代理网络,在代理网络中被解密,并被发送给原 始站点。在一些情况中,由SaaS供应商所生成的cookie可以被加密或包含经加密的内容。在 这些情况中,受管网络代理可以在将cookie发送给客户端之前向它添加附加的加密层。 [0051 ]类似于浏览器cookies可被替代的方式,OAuth令牌(或任何其他持久的API令牌) 也可以被内联替代。受管网络代理可以跟踪客户端对令牌(例如由移动应用所使用的OAuth 令牌)的请求并用经加密的版本替换它们。这允许实施跨附加认证场景的服务锁定。
[0052] 受管网络代理还可以代理用户密码。这种技术可以被应用到任何SaaS服务。在一 些实施例中,当不支持SAML时,可以使用密码代理。为了实现这操作,SaaS服务密码可以被 拆分成两个或更多部分。用户知道少于密码的所有部分的部分。受管网络代理服务保存该 密码的剩余部分。在这种布置中,完整的密码可以仅当用户通过受管网络代理服务访问 SaaS服务时才可被构成。所述技术不需要受管网络代理服务存储用户密码。例如,将散列后 缀加入到所有密码要求仅仅存储单个散列密钥。
[0053] 可以通过受管网络代理服务监视用户对改变SaaS应用中的密码的任何努力,并且 用户可以被允许设置部分密码。在一些实施例中,用户仅被允许设置密码的一半。当密码被 配置时,任何对密码的改变的请求(例如"忘记我的密码"链接)可以由网络代理来监视,并 且网络代理可以被配置为对新密码进行散列。
[0054]锁定方法2:访问限制
[0055] 在一些情况中,SaaS应用可以被配置为允许网际协议(IP)地址限制特征,并且因 此将访问仅限于与网络代理服务相关联的网际协议(IP)地址。
[0056]附加安全性功能
[0057]受管网络代理服务可以被配置为支持附加安全性功能。作为非限制性示例,网络 代理可以被用于执行用户活动的审核,由此,任何用户动作可以被解析和/或从流量流进行 审核。网络代理可以在策略实施中使用。例如,代理服务可以被用于访问控制以禁止特定操 作;用于通过基于用户的上下文、设备、位置、动作、内容和/或速度执行数据丢失保护(DLP) 策略来进行数据丢失保护;用于动态掩码;以及用于加水印。还可以使用威胁特性逻辑来检 测和/或阻止网络威胁。
[0058] 受管网络代理服务可以被配置为提供增强的文件保护服务。在一些实施例中,网 络代理服务可以支持与基于网络的文件存储服务的集成。这些类型的服务的非限制性示例 包括Google? Drivedropbox?等。网络代理协议可以被配置为防止用户从SaaS供应商检 索文件并将它们本地地存储在用户的设备上。这可以被称为"总在云中"策略。在一些实施 例中,这可以被配置为在用户会话期间动态地改变和重定向信息流,这样,文件不在SaaS应 用和用户的设备之间或不在各SaaS应用之间被传送。在一些情况中,代替下载文件,可以将 文件的版本显示给用户。
[0059] Web 上的 VPN
[0060] 代理服务可以被配置为允许对企业内联网的安全访问。当在网络代理服务处认证 了用户后,该用户可以(使用例如HTTP(S))访问web上的内联网站点。该方法不需要在设备 上的专用VPN客户端。在发起连接后,网络代理服务打开VPN连接并用作用于HTTP (S)内联网 站点的反向代理。诸如用户审核、警告和文件保护之类的其他特征可以在VPN连接上实施。 [0061 ]部署方法
[0062]所述系统可以通过任意各种手段、单独地或组合地被部署。在一些配置中,所述系 统可以在无需任何客户端的配置的情况下被部署。在其他配置中,取代在SaaS处的配置或 除了在SaaS处的配置之外,可以配置客户端。
[0063]透明部署方法
[0064]所述系统可以包括通过受管网络代理在用户和SaaS供应商之间透明地转发流量 的技术。在这些实施例中,对SaaS应用的访问可以被限制为仅该代理的用户。这些技术允许 在无需在用户设备或用户的局域网上安装的情况下的安全控制的操作。该技术可以以全局 为基础被用于SaaS供应商所主存的所有应用。
[0065] A.透明认证代理(认证层)
[0066]通过利用对安全断言标记语言(SAML)的内建支持或云服务中的类似协议,用户可 以被自动重定向到受管网络代理服务器,而无需客户端侧上的任何配置。例如,SAML是一种 允许安全web域交换用户认证和授权数据的XML标准。使用SAML,在线服务供应商可以联系 分开的在线身份供应商以认证正尝试访问安全内容的用户。
[0067]作为非限制性示例,这种技术可以与支持SAML的SaaS服务以及已经具有外部SAML 供应商的公司一起使用。在这些情况中,受管通信网络代理可以被配置作为SAML供应商,并 且代理服务随后使用原始的SAML供应商来执行所述认证。当成功认证后,用户通过由网络 代理服务所提供的后缀代理被重定向到SaaS供应商。(后缀代理服务在以下更详细地描 述。)
[0068] SaaS应用的访问控制特征可以被用于将访问限制于后缀代理的用户。SAML代理还 可以被用于安装浏览器插件以取代重定向到后缀代理。在这种情况中,插件将把流量透明 地引导到网络代理服务,并且将使用反向代理来取代后缀代理。除了 SAML之外,受管通信网 络代理可以被配置为与具有类似功能的其他协议互操作。例如,WS-Federation?可以被用 在与Off ice 365?服务的连接中。
[0069]在图3中示出并描述了使用SAML的示例认证方法。
[0070] B.透明自IDP供应(认证层)
[0071]自IDP供应可以被用于取代单个签到解决方案。这是一种SAML代理方法的变形,其 中用户被重定向到受管SAML代理服务,但认证过程由受管通信网络代理服务来执行。可使 用登录代理。在用户登录请求之后,受管网络SAML代理查询原始SAAS服务以验证用户凭证。 使用密码同步,通过安装密码同步工具,网络代理服务可以用作自组织SAML供应商,所述工 具将来自活动目录(或任何其他LDAP目录)的用户密码与受管网络SAML代理同步。
[0072] C.透明网关代理(流量层)
[0073]该技术可以被应用到任何SaaS服务,并且在SaaS服务不支持SAML的情况下尤其适 用。当访问SaaS服务时,用户可以被指令适用不同的URL WRL通过受管网络代理服务重定向 所述用户。该配置可以适用SaaS应用的访问控制特征来将访问限制于后缀代理的用户。所 述访问控制特征可以被允许为将访问限制到仅针对位于受管通信网络代理服务中的IP地 址。
[0074]非-透明部署方法
[0075]通过使用对用户的设备的安装或配置改变以便通过受管通信网络代理服务重定 向所述流量,可以单独地配置移动和桌面应用。
[0076] A. SAML代理:使用上述SAML代理,用户可以被重定向到请求用户安装和/或配置设 备以与受管通信网络代理服务进行通信的页面。
[0077] B.桌面应用(流量层):大多数桌面应用支持所述系统代理配置。PAC文件可以针对 受管设备被自动配置并针对未受管设备被用户配置。PAC受主要的操作系统(OSes)、浏览器 和应用所支持,并且可以被部署在使用分组策略对象(GP0)的视窗域环境中。PAC文件可以 被配置成仅允许通过受管代理网络平台的SaaS流量,并且用户因特网流量的剩余部分可以 在无需改变的情况下被直接路由。
[0078] C.移动应用(流量层):类似于用于受管设备的PAC方法,移动设备可以要求在设备 上的VPN或APN的安装以及受管代理网络证书。
[0079] 应用专用解决方案:一些应用具有允许无缝重定向的特定配置选项。例如,使用 Out look自动发现特征,Out look客户端被自动重定向到受管代理网络Out look代理。
[0080] 用于受管网络和设备的部署方法
[0081] 在一些实施例中,受管网络代理可以被嵌入在用户场所上的设备中。在其他实施 例中,受管网络代理功能可以通过web浏览器插件来实现。网络插件可以被配置为如同PAC 文件那样工作,其中在浏览器中检测到SaaS应用后,流量被重定向到受管代理网络。
[0082] 一些实施例可以被配置为使用代理链,由此,现有的机构代理被配置为通过受管 通信网络代理服务基础构架转发SaaS-绑定请求。这些实施例可以可选地包括具有转发的 请求的机构标识符(用户名和/或IP)。
[0083] 在一些实施例中,可使用PAC文件。PAC可以通过机构被部署。PAC可以被用于将 SaaS应用重定向到受管通信网络代理服务。这可以基于SaaS供应商的数据库。可以使用具 有基于域名的域到树的经编译列表的有效PAC。
[0084] 在上述这些配置中的任意配置中,平台可以被动态地部署在特定用户或用户组 上,由此允许渐进部署。这可以基于SAML代理,例如,通过仅重新路由一些用户来完成。 [0085]系统可用性
[0086] 如在图4中所示,平台可以包括多个不同的网络,所述网络包括全局分布(例如如 所示的在5个中心中)以减少等待时间的代理节点。用户可以被路由到最近的节点或另一个 最优节点。系统可以包括在节点之间的自动DNS故障转移。任何节点可以用作策略实施点并 创建审核日志。作为非限制性示例,后端网络可以是包含中央数据库和后端服务器的AWS虚 拟私有云(VPC)。
[0087] DNS高可用性
[0088]图5示出显示了失效启动路由的示例网络代理体系架构。代理节点网络可以使用 DNS服务器来实现高可用性。DNS记录可以被设定一个非常短的生存时间(TTL)(例如30秒), 迫使客户端有规律地查询DNS服务器以查找更新(查询时间可以依据浏览器高速缓存设置 而变化)。服务器将客户端引导到最近的可用节点(Geo-DNS),并且在节点故障的情况下,可 以检测问题并将客户端无缝地重定向到其他可用的节点。
[0089] DNS服务自身的可用性可以影响所述行为。例如,通过Amazon的Route53被认为是 一种保证高可用性的成熟且高度可用的系统。在DNS服务器自身故障的情形中,该系统可以 被配置为失效启动。
[0090] 自主节点
[0091] 可以在各种全局区域中成群地构建代理节点。一些或所有的所述节点可以同时在 线并服务消费者。在故障的情况下,节点是无状态的,允许该系统在无需任何服务中断的情 况下在节点之间移动用户。
[0092] 节点可以是自主的且应变的。如图6所示,可由负载平衡器群集和多个(例如2或3 个)代理节点组成代理节点。一些中央节点可以依赖于由允许甚至更大的复原性的云供应 商自身所提供的外部负载平衡器(例如ELB和RackSpace)。每个节点可以在无需对平台的其 他部件有任何依赖性的情况下自主地起作用。与后端网络的通信可以使用中介消息来执行 并且被异步完成。在后端故障的情况下,消息可以被内部地存储在大小被封顶的队列 (capped sized queue)中,并且节点自身的操作不受影响。在图6中所示的示例实施例中, 可由负载平衡器群集和多个代理服务器组成每个节点。可以存在多个中央节点(例如美国 西部、美国东部、欧洲和中东),所述中央节点使用具有内建的分布式拒绝服务(DDoS)保护 的外部负载平衡器(例如AWS和Rackspace负载平衡器)(所述负载平衡器路由流量并且可能 不执行SSL终止)。在DDoS攻击的情况下,流量可以被自动地路由到最接近的中央节点。 [00 93]故障转移场景
[0094]所述系统可以被配置为处理许多不同的故障转移场景。一些可能的场景和解决方 案如下所述。
[0095]单个机器故障转移:在这种情况中,DNS路由请求到最近节点。每个节点独立地工 作并且内部地处理故障转移。
[0096]内部过程的故障:从机器层开始完整冗余,其中每个关键的过程由看门狗守卫并 立刻被重启。关键过程具有一个不断运行的实例。所有的非关键操作被异步执行。
[0097]代理服务器的故障:将把流量驱使到节点中的其他代理。
[0098] 负载平衡器服务器的故障:将使得所有的流量经过群集中的第二负载平衡器。
[0099] 单个代理节点故障转移:单个节点故障可能是由数据中心停机或ISP连接性问题 引起的。在节点响应失败的情况下,DNS故障转移将把流量路由到下一可用节点而无需用户 干预。
[0100] 区域故障转移:即使是在影响多个节点的区域问题的情况下,系统还将继续正常 的操作。DNS故障转移将把流量路由到在其他区域中的剩余的运行节点。来自受影响区域的 用户可能经历比普通情况下更高的等待时间,但程度上较轻。
[0101] 中央节点故障转移:虽然DNS服务器执行在可用节点之间的负载破坏,但非寻常的 波峰可能引起影响辅助节点的连锁反应。出于这个原因,在多个故障的情况下,流量被路由 到中央节点,其被特别设计为处理非寻常的流量波峰。
[0102] 附加特征
[0103] 受管网络代理服务可以被配置为附加地提供与商业分析、采用统计、特征使用率、 许可证利用率、用户参与以及服务级协定(SLA)监视有关的度量,作为非限制性示例。
[0104] 所述服务还可以包括用于SaaS服务的命令和控制中心、警告中心以及使用统计中 心。所述服务可以执行角色实施以根据用户的角色和邻域实施使得数据对每个用户可访 问。服务可以根据预定日常使用模式执行动态SSL合并以维护到SaaS供应商的几个后端连 接。
[0105] 在图7-10中示出了用于受管网络代理服务和其他特征的示例管理控制台。
[0106]威胁检测逻辑
[0107] 使用如上所述的系统和方法,在联网SaaS供应商和客户端设备之间的网络流量可 以在代理节点处被截取。代理节点可以进一步被配置为使用威胁检测逻辑分析各种威胁指 示符的流量。
[0108] 在图11中示出了用于威胁检测的方法的概览。安全性网关(1011)可以被实现为在 一个或多个代理节点(1010)中的算法例程,通过所述代理节点可以承载用户的网络流量。 或者,安全性网关可以通过单独的设备来实现,所述设备承载流量。用户流量可以在任何连 接到代理节点的源与目的地之间。用户的非限制性示例可以是场所用户、因特网用户、伴侣 用户或移动用户。
[0109] 安全性网关(1011)可以被配置为从用户流量中提取各种参数。提供了下述非限制 性的示例。安全性网关可以被配置为提取描述用户设备的信息。作为非限制性示例,设备参 数可以包括设备的类型,例如iPad或Surface平板,设备的操作系统,例如Windows RT或 iOS、和/或正在使用的web浏览器,例如Chrome或Explorer。安全性网关可以被配置为提取 描述用户设备的位置的信息。位置信息可以描述物理/地理位置和/或网络上的逻辑位置。 安全性网关可以被配置为提取与正由用户采取的动作(例如对数据的请求)和/或SaaS平台 的响应(例如发送所请求的数据)有关的信息。安全性网关还可以被配置为提取与用户的设 备的身份(除了其类型之外)、用户的活动的时间以及用户的动作消费的带宽有关的信息。
[0110] 安全性网关还可以被配置为检测并标识正由用户使用以连接到SaaS供应商的任 何通信设备。设备标识可以与用户的访问历史相结合地被记入到日志,使得个体SaaS会话 可以与用于该会话的特定设备相关联。存储的标识信息可以包括国际移动设备标识符 (MEI )、电话号码、媒体访问控制(MAC)地址、因特网(IP)协议地址或其他唯一或顺序唯一 标识信息。该设备标识信息可以跨多个用户会话被跟踪和/或与相关联的用户简档相结合 地存储。随后可以执行后续查询以确定哪个设备被给定用户用于在单个会话中或跨多个会 话地访问给定的SaaS服务。
[0111] 流量参数可以被输入到检测模块(1012)。检测模块还可以基于来自用户简档数据 存储的用户简档信息接收输入。用户简档信息可以处理关于其流量正被分析的用户的信 息。作为非限制性示例,用户信息可以源自检测模块。检测模块还可以从包括诸如关于特定 安全性威胁的信息之类的其他信息的知识库接收输入。在优选实施例中,知识库可以包括 作为组件的云服务索引(1015)。在一些实施例中,检测模块(1012)可以作为安全性网关 (1011)的一个组件被包括。在替换实施例中,检测模块(1012)可以是与安全性网关(1011) 通信的单独组件。
[0112] 威胁检测模块(1012)可以包括简档创建引擎、基于距离的异常引擎以及基于统计 的异常引擎。统计异常引擎可以被配置为基于短期和/或长期的统计信息做出威胁评估。每 个引擎可以接收如上所述的任何或全部流量参数。每个引擎还可以接收源自其他引擎的输 入。
[0113] 异常引擎
[0114]所述异常引擎可以被配置为检测特定异常操作、一系列异常操作和/或异常操作 的模式。例如,引擎可以被配置为基于正由SaaS供应商的用户所执行的特定操作被执行得 比在它将被执行的学习时间预测上所获取的历史数据更加频繁(例如更高的操作频率)或 所述连接具有新的源或目的地位置来确定它是否是可疑的。异常引擎也可以被配置为确定 通过用户的操作序列是否是可疑的。在一些情况中,个体操作可能是非可疑的。但是,当该 操作与另一个操作成序列执行时,该组操作可能是可疑的。例如用户可以与SaaS供应商进 行认证,并随后开始向系统外传输文件。作为一个示例,异常引擎可以被配置为标识该序列 为可疑的。这样,可疑流量的异常检测可以基于可能由许多操作构成的活动序列。异常引擎 也可以被配置为确定非序列的操作的模式是否是可疑的。在可疑模式检测中,异常引擎可 以被配置为检查序列外并在任意时间周期上所采取的行动。个体操作、操作序列以及操作 的模式的可疑性可以基于在此所述的任何参数来确定。
[0115]可以基于将一个或多个参数与先前存储的简档信息进行比较来检测异常。作为非 限制性示例,简档信息可以包括:位置、活动时间(一天中的小时、星期几等)、设备使用率、 用户-代理(类型和版本)、行动/请求的频率、所执行的行动的类型、所执行的行动的顺序、 所访问的信息的类型、流量带宽、会话特性(长度、空闲时间等)和/或HTTP请求特性(哪些资 源被访问、方法、标题、大写等)。
[0116]云服务索引
[0117]威胁检测逻辑可以包括云服务索引(1015),该云服务索引包括将任何给定SaaS供 应商的SaaS应用风险因子进行组合的参数集。示例参数集被示出在图12中。风险等级评估 可以基于来自一些或所有源的信息,包括但不限于:
[0118] 1.由SaaS供应商提供的关于源自(作为非限制性示例)白皮书、证书等的其安全性 策略的ig息。
[0119] 2.独立的关于SaaS供应商、客户端和其他环境因子的搜索;和/或
[0120] 3.由检测模炔基于对由安全性网关所截取的流量的分析所标识的在客户端SaaS 应用上的弱点和/或攻击的历史。
[0121] 所述风险可以相对于一个或多个轴被测量,包括但不限于:
[0122] 1.数据风险:强加在数据上的SaaS所具有的风险,例如多承租人和使用非加密数 据;
[0123] 2.用户/设备风险:由相连的用户和设备所强加的风险,包括例如认证质量、匿名 使用能力等;
[0124] 3.服务风险:强加在服务供应商网络上的风险,例如供应商所声称执行的安全性 实践的质量、web应用安全性等级、弱点管理等;以及
[0125] 4.商业风险:供应商允许给予其客户端的控制以及这些控制措施保护服务的使用 的能力,包括例如审核能力、企业管理控制和操作实践。
[0126] 示例风险因子的列表在图12中提供。如在表中所示,可以给予其轴、类别、属性、描 述、属性值和/或索引值(例如分数或加权)被标识。
[0127] 标识和简档创建引擎
[0128] 威胁检测逻辑可以包括用于用户和设备标识和简档创建的模块(1013)。简档创建 模块可以使用截取的凭证来标识当前用户。所述模块可以基于被动流量记录以标识一些或 所有的下述特性来执行机构和用户简档创建:
[0129] 机构层次和行为,包括单个用户使用模式;
[0130]公司角色,检测管理员、经理和/或不同的部门;
[0131] 公司位置,检测不同的分部和/或办公室位置和/或雇员的家位置;
[0132] 在该天的各小时、该周中的各天、该年中的各月以及公司层面和/或单个用户层面 的特殊场合上的用户活动分布;以及
[0133] 日常用户事务,包括日常位置、活动时间、应用和使用模式。
[0134] 设备标识和简档创建模块还可以被配置为基于来自下述的信息跨会话和浏览器 地区分并标识用户设备:
[0135] 跟踪具有指定会话cookie的会话,所述指定会话cookie持有设备身份、用户身份 以及用户登录到的任何SaaS应用的会话信息;
[0136] 到页面的JavaScript植入,以便标识通过代理进行访问的设备;
[0137] 从同一设备的不同浏览器管理的对链接会话的跨浏览器存储;以及
[0138] 保持会话、设备和它们之间的链接的跟踪的统一身份数据库。
[0139] 反馈
[0140]威胁特性逻辑可以包括构建用于安全性警告的受监督学习模型的方法。所述系统 可以收集对警告的反馈、使IT和雇员两者都参与并通过查询可疑模式的用户来动态构建用 户简档,和/或如果用户表现为可疑的(例如欺诈用户),使监督者参与。
[0141] 虚拟网络
[0142] 在优选实施例中,上述系统可以与单独的虚拟网络(1020)通信,在该虚拟网络中, 模拟机构在各种SaaS应用上执行活动并由安全性网关进行监视。在该实施例中,虚拟网络 可以是被维护用于研究和测试目的的隔离网络。在其他实施例中,虚拟网络可以被合并入 操作网络监视和威胁检测系统。模拟机构特性和使用模式可以通过来自真实机构的信息被 校准,随后由安全性网关记录。异常可以被随机插入到模拟流量中以测试检测模块。异常可 以表示可疑的行为模式或攻击。可以从各种源收集异常,包括由安全性网关所记录的实际 异常以及在自然环境下存在并被独立的研究所发现的异常。
[0143] 虚拟网络可以被用于在将来的安全性特征上执行研究,并在压力下测试系统的不 同组件并测量假肯定和假否定率。
[0144] 虚拟网络可以包括虚拟客户端(1021)以及安全性网关(1022)、检测模块(1023)以 及警告引擎(1024)的单独的安装。要在警告引擎(1014)中做出的改变可以首先在虚拟警告 引擎(1024)中被测试。
[0145] 风险/威胁加权
[0146] 如在图12所提供的示例中所指示的,所标识的风险可以与云服务索引(1015)中的 索引值相关联。该索引值可以被用于相对于彼此加权风险因子。在一些实施例中,多个风险 因子可以被一起评估。作为非限制性示例,在网络流量中的一个时间周期上所标识的威胁 的索引值可以相加在一起以提供数字值威胁指示符。
[0147] 响应性行动
[0148] 风险加权可以被提供给检测模块(1012)和/或警告引擎(1014)。检测模块随后可 以完全或部分基于加权的信息在网络流量上采取行动,并且警告引擎可以随后对客户端 (1001)或对SaaS供应商(1030)做出警告。在一些实施例中,检测模块可以基于检测模块 (1012)的输出把丢弃正从SaaS供应商(1030)发送到客户端(1001)的包的指令提供给安全 性网关(1011)。
[0149] 发现模块体系架构
[0150] 在一些实施例中,发现模块可以被配置为检测在基于网络的软件即服务(SaaS)供 应商与客户机之间的网络流量。在这些实施例中,在还未为客户端设备或网络设置任何控 制或限制的情况下,当该客户端计算设备通过公共网络(例如因特网)被连接到SaaS供应商 时,该系统能够被配置为在SaaS供应商与该客户端计算设备之间的这样的流量上进行操 作。在这些实施例的一些中,客户端设备的无配置是必需的。发现模块可以包括SaaS应用数 据库,其内容在下面将更加详细地描述。
[0151] 在这些实施例的一些中,发现模块可以以受管通信网络代理的形式被实现。尽管 在此对代理做出参考,但可以理解所述代理可以以一个或多个网络设备的形式来实现。而 且,受管网络代理可以被分散,并且受管网络代理的功能分布在不同的地理区域中的多个 机器上。
[0152] 在其他实施例中,发现模块可以不被配置为直接检测在基于网络的软件即服务 (SaaS)供应商与客户端之间通过的网络流量。在这些实施例中,发现模块可以从网络上的 任何设备发起SaaS发现活动。发现模块可以包括小程序(applet)服务器以及SaaS应用数据 库,其内容在下面将更加详细地描述。
[0153] SaaS环境的发现
[0154] 发现模块(无论是驻留在独立设备上还是在网络代理中)可以被配置为标识任何 SaaS环境的访问和使用模式。如在此所使用的,SaaS环境可以包括SaaS平台、任何在该平台 上执行或安装在该平台上的应用、存储在该平台上的数据和/或单独或与其他因子组合的 配置参数。
[0155] 图13示出了 SaaS环境的发现的示例系统和方法。如所示,客户端计算机可以四管 理者或具有执行发现功能的足够权限的类似用户类型。发现模块可以被实现为在客户端设 备上的可执行指令,例如应用、小程序、插件或其他代码形式。在一些实施例中,客户端可以 下载并执行被配置为在任何机构计算机上运行并产生截屏报告的应用(例如Java小程序)。 附加地,系统可以配置用于使用服务的连续发现,所述服务在机构或客户端计算机的后台 运行并允许联系监视SaaS。
[0156] 所述系统可以包括用于存储表示宽范围且任意数目的SaaS应用和它们的特性的 数据的SaaS应用数据库。作为非限制性示例,应用数据库可以包括,除了其他记录外,在任 何平台上已知被使用的任何SaaS应用的记录。记录可以以定期基础(例如每天)从多个数据 源被更新。
[0157] SaaS应用记录可以包括定义特定SaaS和/或SaaS应用的安全性等级的各种度量。 作为非限制性示例,记录的度量可以包括:数据是否在空闲时被加密、SSL加密等级、内建安 全性特征的存在或缺失、数据库和数据中心的位置等。
[0158] 所述系统可以被配置为基于任何上述度量自动执行给定SaaS平台或应用的风险 评估发现。云服务风险发现处理可以执行用于执行SaaS环境的被动发现和/或主动发现的 过程。
[0159] 被动发现
[0160] 在一些实施例中,被动发现处理可以被用于确定哪个SaaS应用和/或哪个数据存 储已经被用户访问或被致使已经由用户访问。
[0161] 所述系统可以被配置为(基于公共DNS服务器的开放列表)确定本地配置的域名系 统(DNS)服务器是公共的或机构的。如果是机构的,系统可以(非迭代地)查询企业DNS服务 器以寻找特定SaaS域。基于响应,系统可以确定特定的应用、文件或数据集是否最近从该企 业网络内被访问。如果查询成功,系统可以确定从企业做出过最近访问。否则,如果查询不 成功,系统可以确定没有从企业做出过最近访问。
[0162] 主动发现
[0163] 所述系统可以被配置为使用指定目标的查询来测试某个SaaS是否在某个机构网 络内可用,并且由此确定特定SaaS是否在机构网络内被阻塞。例如,发现模块可以尝试取得 SaaS上的预定URL。如果取得尝试成功,那么SaaS可以被标记为未阻塞。如果取得尝试不成 功,那么SaaS可以被标记为阻塞。
[0164] 在一些实施例中,主动发现可以被用于检查配置问题。例如,管理员可能没有已经 配置SaaS存储,但存储正在被消费。
[0165] 警告
[0166] 被动和/或主动发现过程的结果可以被发送给发现服务器或电子存储的其他位 置。所述结果可以经受自动和/或手动分析。
[0167] 基于发现过程的结果,可以生成自动的警告和云使用报告。例如,可以基于存储在 数据库中的使用数据自动生成每周和/或每月的云使用报告。所使用的新的和趋势云服务 可以被单独地或与详细的风险分析一起被示出。在一些实施例中,高风险的SaaS应用使用 可以通过emil或其他手段触发自动警告。
[0168] SaaS流量捕获
[0169] 后缀代理实现面临在客户端侧动态生成内容的问题。诸如Google App平台之类的 现代web应用利用大量客户端侧代码(JavaScript)。这可使后缀代理实施更具挑战性的多, 因为基本代理功能不足就需要在客户机侧进一步干预。
[0170]如在此所述,所述后缀代理可被用于在代理的控制下保持所代理的web网页的URL 和web访问。这通过将后缀添加到页面上URL来完成。在静态页面(例如不包含客户端可执行 JavaScript代码的那些页面)的上下文中,这可以在服务器侧通过代理完成。所述方法涉及 解析HTML并使用正则表达式来取代页面上的URL。
[0171] 受管网络代理可以被配置为检查流量并检测SaaS因特网地址。在一些实施例中, 受管网络代理可以被配置为检查因特网地址(例如统一资源定位符、统一资源标识符等)的 网络流量。作为非限制性示例,所述网络代理可为检查反编译、解构或分解网络流量。受管 网络代理可以被配置为修改在客户机设备和SaaS供应商之间的网络流量,以使得下述网络 地址不被提供给客户机设备:引导客户机设备绕过受管网络代理来直接访问SaaS资源。如 果检测到SaaS因特网地址,通过将网络代理服务的域名附加到原始网络地址,该地址可以 被重写成在网络代理处的地址。
[0172] 后缀代理可以被配置用于捕获页面处理,所述处理通过处理SaaS服务器响应以便 后续的请求由后缀代理来处理。所述处理可以依赖于文件类型和响应类型。作为非限制性 示例,经处理的文件类型可包括HTML或JavaScript而响应可包括压缩响应或分块响应。所 述后缀代理可被配置为模拟任何内容,包括从SaaS供应商发送的网页。所述后缀代理可被 配置为检查和/或反编译任何内容来标识在内容中呈现的任何提到的页面和/或URL且重写 那些URL。
[0173] 在一些情况下,检查将要求执行在客户端和SaaS供应商之间传送的代码或脚本。 例如,JavaScript可在所述后缀代理处被模拟以检测将会直接访问所述SaaS供应商的网络 地址的生成。若在所述内容中标识出直接访问地址,所述内容可被修改以重写所述地址来 指代所述网络代理。
[0174] 使用即时JavaScript转换的代理
[01 "75]通过客户端侧JavaScript,对页面的文档对象模型(D0M)的运行时改变是可能的, 并且因此,对于客户端浏览器来说,创建或修改具有无后缀URL的D0M元素是可能的(因为服 务器侧代理没有机会替代它们)。下面描述用于将web应用JavaScript代码的访问限制到 D0M的系统和方法。
[0176] 所述限制的性质可为如此:对D0M中的来自原始JavaScript代码的web URL做出的 改变将由代理的运行时组件来监视。通过高速缓存,可以减少对JavaScript代码的的运行 时性能的任何影响。
[0177] 可以针对对D0M元素的读和写访问调用监视代码,这样将URL写入到D0M被添加后 缀,而从D0M的URL读取未添加后缀。因此,"用户" JavaScript代码(例如,所述web应用代码) 所见的URL与浏览器自身(所述D0M,及其JavaScript表示)所见的URL之间可存在间隔。因 此,原始JavaScript代码可以在代理环境内容被有效维护,使得与(代理周围的)原始服务 器的通信被避免。
[0178] 服务器侧代理实现
[0179]作为web应用的一部分被加载的JavaScript代码可以以几种方式中的任意方式从 原始服务器获取,所述方式包括在HTML页面内的内联脚本以及JavaScript文件(通常具有〃 text/javascript 〃内容类型)。在此所述的系统还可以被配置为在其他类型的代码、脚本或 内容(例如CSS)上操作。
[0180]通常,浏览器将首先加载主HTML页面,并且随后加载所有引用的和内联脚本。另 外,JavaScript (或包含脚本的HTML)还可以由web应用来动态加载,例如,使用"eval"语句。
[0181] 因为动态代码的加载最初是由静态加载的代码(或,一旦被加载,由其他的动态代 码)执行的,在所述代理服务器上的页面下载阶段期间,所述系统可通过修改所述静态 JavaScript代码来控制执行。对所述代码的修改可用此类方法执行:将来被动态地加载的 代码将会在运行时期间被修改且对所述D0M的特定改变可被截取以实施上述规则,这将允 许页面仍然在代理的控制中。
[0182] 动态加载的代码的修改可以通过将动态评估的代码发送给代理或在用于处理的 代理处接收动态评估的代码、并随后允许在客户端浏览器处加载新代码来实现。在图14中 示出了非高速缓存的操作的示例方法。在一些实施例中,高速缓存可以被用于改善性能,如 下将更加详细描述的且在图15中所示的。
[0183] 作为非限制性示例,至少以下D0M元素与属性可被包装:
[0184] 1.包含URL的HTML元素的属性:
[0185] a ·所述元素:〃IFRAME〃、"STYLE(样式)〃、〃LINK(链接)〃、〃MG(图像)〃、"AUDIO(音 频)〃、〃A〃、〃F0RM(来自)〃、〃BASE(基础)〃和〃SCRIPT(脚本Γ。
[0186] b.对于每个,在它们应用时,属性:〃src〃、"href 〃和"act ion (行动)〃。
[0187] c.这些元素的getAttribute以及setAttribute方法也可被用来设置上述属性。
[0188] 2.可包含D0M子树(即,多个HTML)的HTML元素的属性:
[0189] a · "appendChi Id〃方法可以用于动态添加元素(和代码)。
[0190] b. 〃innerHTML〃属性可以被用于添加额外代码。
[0191] 3.包含URL或Hostnames (主机名)的"文档"对象的属性:
[0192] a. "cookie"、"±或"一一两者都可以包含窗口的原始域。
[0193] b.可使用"write"方法来添加元素和代码至所述页面。
[0194] 4.XMLHttpRequest对象的 "open(打开)"方法包含请求URL。
[0195] 5. "MessageEvent"对象的"origin(原始)"属性包含原始主机名。
[0196] 6."窗口"对象的方法和属性:
[0197] a. "location(位置)"--可以将所述帧重定向至另一个URL或确定所述帧的当前 位置。
[0?98] b.所述" postMessage (张贴消息)"方法--具有原始自变量。
[0199] c ·所述"evaf"与"execScr ipt"--被用来动态地加载代码。
[0200] 其他此类元素与属性存在,且它们中的任何一个或全部可被包装。
[0201 ] JavaScript 代码的静态挂钩(Hooking)
[0202]静态挂钩可以被用于多种类型的内容,包括内联脚本和文件。在代理服务器处,经 代理的JavaScript代码可以被如下处理:
[0203] 1. HTML中的内联脚本被提取并处理。
[0204] 2.根据Mozilla解析器API规范使用开放源解析库将代码转换成抽象语法树 (AST)〇
[0205] 3.所述AST是递归遍历的且对包装器的调用被插入在该AST的某些节点周围以允 许挂钩。
[0206] 4.代码可以从经修补的AST中重构并被发送给客户端浏览器。
[0207] 5.可以执行对所得到的经处理的代码的高速缓存。
[0208] 被插入的包装器可允许DOM的改变在运行时期间被截取。所述包装器可被应用至 覆盖任何或全部可能的D0M访问。
[0209] 作为非限制性示例,所述包装器可被应用至一些或全部以下AST节点:
[0210] 1 .MemberExpression(成员表达式):
[0211] a.包装对D0M对象的对象属性的可能的访问。
[0212] b.包装具有非文字键的订阅操作。
[0213] 如果所述属性名匹配"感兴趣"属性的白名单,包装对特定属性(例如obj .src)的 访问。
[0214] d.最终,运行时包装器决定任何改变是否是需要的。在大多数情况下一一例如, "假肯定" 一一所述包装器将决定不做任何事。
[0215] 2. Identifier(标识符):
[0216] a.对全局Identifier(其是窗口D0M对象的属性,例如,"location(位置)")的白名 单的可能的访问都被包装。
[0217] b. IdentifierAST节点可出现在所述树中的许多不相关的逻辑位置上。在其中 Identifier表示对全局变量的访问的实例被包装。这是在遍历阶段期间通过检查父节点并 消除全部其他情况而被确定的。
[0218] 3 ·AssignmentExpression(赋值表达式):
[0219] a.对先前"标记的" MemberExpress ions和Identifiers的赋值由另一个专门处理 "set"访问的包装器来处理。
[0220]赋值运算符"="与"+="被包装,因为相关的D0M属性可能是字符串(URL)。
[0221] 4.CallExpression(调用表达式):
[0222] a.其中先前"标记的"MemberExpress ion和Identifier是由专门处理函数调用的 另一个包装器处理的被调用者。
[0223] b.针对对"eval"的调用存在一个特殊情况,"eval"与一个语句一样运作,但被表 示为在所述AST中的函数调用。
[0224] 在包装之前和之后的示例代码:
[0227] 包装器的运行时行为
[0228] (根据在AST遍历阶段期间不同的包装情况)可以定义许多不同的包装器函数。
[0229] 1 ,wrapped_get ,wrapped_set ,wrapped_call--根据不同的使用情况包装对 MemberExpression 的访问。
[0230] 2. wrapped_name_get ,wrapped_name_set ,wrapped_name_call--根据不同的使 用情况包装对全局Identifier的访问。
[0231 ] 3. wrapped_eval_param--将通过的代码专门作为"eval"调用("eval调用可影 响局部作用域)的参数处理。
[0232]在一些实施例中,所述系统可以首先检测所述包装器是否在相关的对象或属性上 被调用。
[0233] 1.在"MemberExpression"包装器中,属性名称被对照白名单来检查,带下标的对 象也是一样。
[0234] 2.对于"Identifier"包装器,同样参照白名单。
[0235] 3.对象被确定为某些类型("Document (文档)"、"Window(窗口)"、HTML元素等等), 还在适用时与全局实例相比较。
[0236] 这些比较与查询可被高效地执行,在许多情况下对性能没有显著的影响。
[0237] 包装器调用可使用各种过程中的任何一个来处理,包括,非限制性示例:
[0238] 1.处理动态加载的代码:
[0239] a.新JavaScript代码被发送至所述代理的专用REST API端点以供转换和高速缓 存,如下所述。
[0240] b ·这可发生在 "appendChHd"、"innerHTML"、"eval"、"execScript" 以及 "write" 的 包装器上。
[0241] 2.后缀或不后缀URL或主机名。
[0242] 3.检测假肯定包装器调用并恢复正常执行。
[0243] 负责处理对与URL相关的属性或方法的D0M访问的包装器处理程序可被分成逻辑 组,例如:
[0244] 1 .getters(获取器)一一处理"get"包装器。这些将不后缀经处理的URL。
[0245] a.若方法(JavaScript类型"函数")被访问,"decorator(装饰器)"被返回(见下)。
[0246] 2. setters一一这些处理"set"包装器。它们将后缀经处理的URL。
[0247] 3.装饰器一一这些处理"call"包装器。它们对被包装的方法返回匹配的装饰器函 数,其将根据装饰方法是什么来给URL加后缀或不加后缀。
[0248] a .可使用JavaScript的"bind (绑定)"方法将此装饰器绑定至正确对象。在 "Identifier"包装器的情况下,所述正确对象是全局对象(在一些情况下,窗口)。在 "MemberExpression"包装器的情况下,这是正在被标下标的对象。
[0249]性能影响和优化
[°250] 在一些情况下,由于JavaScript转换和在大量脚本上的AST遍历以及阻止 JavaScript JIT编译器优化浏览器中的代码的运行时包装器,对运行在此所述的各处理可 能存在有性能影响,这些处理中的一些可能由经代理的web-应用的用户经历。
[0251]为了改善转换阶段的开销,高速缓存可以实现:
[0252] 1.在服务器侧上,经转换的JavaScript代码的元素(例如,内联脚本、文件或动态 转换请求)在每个服务器上被本地高速缓存。
[0253] 2.所述条目是以原始代码的密码散列为关键的。
[0254] 3.这样,所述高速缓存跨所述代理的用户被共享。这样,仅每个服务器的第一个用 户将经历共同加载的脚本的转换阶段的影响。
[0255] 4.动态脚本转换REST端点也可被配置为接受客户机侧计算的散列且在正使用它 的缓存中执行查找。这可减少所述代理的用户的上传带宽的使用。在这种配置中,被动态生 成的脚本将几乎从不被实际发送至所述代理(除第一次外)。
[0256] 5.另外,对动态转换请求(每个散列)的响应与"Cache-Control(高速缓存-控制)" 和"Expires(到期ΓΗΤΤΡ首部一起被返回,使得该结果将由所述客户端浏览器来高速缓存。 以此方式,对于相同的被动态生成的脚本,客户端将较不可能地需要查询所述代理服务器 超过一次。
[0257] 给定上述优化,可以从正常使用情况中大大减少转换阶段的影响。
[0258] 通过下述一些或所有的项可以减轻包装器的运行时性能影响:
[0259] 1.创建不相关/假肯定包装器调用的经优化的快速路径(在代码级)。这是通过编 写具有有限JavaScript子集的基础包装器函数来实现的,所述基础包装器函数将很容易地 由浏览器的JIT编译器优化。
[0260] 2.手动维护接口,允许创建简档并检测具有最高高速缓存命中的代码路径,并且 允许从代理的内部高速缓存中的经转换代码中(手动)移除某些包装器。
[0261] 系统实现
[0262 ]在此所述的系统和方法可以在软件、硬件或其任意组合中实现。在此所述的系统 和方法可以使用一个或多个计算设备来实现,所述计算设备可以或可以不彼此物理或逻辑 地分开。另外,在此所述的方法的各个方面可以被组合或合并入其他功能。
[0263] 在一些实施例中,系统元素可以被组合到单个硬件设备中或分散到多个硬件设备 中。如果多个硬件设备被使用,硬件设备可以物理地位于彼此附近或彼此远离。
[0264] 所述方法可以在计算机程序产品中被实现,所述计算机程序产品可从提供供计算 机或任何指令执行系统使用或与其结合使用的程序代码的计算机可用或计算机可读存储 介质访问。计算机可使用或计算机可读存储介质可以是可包含或存储供计算机或指令执行 系统、装置或设备使用或与其结合使用的程序的任何装置。
[0265] 适用于存储和/或执行对应的程序代码的数据处理系统可以包括与计算机化的数 据存储设备(例如存储器元件)直接或间接耦合的至少一个处理器。输入/输出(I/O)设备 (包括但不限于键盘、显示器、指点设备等)可以被耦合到系统。网络适配器还可以被耦合到 所述系统以允许数据处理系统通过参与私有或公共网络变得与其他数据处理系统或远程 打印机或存储设备相耦合。为了提供与用户的交互,各特征可在具有显示设备(例如,CRT (阴极射线管)、LCD(液晶显示器)、或用于显示信息给用户的其他类型的监视器)、键盘和用 户能借此向计算机提供输入的输入设备(例如,鼠标或追踪球)的计算机上实现。
[0266] 计算机程序可以是可在计算机中被直接或间接使用的一组指令。在此所述的系统 和方法可以使用编程和/或标记语言(例如Perl,Python,JAVA?,C++,C,C#,Visual Bas i c?,JavaScript?,PHP,Flash?,XML,H?L等)或编程和/或标记语言的组合(包括经编译 的或经解释的语言)来实现,并且可以以任何形式被部署,包括作为独立的程序或作为模 块、组件、子例程、或其他适于在计算环境中使用的单元。所述软件可包括但不限于固件、驻 留软件、微代码等。诸如SOAP/HTTP,JSON,SQL等的协议和标准可以用在实现编程模块之间 的接口。在此所述的组件和功能可以在虚拟化或非虚拟化环境中执行的任何桌面或服务器 操作系统上,使用任何适用于软件开发的编程语言(包括但不限于不同版本的Microsoft? Windows?,Apple? Mac?, iOSTM,UnixTM/X-Windows?,Linux?等)来实现。
[0267] 在一些实施例中,一个或多个服务器可以用作文件服务器和/或可以包括用于结 合由运行在用户计算机和/或另一个服务器上的应用实现本发明的方法的一个或多个文 件。或者,文件服务器可以包括一些或所有所需文件,允许这样的应用由用户计算机和/或 服务器远程调用。相对于在此的各种服务器(例如应用服务器、数据库服务器、web服务器、 文件服务器等)所描述的功能可以依据特定实现需求和参数由单个服务器和/或多个专用 服务器来实现。
[0268] 在一些实施例中,所述系统可以包括一个或多个数据库。数据库的位置是任意的。 作为非限制性示例,数据库可以驻留在服务器(和/或用户计算机)本地(和/或驻留在其中) 的存储介质上。或者,数据库可以远离任何或所有的计算设备,只要它能与这些设备中的一 个或多个(例如通过网络)通信。在一些实施例中,数据库可以驻留在存储区域网络(SAN) 中。SAN可以被实现为计算机化的数据存储设备组。用于执行归因于计算机的功能的一些或 所有的所需文件可以被本地存储在相应计算机上和/或适当地被远程存储。在一些实施例 中,数据库可以是关系型数据库,例如Oracle数据库,它适用于响应于SQL格式的命令存储、 更新和检索数据。所述数据库可以由数据库服务器来控制和/或维护。
[0269] 用于执行指令程序的合适的处理器包括,但不局限于,任何类型的计算机的通用 和专用微处理器以及单独的处理器或多个处理器或核之一。处理器可以从计算机化数据存 储设备(例如只读存储器、随机存取存储器、这两者、在此所述的数据存储设备的任何组合) 中接收并存储指令和数据。处理器可以包括操作上控制电子设备的操作和性能的任何处理 电路或控制电路。
[0270] 处理器还可以包括一个或多个用于存储数据的数据存储设备或在操作上被耦合 以与其通信。这样的数据存储设备可以包括,作为非限制性示例,磁盘(包括内部硬盘和可 移动盘)、磁光盘、光盘、只读存储器、随机存取存储器和/或闪存存储。适用于有形实现计算 机程序指令和数据的存储设备还可以包括非易失存储器的所有形式,包括,例如:半导体存 储器设备,例如EPROM,EEPR0M,以及闪存存储器设备;磁盘,例如内部硬盘和可移动盘;磁光 盘;和/或⑶-ROM和DVD-ROM盘。处理器和存储器可以由ASIC(专用集成电路)补充或被结合 在ASIC中。
[0271] 在此所述的系统、模块和方法可以在软件或硬件元件的任意组合中实现。在此所 述的系统、模块和方法可以使用一个或多个单独工作的虚拟机或将它们彼此组合来实现。 任何可应用的虚拟化解决方案可被用于将物理计算机器平台封装到虚拟机,所述虚拟机在 运行在硬件计算平台或主机上的虚拟化软件的控制下执行。虚拟机可以具有虚拟系统硬件 和客操作系统两者。
[0272] 在此所述的系统和方法可在一种计算机系统中实现,所述计算机系统包括后端组 件(例如,数据服务器)、或包括中间软件层组件(例如,应用服务器或因特网服务器)、或包 括前端组件(例如,具有图形用户界面或因特网浏览器的客户端计算机)、或包括这样的后 端、中间软件层或前端组件的任意组合。所述系统的各组件可通过任何形式或介质的数字 数据通信(例如,通信网络)来连接。通信网络的示例包括但不限于:LAN、WAN、或形成因特网 的任何网络。
[0273] 本发明的一个或多个实施例可以在其他计算机系统配置中实施,包括手持式设 备、微处理器系统、基于微处理器或可编程的消费电子产品、微型计算机、大型计算机等。本 发明也可在分布式计算环境中实施,在所述分布式计算环境中任务是由通过网络链接的远 程处理设备执行的。
[0274] 尽管已经描述了本发明的一个或多个实施例,但它们的各种改变、添加、排列和等 价物也包括在本发明的范围中。
【主权项】
1. 一种用于处理指令以修改对内容的将来请求的方法,所述方法包括: 在代理服务器处,接收对内容的请求,所述内容包括可执行指令; 从服务器检索所请求的内容,并在所述代理服务器处存储所请求的内容; 解析所请求的内容以标识被配置用于生成URL的可执行指令; 通过包装所标识的指令以调用替代指令来修改所请求的内容,其中所述替代指令被配 置为将后缀代理的标识附加到所生成的URL; 在所述代理服务器处,存储包括所包装的指令的经修改的内容;以及 将包括所包装的指令的所述经修改的内容传送给客户端设备。2. 如权利要求1所述的方法,其特征在于,所述代理服务器被配置为后缀代理。3. 如权利要求1所述的方法,其特征在于,所述内容包括JavaScript。4. 如权利要求1所述的方法,进一步包括: 确定被修改包括所包装的指令的所请求的内容是否被存储在所述代理服务器上; 如果被修改包括所包装的指令的所请求的内容被存储在所述代理服务器上,在无需从 所述服务器检索所请求的内容的情况下,发送所述经修改的内容给所述客户端设备。
【文档编号】H04L29/06GK106031118SQ201480061802
【公开日】2016年10月12日
【申请日】2014年11月12日
【发明人】A·科恩, L·莫耶斯, A·勒特瓦克, R·列兹尼科, G·维什涅波利斯基
【申请人】阿道罗姆股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1