在云环境中自动分发安全规则的非侵入性方法和设备
技术领域
本发明一般地涉及网络安全领域。更具体地说,本发明涉及一种在云环境中自动分发(和更新)安全规则的非侵入性方法和设备。
背景技术
随着计算机和互联网技术的发展,诸如互联网购物的Web应用已经普及,客户机侧脚本(如JavaScript)通常在这些应用中被用于改进用户体验。然而,伴随的安全问题却日益严重。目前,Web应用的安全性弱点的数量正在迅速增加。网络应用容易受到包括跨站脚本攻击(XSS)、跨站请求欺骗(CSRF)、SQL注入、LDAP注入、命令注入、PHP注入等的攻击。统计显示90%的站点容易受到网络应用攻击。
例如,XSS攻击是网络应用攻击的典型例子。XSS攻击是指攻击者把恶意脚本嵌入在看似来自可信任源的链接中,从而当一用户点击该链接时,嵌入的恶意脚本被发送到该用户的客户机进行执行,例如来偷取该用户的敏感信息。当与异步的JavaScript和XML(AJAX)一起使用时,XSS攻击能够在不对新网页进行刷新的情况下以受害人的名义进行恶意请求,这使得这种攻击更加的隐蔽和危险。上述的其它恶意攻击与XSS攻击基本类似,都是通过向Web应用服务器注入恶意代码或脚本进行攻击,在此不进行详细描述。
为了防止这种攻击,需要在Web应用服务器(例如WebSphereApplicationServer,WAS)侧验证用户的输入(例如,HTTP请求)。作为应用于Web应用服务器侧的透明保护机制的Web应用防火墙(WAF-WebApplicationFirewall)被配置用来进行这种验证。该Web应用防火墙至少具有以下功能:基于预定义的安全规则来验证用户的输入;对于违反安全规则的用户输入,采取适当的安全保护动作,例如,阻挡IP、拒绝请求、产生日志或重写有效负荷等。
对于服务器-客户机模式,只需简单地对应用于Web应用服务器侧的Web应用防火墙设置安全规则。然而,在云环境中,由于多样的配置和部署,提供针对注入XSS、SQL注入等的应用安全防护变得更加复杂。在云环境中,对于应用的部署,存在多样和动态的拓扑结构:
1)基于定义的复合应用模型,每个应用可被部署在多个服务器上;
2)在构建时,对于一个应用的安全规则应该被应用于部署该应用的所有服务器。
图1示出了在云环境中的应用被部署在多个服务器中的情况的例子。
在现有技术中,在云环境中需要对部署了同一应用的每个服务器单独配置安全规则,这是非常麻烦且耗时的。
发明内容
基于上述技术问题,需要一种能够在云环境中简化管理者对各个服务器进行安全规则配置的有效方法和设备。
本发明的方法和设备能够自动生成用于应用的安全规则并将其分发到部署该应用的多个服务器,从而满足多样的云环境中的复杂性要求。对于部署的应用,无须进行代码修改,从而对于已有的应用是透明的。本发明的方法和设备能够减轻针对多个服务器配置安全规则的负担。
为了解决上述问题,根据本发明的一个实施例,提供了一种在云环境中自动分发安全规则的非侵入性方法,包括以下步骤:形成应用的在云环境中的复合应用模型,所述复合应用模型至少包括用于部署所述应用的各种服务器的类型;产生所述各种服务器在云环境中的拓扑模型;基于所述应用的应用上下文、所述复合应用模型和所述拓扑模型,自动生成各服务器的服务器侧防火墙要采用的安全规则;以及基于所述复合应用模型和拓扑模型,将所述安全规则分发到每个服务器侧防火墙。
根据本发明的另一个实施例,提供了一种在云环境中自动分发安全规则的非侵入性设备,包括:复合应用模型形成装置,用于形成应用的在云环境中的复合应用模型,所述复合应用模型至少包括用于部署所述应用的各种服务器的类型;拓扑模型产生装置,用于产生所述各种服务器在云环境中的拓扑模型;安全规则生成装置,用于基于所述应用的应用上下文、所述复合应用模型和所述拓扑模型,自动生成各服务器的服务器侧防火墙要采用的安全规则;以及安全规则分发装置,用于基于所述复合应用模型和拓扑模型,将所述安全规则分发到每个服务器侧防火墙。
此外,在另一个实施例中,基于从Web应用防火墙提供的反馈信息,能够对安全规则进行更新,并将更新的安全规则再次分发到所述多个服务器,从而适用于云环境中的多样和动态的拓扑结构。采用该技术方案,如果在运行时在一个服务器中发现了弱点,则可将防护该弱点的规则快速分发给部署了同一应用的所有服务器。
附图说明
以下通过结合附图阅读参考下述对说明性实施例的详细描述,将更好地理解本发明本身、实施方式、其它目的及其优点。在附图中:
图1示出了在云环境中的应用被部署在多个服务器中的情况的例子;
图2是示意性地示出应用、复合应用模型以及拓扑模型之间的映射关系的说明图;
图3示意性地示出了应用服务器防火墙在***中的位置;
图4示出了一个HTTP请求的例子;
图5是示出了根据本发明的一个实施例的方法流程500的流程图;
图6示出了根据本发明的另一个实施例的方法流程600;以及
图7是示出了根据本发明的一个实施例的在云环境中自动分发安全规则的非侵入性设备700的框图。
图8表示根据本发明一实施例的云计算节点。
图9表示根据本发明一实施例的云计算环境。
图10表示根据本发明一实施例的抽象模型层。
现在参照附图描述优选方法和***,其中,在附图中相同的附图标号用来指相同的部件。在下面的描述中,为了解释的目的,阐述大量特定的细节,以便帮助完全了解***及方法等。在其它的例子中,为了简化描述,以框图的形式示出常用的结构和装置。对于本领域技术人员来说,可以想到很多修改和其它实施例,同时拥有在说明书和附图中所教导的益处。因此,应该理解,本发明不局限于所公开的特定实施例,另外可选的实施例应当包含在本发明的范围和范例发明构思内。虽然本文采用了一些特定术语,但是仅仅为了一般的描述意义而非限制目的使用它们。
具体实施方式
以下将参照附图对本发明的具体实施方式进行详细说明。在以下的说明中,首先,对本公开中使用的关键术语进行描述。
下列讨论中,提供大量具体的细节以帮助彻底了解本发明。然而,很显然对于本领域技术人员来说,即使没有这些具体细节,并不影响对本发明的理解。并且应该认识到,使用如下的任何具体术语仅仅是为了方便描述,因此,本发明不应当局限于只用在这样的术语所表示和/或暗示的任何特定应用中。
首先应当明白,尽管本公开包括关于云计算的详细描述,本公开所记载的技术方案的实现却不限于云计算环境。本发明的实施例能够结合现在已知的或以后开发的任何其它类型的计算环境而实现。
云计算是一种服务交付模型,用于对共享的可配置计算资源池进行方便、按需的网络访问。可配置计算资源例如是网络、网络带宽、服务器、处理、内存、存储、应用、虚拟机和服务,是以最小的管理成本或者最少的与服务提供者的交互就能快速提供和释放的资源。这种云模型可以包括至少五个特征,至少三个服务模型和至少四个部署模型。
特征如下:
按需自助式服务:云消费者能单方面自动地按需提供计算能力,诸如服务器时间和网络存储,而无需与服务提供者进行人工交互。
广泛的网络接入:云计算能力可在网络上获取,并且是通过标准机制获取的,标准机制促进通过不同种类瘦客户机平台或厚客户机平台(例如移动电话、膝上型电脑、个人数字助理PDA)对云的使用。
资源池:将提供者的计算资源归入资源池,通过多租户(munti-tenant)模式服务于多重消费者,不同的实体资源和虚拟资源按照需要被动态地分配和再分配。因为消费者一般不控制甚至不知道所提供的资源的确切位置,但是可能在较高的抽象程度上指定位置(例如国家、州或数据中心),所以有一种位置独立感。
迅速的弹性:能迅速和有弹性地(有时是自动地)提供计算资源,以实现快速地扩展并且能快速地释放。对于消费者来说,可用的计算资源常常显得是无限的,在任何时候都能获取任何数量的计算资源。
可测量的服务:云***通过利用适于服务(例如存储、处理、带宽和活动用户帐号)类型的某种抽象程度的计量能力,自动地控制和优化资源效用。可以监测、控制和报告资源使用情况,为服务提供者和消费者双方提供透明度。
服务模型如下:
软件即服务(SaaS):给予消费者使用提供者在云基础架构上运行的应用的能力。应用是可通过诸如网络浏览器的瘦客户机接口从各种客户机设备访问的(例如基于网络的电子邮件)。可能除了是有限的特定于用户的应用配置设置外,消费者既不管理也不控制底层的云基础架构,包括网络、服务器、操作***、存储、乃至单个应用能力。
平台即服务(PaaS):向消费者提供的能力是在云基础架构上部署消费者创建的或获得的应用,这些应用是用提供者所支持的程序设计语言和工具创建的。消费者不管理或控制基础的云基础架构,包括网络、服务器、操作***或存储,但是对所部署的应用具有控制权,对托管环境配置的应用也可能有控制权。
基础架构即服务(IaaS):给予消费者提供处理、存储、网络和消费者能在其中部署和运行任意软件的基础计算资源的能力,其中软件可包括操作***和应用程序。消费者既不管理也不控制底层的云基础架构,但是对操作***、存储和所部署的应用具有控制权,对选择的网络部件(例如主机防火墙)也可能拥有有限的控制权。
部署模型如下:
私有云:云基础架构是单独为某个组织运行的。云基础架构可以由该组织管理,也可以由第三方管理,可以存在于组织内,也可以存在于组织外。
共同体云:云基础架构被若干个组织共享,支持有共同利害关系(例如使命、安全要求、政策和合规考虑)的特定共同体。共同体云可以由共同体内的多个组织或第三方管理,可以存在于组织内,也可以存在于组织外。
公共云:云基础架构向公众或大型产业群提供,并由出售云服务的组织拥有。
混合云:云基础架构是两个或更多的云(私有云、共同体云或公共云)的合成,这些云依然是独特的实体,但是通过使数据和应用能够移植的标准化技术或私有技术(例如用于云之间的负载平衡的云突发流量分担技术)绑定在一起。
云计算环境是面向服务的,特点集中在无状态性、低耦合性、模块性和语意的互操作性。云计算的核心是包含互连节点网络的基础结构。
现在参考图8,图中显示了一个云计算节点的例子。云计算节点10仅仅是合适的云计算节点的一个示例,而并不意味着对本发明的实施例的功能和使用的范围的任何限制。总之,云计算节点10能够被实现和/或执行以上所述的任何功能。
在云计算节点10中有一个计算机***/服务器12,其可与众多其它通用或专用计算***环境或配置一起操作。适于与计算机***/服务器12一起使用的众所周知的计算***、环境和/或配置的例子包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***、大型计算机***和包括上述任何***的分布式云计算技术环境,等等。
计算机***/服务器12可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机***/服务器12可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
如图8所示,云计算节点10中的计算机***/服务器12是以通用计算设备的形式表现的。计算机***/服务器12的部件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***部件(包括***存储器28和处理单元16)的总线18。
总线18表示几种类型的总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任何总线结构的局域总线。举例(但不限于这些示例)来说,这些体系结构包括工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***部件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以为可被计算机***/服务器12访问的任何可获得的介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机***/服务器12可以进一步包括其它可以移动的/不可移动的,易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以被提供用于读出和写入不可移动的、非易失性磁介质(未示出,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动的非易失性磁盘(录入“软盘”)读写的磁盘驱动器,以及对可移动的非易失性光盘——诸如CD-ROM,DVD-ROM或者其它光介质——读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。如以下将进一步表示和描述的那样,存储器28可以包括至少一个程序产品,该程序产品有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
有一组(至少一个)程序模块42的程序/实用工具40,可以被存储在存储器28中,这样的程序模块42例如(但不限于)操作***、一个或者多个应用程序、其它程序模块以及程序数据。操作***、一个或者多个应用程序、其它程序模块、程序数据中的每一个或它们的某种组合中可能包括网络环境的实现。程序模块42通常执行这里描述的本发明的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14——诸如键盘、指向设备、显示器24等等——通信,与一个或者多个使用户能与计算机***/服务器12交互的设备通信,和/或与使计算机***/服务器12能与一个或多个其它计算设备通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络——诸如局域网(LAN),广域网(WAN)和/或公共网络(例如因特网)——通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,其它硬件和/或软件模块可以与计算机***/服务器12一起使用。例子包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***,等等。
现在参考图9,该图描述了示例性的云计算环境50。如图所示,云计算环境50包括云计算消费者使用的本地计算设备可以与其相通信的一个或者多个云计算节点10,本地计算设备诸如个人数字辅助设备(PDA)或者是移动电话54A,台式电脑54B,笔记本电脑54C,和/或汽车计算机***54N。节点10之间可以相互通信。可以在在一个或者多个网络——诸如如上所述的私有云、共同体云、公共云或混合云或者它们的组合——中,将节点10进行物理或者虚拟分组(图中未示出)。这允许云计算环境50提供云消费者无需在本地计算设备上维护资源就能请求的基础架构即服务、平台即服务和/或软件即服务。应当明白,图9示出的各类计算设备54A-N仅仅是示意性的,计算节点10以及云计算环境50可以与任何类型的网络上的和/或网络可寻址的连接上的任何类型的计算设备(例如使用网络浏览器)通信。
现在参考图10,该图示出了云计算环境50(图9)提供的一组功能抽象层。首先应当明白,图10所示的部件、层以及功能都仅仅是示意性的,本发明的实施例不限于此。如图所示,提供了下列层和对应功能:
硬件和软件层60包括硬件和软件部件。硬件部件的例子包括:主机——例如***;基于RISC(精简指令集计算机)体系结构的服务器——例如IBM***;IBM***;IBM***;存储设备;网络和网络部件。软件部件的例子包括:网络应用服务器软件——例如IBM应用服务器软件;数据库软件——例如IBM数据库软件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是国际商业机器公司在全世界各地注册的商标)。
虚拟层62提供一个抽象层,该层可以提供下列虚拟实体的例子:虚拟服务器、虚拟存储、虚拟网络(包括虚拟私有网络)、虚拟应用和操作***,以及虚拟客户端。
在一个示例中,管理层64可以提供下述功能:资源供应功能提供用于在云计算环境中执行任务的计算资源和其它资源的动态获取;计量和定价功能在云计算环境内资源被使用时进行成本跟踪,并为这些资源的消费提供帐单和***。在一个例子中,这些资源可以包括应用软件许可。安全功能为云消费者和任务提供身份认证,为数据和其它资源提供保护。用户门户为消费者和***管理员提供对云计算环境的访问。服务水平管理功能提供云计算资源的分配和管理,以满足必需的服务水平。服务水平协议(SLA)计划和履行功能为根据SLA的预测了未来需求的云计算资源提供预先安排和供应。
工作负载层66提供了云计算环境可能实现的功能的示例。在该层中,可提供的工作负载或功能的示例包括:地图绘制与导航;软件开发及生命周期管理;虚拟教室的教学他提供;数据分析处理;交易处理;以及自动分发安全规则。
图2是示意性地示出应用、复合应用模型以及拓扑模型之间的映射关系的说明图。参见图2的左部,应用是指部署在云环境中的但是用户看起来是一个应用的应用,诸如自动销售***(SFA)、客户关系管理(CRM)等等。对于一个应用,可以形成不同的复合应用模型。例如,参见图2的中部,对于应用1,作为复合应用模型,具体地启用了一个Web应用服务器(WAS)和一个DB2服务器;而对于应用2,作为复合应用模型,具体地启用了两个Web应用服务器、一个DB2服务器和一个LDAP服务器。在复合应用模型中,应用被映射到不同的Web应用服务器上。最后参见图2的右部,基于创建的复合应用模型,产生了拓扑模型。该拓扑模型提供从复合应用模型到多个运行的服务器实例的映射。具体地,拓扑模型可以包含所述多个运行的服务器实例所在的服务器的IP地址和/或它们之间的连接关系。
接下来,将参照图3简要描述应用服务器防火墙如何利用安全规则对用户输入进行验证。图3示意性地示出了应用服务器防火墙在***中的位置。为了简化说明,图3仅仅示出了云环境中的一个Web应用服务器13。云环境中的其它Web应用服务器具有相似的连接关系。
附图标记11表示位于客户机侧的客户机浏览器,用于向Web应用服务器发送用户的HTTP请求或者从Web应用服务器接收相应的应答。附图标记12表示网络,Web应用服务器通过该网络对由用户通过客户机浏览器发送的请求进行应答。附图标记10表示位于Web应用服务器侧的Web应用防火墙,用于在服务器侧验证用户的HTTP请求中的输入值并为Web应用服务器提供安全保护。尽管在图3中,Web应用防火墙10与Web应用服务器13被分开显示,但是实际上,它们可以处于同一台硬件服务器中。
如图3中所示,用户通过位于客户机侧的客户机浏览器11经由网络12向Web应用服务器13发送具有输入值的请求。为了避免脚本攻击,需要验证用户的输入值以保证Web应用的安全。正常的用户不会在客户机侧键入恶意值,诸如逻辑代码(例如JavaScript逻辑),但是潜在的恶意用户会将恶意的逻辑代码注入到Web应用服务器13,以试图攻击该服务器、盗取其它用户的私有信息等。这些如JavaScript之类的恶意代码当被服务器发送到其它客户机的浏览器时会盗取客户机中的敏感信息。
因此,在服务器侧应该利用预定义的安全规则配置Web应用防火墙10,该Web应用防火墙10基于这些安全规则来验证用户的输入值。当Web应用防火墙10检测到违反安全规则的用户的输入值时,它对该用户采取适当的安全防护措施以去除潜在的隐藏危险。当Web应用防火墙10没有发现用户的输入值违反安全规则时,将用户的请求转发到Web应用服务器13以便进行处理。因此,在这里,Web应用防火墙10起到了过滤器的作用。
为了便于对安全规则进行说明,图4示出了一个HTTP请求的例子。该HTTP请求包括方法“POST”、URL模板、版本、头部(Header)以及主体(Body)。在HTTP请求的头部中包含了名称和值的对的形式的参数,诸如Host:9.186.54.51:8080以及Content-length:19等。
下面示出了用JSON语法编写的一个简单的安全规则:
该安全规则的作用是:当HTTP请求中的头部中的参数“Content-length”的值的字串位数大于100时,将该请求记录在日志中。安全规则可以用JSON或其它语法书写,也可以用表格或者简单的文本文件书写,只要能够表达对条件的判断以及根据条件判断而采用的动作即可。例如另一安全规则可以被记录为表1:
表1
该安全规则规定在表示“name”和“age”的字段中允许的输入值。例如,“name”字段允许的输入值由下面的表2中的正则表达式“safetext”进行定义;“age”字段允许的输入值由代表正整数的正则表达式进行定义。如果“name”或“age”字段中的输入值不符合(违反)相应的安全规则,则该HTTP请求将被拒绝(deny)。
正则表达式(regularexpression)就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。表2中列出了几个正则表达式的例子。
别名 |
正则表达式 |
safe text |
^[a-zA-Z0-9\s.\-]*$ |
email |
^[\w-]+(?:\.[\w-]+)*(?:[\w-]+\.)+[a-zA-Z]{2,7}$ |
integer |
(-|\+)?[0-9]+ |
XSS inject |
/((\%3C)|<)((\%2F)|∨)*[a-z0-9\%]+((\%3E)|>)/ix |
SQL inject |
∧w*((\%27)|(\′))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix |
表2
如上所述,Web应用防火墙根据所设定的安全规则,对用户的输入值进行验证,并且采取相应的动作。
参照图5,本发明提供了一种在云环境中自动分发安全规则的非侵入性方法。该方法是在云环境中的控制台(在图1中未示出)处执行的,该控制台用于对云环境进行集中式控制。图5是示出了根据本发明的一个实施例的方法流程500的流程图。方法流程500包括如下步骤:
步骤510:形成复合应用模型。
步骤520:产生拓扑模型。
步骤530:生成安全规则。
步骤540:分发安全规则。
下面详细描述本发明的方法流程500中的各个步骤。
步骤510:形成复合应用模型
在步骤510中,形成应用在云环境中的复合应用模型,所述复合应用模型至少包括用于部署所述应用的各种服务器的类型。
在构建时,在用于进行集中控制的控制台处,基于要构建以形成应用的各种服务器形成复合应用模型。对于图2中所示的应用2,该复合应用模型可以具有如下的表3的形式。
应用名 |
服务器ID |
服务器名 |
服务器类型 |
应用2 |
1 |
WAS1 |
WAS |
应用2 |
2 |
WAS2 |
WAS |
应用2 |
3 |
Mydb |
DB2 |
应用2 |
4 |
User Registry |
TDS |
表3
在表3中,DB2是一种公知的数据库,TDS(TivoliDirectoryServer)是IBM对LDAP(LightweightDirectoryAccessProtocol,轻量级目录访问协议)的实现,它可以跨平台进行安装配置。尽管以表格的形式给出了复合应用模型的例子,但是本发明不限于此。也可以使用JSON文件或其它文件来描述复合应用模型。在表3中,“服务器ID”列和“服务器名称”列是可选的。对于本发明而言,只要知道实现应用的所有组件的类型就足够了。
步骤520:产生拓扑模型
在步骤520中,产生所述各种服务器在云环境中的拓扑模型。
仍然以图2中所示的应用2为例,在部署时,将复合应用模型中的各个组件部署到实际的服务器中,从而获得了各个服务器的IP地址,并将这些IP地址例如记录在表4中。
应用名 |
服务器ID |
服务器名 |
服务器IP |
应用2 |
1 |
WAS1 |
9.186.110.43 |
应用2 |
2 |
WAS2 |
9.186.110.2 |
应用2 |
3 |
Mydb |
9.186.110.43 |
应用2 |
4 |
User Registry |
9.186.110.37 |
表4
从表4中可以看出,即使服务器WAS2和服务器Mydb在复合应用模型中是不同类型的两个服务器,但是在部署时,它们可以部署在IP为“9.186.110.43”的同一服务器上。与复合应用模式类似,尽管以表格的形式给出了拓扑模型的例子,但是本发明不限于此。也可以使用JSON文件或其它文件来描述拓扑模型。在表4中,所述拓扑模型至少包括各服务器的IP地址。
步骤530:生成安全规则
在步骤530中,基于所述应用的应用上下文、所述复合应用模型和所述拓扑模型,自动生成各服务器的服务器侧防火墙要采用的安全规则。
在这里,所述应用的应用上下文例如包括在struts.xml或web.xml文件中。当然,应用上下文也可以包括在用户自定义的文件或其它数据结构中。下面是struts.xml文件中的一个片段。
<actionname=″file/*/shares″class=″com.ibm.filer.FileShares″>
<paramname=″fileId″>{1}</param>
<result>/filer/api/shares.jsp</result>
<resultname=″OK_CREATED″type=″http″>
<paramname=″location″>/filer/api/details.jsp</param>
<paramname=″status″>201</param>
</result>
</action>
该片段的前两行表示,对于请求服务器中的资源“file/*/shares”的HTTP请求,调用对应的类来处理该用户请求。
对于作为安全规则的约束对象的请求消息,需要设置该消息的URI。基于应用的应用上下文,诸如部署在云平台中的应用的上述struts.xml文件,可以得到消息URI:file/{fileID}/shares。这里仅仅给出了一个例子,还可以从struts.xml文件中的其它<action></action>片段中提取消息URI。
现在,我们已经收集了消息URI、复合应用模型和拓扑模型。下面,以图2中的应用2为例,描述如何基于这些信息生成安全规则。
根据复合应用模型,可以自动识别出在云环境中启用了哪种容器或服务器。由于在表3中的复合应用模型的服务器类型列中,除了Web应用服务器之外,还包括DB2和TDS,这意味着需要生成针对SQL注入和LDAP注入的安全规则,其中SQL注入以DB2服务器为目标并且LDAP注入以TDS服务器为目标。例如,可以自动生成如下的用JSON语法书写的安全规则:
其中,安全规则″SQL-I″用于防止SQL注入,以保护DB2服务器免造脚本攻击;安全规则″LDAPINJECTION″用于防止LDAP注入,以保护TDS服务器免遭脚本攻击。
接下来,根据从拓扑模型获得的Web应用服务器的IP地址9.186.110.43和9.186.110.2以及如上所述获得的消息URIfile/{fileID}/shares,可以确定作为安全规则的约束对象的请求消息URI及其与安全规则的绑定关系,如下面的表5所示。
消息URI |
绑定的安全规则 |
http://9.186.110.43/file/{fileID}/shares |
SQL-I,LDAPINJE CTION |
http://9.186.110.2/file/{fileID}/shares |
SQL-I,LDAPINJE CTION |
表5
与上述的复合应用模型和拓扑模型类似,尽管以表格的形式给出了绑定关系的例子,但是本发明不限于此。也可以使用JSON文件或其它文件来描述绑定关系。
在此对上述安全规则中的安全级别(“severity”)进行说明。该安全级别名称-值对是可选的并且是预先定义的。自动生成各服务器的服务器侧防火墙要采用的安全规则还可以基于用户输入的安全级别。在一个实施例中,安全级别可以为高(HIGH)、中(MEDIUM)、低(LOW)。在其它实施例中,也可以有两个安全级别或者多于3个的安全级别。当用户选择了低安全级别时,仅有安全级别为低的安全规则被绑定;当用户选择了中安全级别时,仅有安全级别为中和低的安全规则被绑定;当用户选择了高安全级别时,所有安全级别的安全规则都被绑定。由此,能够根据不同的用户偏好,来生成安全规则及其绑定关系。
步骤540:分发安全规则
在步骤540中,基于所述复合应用模型和拓扑模型,将所述安全规则分发到每个服务器侧防火墙。
首先,根据复合应用模型判断出那些服务器是Web应用服务器,因为安全规则仅适用于保护Web应用服务器的Web应用防火墙。然后,根据拓扑模型确定各个Web应用服务器的IP地址。具体地,以上述的表3和表4为例,从表3的类型列中判断出,WAS1和WAS2是Web应用服务器,从表4确定WAS1和WAS2的IP地址分别为9.186.110.43和9.186.110.2。据此,将上述生成的安全规则及其与消息URI的绑定关系分发到所确定的IP地址。所述分发例如为将包含安全规则及其与消息URI的绑定关系的文件/消息发送到相应的IP地址或存储在相应目录下。所述安全规则被所述服务器侧防火墙用来验证用户针对该服务器侧防火墙所保护的服务器的输入。
这里,需要说明,因为通常Web应用服务器和它的Web应用防火墙部署在同一硬件服务器上,从而共用同样的IP地址。因此,可以认为确定了Web应用服务器的IP地址也就确定了它的Web应用防火墙的IP地址。
图6示出了根据本发明的另一个实施例的方法流程600。在方法流程600中,步骤610-640与上述的步骤510-540类似,在此不再重复说明。在步骤650中,从各服务器侧防火墙接收关于安全规则违反或异常的反馈信息。所述反馈信息例如可以包括安全规则违反的日志、新型攻击、服务器故障等等各种本领域技术人员可以想到的信息。
在步骤660中,基于所述反馈信息更新所述安全规则。基于所述反馈信息更新所述安全规则包括:基于所述反馈信息重新形成所述应用在云环境中的复合应用模型以及产生所述各种服务器在云环境中的拓扑模型;以及基于所述反馈信息、所述应用的应用上下文、重新形成的复合应用模型和重新产生的拓扑模型,更新所述安全规则。
这里,为了便于说明,以图2中的应用2为例,假定该反馈信息显示服务器“UserRegistry”从网络断开,则按照与对图5的描述类似的方式重新形成如下所示的复合应用模型(表6)和拓扑模型(表7):
应用名 |
服务器ID |
服务器名 |
服务器类型 |
应用2 |
1 |
WAS1 |
WAS |
应用2 |
2 |
WAS2 |
WAS |
应用2 |
3 |
Mydb |
DB2 |
表6
应用名 |
服务器ID |
服务器名 |
服务器IP |
应用2 |
1 |
WAS1 |
9.186.110.43 |
应用2 |
2 |
WAS2 |
9.186.110.2 |
应用2 |
3 |
Mydb |
9.186.110.43 |
表7
然后,在此基础上仅生成安全规则″SQL-I″,而不再生成安全规则″LDAPINJECTION″,这是因为已经不存在TDS服务器,从而不会受到LDAP注入攻击的影响。相应地,新绑定关系变为:
消息URI |
绑定的安全规则 |
http://9.186.110.43/file/{fileID}/shares |
SQL-I |
http://9.186.110.2/file/{fileID}/shares |
SQL-I |
表8
在步骤670中,将更新的安全规则分发到每个服务器侧防火墙。这里,与步骤540相似地,将更新后的安全规则及其与消息URI的绑定关系分发到所确定的IP地址。在上面的例子中,即,仅将安全规则″SQL-I″和表8中的绑定关系分发到所确定的IP地址9.186.110.43和9.186.110.2。
然后,处理返回到步骤650,并且重复步骤650-670的处理。从而能够使生成的安全规则适于云环境中多样且动态的拓扑结构。
在一个实施例中,响应于从任一服务器接收到所述反馈信息,更新所述安全规则。在另一个实施例中,在接收到反馈信息后,并不立即更新安全规则,而是定期地执行安全更新,从而避免过于频繁地更新安全规则。
在一个实施例中,可以针对云环境中的一个或多个应用设置缺省安全规则,而自动生成各服务器的服务器侧防火墙要采用的安全规则的装置包括用于对所述缺省安全规则进行修改。例如,可以把如上所述的安全规则“Rule01”设置为图2所示的应用1和应用2的缺省安全规则。然后,对于应用2,根据图5所示的方法生成安全规则″SQL-I″和″LDAPINJECTION″。最后,将这三个安全规则以及它们与消息URI的绑定关系一起分发到每个服务器侧防火墙。提供缺省安全规则,能够使用户有机会自如地设置想要的特定安全规则。
图7是示出了根据本发明的一个实施例的在云环境中自动分发安全规则的非侵入性设备700的框图。
本发明的设备700包括:复合应用模型形成装置710,用于形成应用在云环境中的复合应用模型,所述复合应用模型至少包括用于部署所述应用的各种服务器的类型;拓扑模型产生装置720,用于产生所述各种服务器在云环境中的拓扑模型;安全规则生成装置730,用于基于所述应用的应用上下文、所述复合应用模型和所述拓扑模型,自动生成各服务器的服务器侧防火墙要采用的安全规则;以及安全规则分发装置740,用于基于所述复合应用模型和拓扑模型,将所述安全规则分发到每个服务器侧防火墙。
在一个实施例中,本发明的设备700还包括:接收装置,用于从各服务器侧防火墙接收关于安全规则违反或异常的反馈信息;更新装置,用于基于所述反馈信息更新所述安全规则;以及再分发装置,用于将更新的安全规则分发到每个服务器侧防火墙。
在一个实施例中,所述更新装置包括:重构装置,用于基于所述反馈信息重新形成所述应用在云环境中的复合应用模型以及产生所述各种服务器在云环境中的拓扑模型;以及第二更新装置,用于基于所述反馈信息、所述应用的应用上下文、重新形成的复合应用模型和重新产生的拓扑模型,更新所述安全规则。
在一个实施例中,本发明的设备700还包括设置装置,该设置装置用于针对所述应用设置缺省安全规则,并且其中,所述安全规则生成装置包括修改装置,该修改装置用于对所述缺省安全规则进行修改。
所属技术领域的技术人员知道,本发明可以体现为***、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“***”的软件部分与硬件部分的组合。此外,本发明还可以采取体现在任何有形的表达介质(mediumofexpression)中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可用的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的***、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行***、装置或器件使用的或与指令执行***、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括-但不限于-无线、电线、光缆、RF等等。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言-诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
以下参照按照本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述本发明。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品。
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
本文中所用的术语,仅仅是为了描述特定的实施例,而不意图限定本发明。本文中所用的单数形式的“一”和“该”,旨在也包括复数形式,除非上下文中明确地另外指出。还要知道,“包含”一词在本说明书中使用时,说明存在所指出的特征、整体、步骤、操作、单元和/或组件,但是并不排除存在或增加一个或多个其它特征、整体、步骤、操作、单元和/或组件,以及/或者它们的组合。
权利要求中的对应结构、材料、操作以及所有功能性限定的装置(means)或步骤的等同替换,旨在包括任何用于与在权利要求中具体指出的其它单元相组合地执行该功能的结构、材料或操作。所给出的对本发明的描述其目的在于示意和描述,并非是穷尽性的,也并非是要把本发明限定到所表述的形式。对于所属技术领域的普通技术人员来说,在不偏离本发明范围和精神的情况下,显然可以作出许多修改和变型。对实施例的选择和说明,是为了最好地解释本发明的原理和实际应用,使所属技术领域的普通技术人员能够明了,本发明可以有适合所要的特定用途的具有各种改变的各种实施方式。