1、1基于服务访问代理机制的 web 服务管理技术摘要:在分布式异构系统集成目标下,为解决 SOA 架构下服务资源共享管理和跨域访问安全控制的问题,提出了基于服务访问代理(SAA)的 web 服务交互控制机制,并以此为核心架构设计实现了一套完整的服务注册管理方案,可以在保证系统安全性的同时极大地发挥 SOA 的灵活性。文中首先从原理层面介绍该方案的实现机制和设计思路,并分析其优势所在;然后从系统总体框架、底层数据模型和注册流程三个方面描述其具体实现方式;最后通过实例阐述了该方案的工程效果。关键词:系统集成;服务访问代理;服务注册;服务管理Service Access Agent Based Web
2、 Service Management TechnologyAbstract:With the purpose of distributed heterogeneous systems integration, in order to solve the problem of shared management and cross-domain access control of the service resources under service-oriented architecture (SOA), this paper puts forward a web service inter
3、operating process based on service access agents (SAA) first and then designs and realizes a whole service registrating and management method. It could not only insure the security during cross-domain interoperating but also immensely develop the agility for SOA. This paper first introduces the theo
4、ry of the method and its design idea, and then describes how to realize the method in detail in terms of its whole architecture, digital model and the process of registration. In the end a cross-domain web service call instance displays the effect of the management method.Key words:System integratio
5、n; Service access agents; Service registration; Service management0 引言面向服务架构(SOA)的提出以及 web 服务技术的发展,为分布式异构系统集成提供了良好的解决方案。其具有松散耦合、技术无关、互操作和开放性等特点,克服了传统点对点系统集成方案中成本高、实现复杂、集成系统紧耦合、可重用性差等问题 1,能够很好地满足分布式系统集成和重构的需求。因此,基于 web 服务的 SOA 集成解决方案成为当前集团型企业或者企业联盟之间分布式系统集成的主要方向。SOA 系统集成解决方案的主要思路是将遗留系统各功能模块封装成 web 服务
6、,依靠其标准化和开放性保证各功能模块之间可以灵活地建立通讯,从而确保了异构系统间良好的互操作性。被封装完成后具有一定基础功能的 web 服务(本文称之为原子服务)还可以通过服务编排技术按不同的业务流程组合生成各种具有复杂功能的服务(本文称之为流程服务) ,也体现了 web 服务的另一大优势 可重用性 2。但是,SOA 架构的开放性却对集成系统的安全性提出了巨大的挑战,如何对大量服务进行有效管理和控制以保证其交互的2可行性、安全性和私密性是亟待解决的首要问题,遗憾的是现有的解决方案很难在利用SOA 的灵活性、松散耦合性的同时保证系统的安全性 3。在 web 服务系列技术中,本身提供了基于 UDD
7、I(统一描述、发现与集成)协议的标准注册机制。这套机制是由 IBM、Oracle、Microsoft、SAP 等 300 多家公司共同制定的,其设计初衷是针对 web 服务的商业注册和公共发布,帮助企业促进 web 服务的发展,为企业在线查找和发现那些与其业务相关的在线软件服务。因此,标准 UDDI 注册中心设计了一套非常复杂的数据结构,能够存储所有的商业注册信息,包括作为服务提供方的企业注册信息(“白页 ”) 、基于标准分类法的行业类别信息(“ 黄页 ”)以及该 web 服务的技术信息(“绿页”) ,这些信息足以支撑强大的服务发现、调用机制 4。但是,在针对企业分布式系统集成案例中,基于 U
8、DDI 的服务注册机制却存在明显障碍: 在基于 SOA 理念的系统集成方案中产生的大多数服务并不是提供给外界的商业服务,企业并不希望向公网发布注册信息,这与 UDDI 注册中心设计目标不符,而且注册的服务信息的安全缺乏保障。 在系统集成目标下,服务注册中心的建立主要有两大目标,一是为管理员提供服务管理的信息平台,二是提供服务运行、交互时所需的各种辅助信息,而对服务发现功能的智能化需求相对较弱。如果采用标准 UDDI 注册中心,其复杂的数据结构会产生众多冗余信息,增加了维护的成本。 出于对企业应用中安全性的考虑,不同的系统集成方案中通常都会引入特殊的安全控制策略,注册中心也往往需要提供相应的特殊
9、信息支持策略的实施,标准UDDI 注册中心的数据结构难以完全满足集成方案的需求。基于上述理由,笔者所在的研究团队提出了一种基于服务访问代理(Service Access Agent,SAA)的 web 服务交互机制,能够确保分布式系统间服务交互的安全性,本文在此基础上结合实际需求并借鉴了 UDDI 注册机制设计了一套基于全局 ID 的服务注册管理机制,可以很好地适应基于 SOA 的系统集成需求,在某国营集团型企业的工程实施该方案也显示了良好的实际效果。1 基于 SAA 的 web 服务跨域交互机制目前我国企业(尤其是集团型企业)的信息化发展现状大都具有比较显著的分布式异构的特征 5。一般来说,
10、集团型企业中每个分/ 子公司的信息系统结构上相对独立,甚至大3多数时候是工作在局域网内,有相对成熟的安全解决方案,因此可以认为这些信息系统是若干有保障的“安全域” ,不必担心域内的安全机制问题。但是,集团型企业总部及各分子公司之间频繁的信息交互与互操作意味着大量高频率的 web 服务跨“安全域” 调用情况的存在,此时各“安全域” 内部的安全策略显然无法作用于这种跨域访问模式。本文提出的基于代理的服务交互机制,可以很好的解决上述跨域访问的可控性问题。该机制整体架构如图1 所示:图 1 基于代理的 web 服务跨域访问机制从上述架构图中可以看到,该机制的核心是在每个安全域内设置一个 SAA,域内的
11、所有 web 服务要与域外的服务进行跨域交互(包括调用和被调用两方面)时都必须通过 SAA来实现,域内所有服务不能直接对域外的交互请求做出响应。每个域的 SAA 都将对本域内所有服务的运行进行管理控制,尤其是当接收到来自域外的需要访问本域内服务的请求时,SAA 会通过一套完善的服务注册信息(下文中会详细介绍)验证该访问的合法性并做出相应的回应,从而有效的规避了 web 服务高度开放性所带来的系统安全隐患。另外,SAA 是以标准 web 服务方式实现的,它所采用的标准方法和接口适用于各种形式的调用过程。因此,设置代理的过程可以在不改变任何底层标准 web 服务访问协议的前提下轻松的完成 6。通过
12、上述描述,众多 web 服务跨域交互安全问题就简化成如何保证各域 SAA 之间交互安全性的问题。SAA 之间交互安全性可以通过两方面手段来实现 7:1、 SAA 的身份验证SAA 间的身份验证功能是采用目前比较成熟的 Kerberos 协议实现的。图 1 中所示的4KDC(密钥分发中心)就是为 SAA 提供身份验证服务的,它可以确保各安全域的 SAA 之间且仅是他们之间可以相互信任、相互通信,从而阻止了公网上非法身份对 SAA 的访问。2、 传输级安全性跨域的服务交互必然会使数据暴露在公网上,本方案采取的 Kerberos 协议在进行代理间的跨域身份验证的同时,本身还可以提供数据的安全传输功能
13、,可以保障数据的机密性,完整性,不可否认性,因此传输级的安全性也是有保障的。2 基于全局 ID 的服务管理机制基于 SOA 的系统集成方案需要把所有具有业务功能的应用程序封装成 web 服务的形式来实现,利用 web 服务的标准化和开放性来可以提高该模块的可重用性,降低集成实施成本。但与此同时,系统内部生成将产生大量 web 服务,如何对其进行有效的管理以保障服务安全可靠的运行,如何构建快速灵活的调用、发现机制等问题都对集成方案的服务管理功能提出了很高的要求。结合上一节提出的基于 SAA 的 web 服务跨域交互机制,本文设计的服务管理模块将从服务注册、服务信息维护、服务发现、SAA 注册、S
14、AA 信息维护以及访问交互控制六个方面实现完整的管理功能(如图 2 所示):系 统 管 理 员服 务 开 发 人 员服 务 使 用 者服 务 注 册服 务 信 息 维 护服 务 交 互 控 制服 务 发 现注 册 中 心服 务 I D 分 配W S D L 自 动 解 析服 务 信 息 获 取数 据 库 读 写授 权 信 息 获 取S A A 注 册S A A 信 息 维 护S A A I D 分 配W e b 服 务 管 理 系 统图 2 服务管理模块用例图服务管理系统针对的用户可以分为系统管理员、服务开发人员和服务使用者三类:系统管理员负责服务注册信息的维护,包括对注册中心记录的增删查改等
15、操作;服务开发人员包括服务封装、编排人员,负责开发具有业务功能的 web 服务并将其注册、维护;服务使用者包括某服务的访问代理(SAA) 、使用终端或调用者,系统将对它提供服务发现和调5用控制的支持。注册中心是服务管理模块的核心支撑,存储了所有服务及 SAA 的详细属性信息,包括调用接口、WSDL 地址、提供方信息等。注册中心的架构沿用了标准 UDDI 注册中心的整体思路,但最大的不同在于为每一个服务和 SAA 设立了一个全局 ID,此 ID 是整个集成系统内该服务或 SAA 的唯一标识,在注册时由系统按照一定的规范自动分配,一旦注册完成该 ID 将不能更改。在对服务或 SAA 信息进行维护时
16、,通过 ID 定位到其在数据库中的特定记录,从而对其注册信息进行修改和更新。对于服务的使用者,则只需知道需要调用的服务 ID,调用或交互过程可以动态地获取调用的所需的接口、方法、授权等信息。这套基于全局 ID 的服务管理方案能够使集成系统在维护时具有较高的灵活性,并能最大限度的发挥 SOA 架构的松散耦合性优势:1、灵活性集团型企业组织结构复杂,业务需求变更频繁,且由于业务扩展导致组织架构随之变化的情况时有发生,因此要求其分布式系统集成方案具有较好的变更灵活性和可扩展性,上述基于代理的 web 服务管理方案可以很好的适应企业的这种需求。例如企业新成立了一个分公司,则集成系统需要将该分公司的局域
17、网作为新增安全域添加到原系统中,此时只需要在先新安全域内部署一套 SAA,然后在 KDC 中给 SAA 创建一个新用户,最后将SAA 的信息注册到中心数据库。而对于新增域内的服务授权,只需要维护注册中心的服务授权列表,通过对授权信息进行增加、删除、修改,实现对授权的相应操作。而当已有安全域需要变更时,只需要对其部署在其内的代理注册信息作相应的修改即可。2、松散耦合性在传统技术支持下的 SOA 集成解决方案中,服务部署过程结束后(尤其是采用基于UDDI 协议的注册机制进行服务注册之后) ,往往不允许原子服务随意变动。因为原子服务一旦发生改动(例如部署地点更改,wsdl 文件地址移动,服务接口变更
18、等) ,则使用了该原子服务的流程服务也必须进行相应的修改操作,这些修改操作包括重新部署,重新编译甚至重新编码等等。也就是说,流程服务跟原子服务之间存在很强的紧耦合性,这将会极大的提高系统维护成本和操作复杂性,这显然企业不希望看到的。同样,由于引入了 SAA的概念,SAA 与其管辖下的大量 web 服务之间在调用时也会遇到上述问题,这就意味着只要任何一个服务有所变动都会影响到 SAA 的功能实现,这在管理维护上是不可忍受的。采用本基于全局 ID 的服务管理方案后,系统中需要调用外部服务的模块(流程服务或者SAA)只需与调用服务的 ID(注册后不再变动)相关,与其余信息无关。例如流程服务 A6调用
19、了原子服务 Ai,在 A 的实现代码中与 Ai 有关的信息仅仅是 ID_Ai。如果原子服务 Ai部署注册之后由于某些原因需要改动,此时只需要更新注册中心里的相关注册信息(ID_Ai 保持不变) ,而不需要对流程服务 A 和原子服务 Ai 对应的 SAA 做任何修改。即系统内原子服务的更新并不会影响到调用它们的流程服务或 SAA,很好的解决了传统 SOA集成方案中二者紧耦合的问题。3 服务注册中心数据库根据上文介绍,集成方案中引入的 SAA 对象,一方面严格保证了其所在域内的 web服务的跨域安全运行的问题都;另一方面,它又与企业的组织结构设计密切相关(通常集团型企业每个分/子公司可对应一个安全
20、域,也对应一个 SAA) ,实现了企业信息系统从应用层面到管理层面的合理衔接。显然,基于 UDDI 协议的服务注册机制无法满足该方案的需求,基于此本文设计了一个特殊的服务注册中心,用于存储和管理 web 服务的属性、调用接口、SAA 安全认证、抽象概念的“ 安全域”/SAA 与组织机构实体的映射等信息,以支持集成方案的实现。此外,由于集成方案采用了独特的安全策略,在服务交互控制中需要的访问授权信息等特殊需求也会体现在注册数据模型中。注册中心数据库模型如图 3 所示:S e r v i c e sP K S e r v i c e I DF K 1 S t a t e I DF K 2 O r
21、g a n i z a t i o n I DA b b r i v a t i o nA u t h o rU p d a t e T i m eW S D L _ U R LN a m e s p a c eS e r v i c e N a m eP o r t N a m eR e m a r kS e r v i c e S t a t e sP K S t a t e I DS t a t e T y p eR e m a r kO r g a n i z a t i o n sP K O r g a n i z a t i o n I DF K 1 A g e n t I DO
22、r g N a m eR e m a r kS e r v i c e A c c e s sP K , F K 1 P r o v i d e rP K , F K 1 P r o v i d e r O p e r a t i o nP K , F K 2 C o n s u m e rP K , F K 2 C o n s u m e r O p e r a t i o nR e m a r kS e r v i c e M e t h o d sP K , F K 1 S e r v i c e I DP K O p e r a t i o n N a m eI n p u t V a
23、 r i a b l e sO u t p u t V a r i a b l e sR e m a r kP r e _ S e r v i c e A c c e s sP K , F K 1 P r o v i d e rP K , F K 1 P r o v i d e r O p e r a t i o nP K , F K 2 C o n s u m e rP K , F K 2 C o n s u m e r O p e r a t i o nR e m a r kS e r v i c e A g e n t sP K A g e n t I DS e r v e rH o s
24、 t N a m eP o r tW S D L _ U R LN a m e s p a c eS e r v i c e N a m eP o r t N a m eO p e r a t i o n N a m eR e m a r k图 3 服务注册中心数据库模型1 ServiceStates(服务状态):存储表示服务当前状态种类的信息,例如:“可用” 、 “待修复”、 “待授权”等,便于管理员和开发人员对其进行及时维护。72 ServiceAgents(服务代理):各安全域内所有服务对外交互的代表,与安全域实体一一对应,以标准 web 服务的形式实现,其属性字段存储了所有调用过程中需
25、要的参数信息。3 Organizations(组织机构):企业的组织结构,划分方式由集团型企业系统网络拓扑结构决定,组织机构与 SAA 满足一对一或多对一的关系,即确保每一个组织机构能对应唯一的 SAA。4 Services(服务):具有具体业务功能的标准应用模块,通过与所属机构属性与其域内的 SAA 对应。其属性字段存储了所有调用或交互过程中需要的参数信息。5 ServiceMethods(服务方法):支持多方法服务的运行,同一服务不同方法的运行参数与需求信息有所不同,需要提供相应信息支持。6 ServiceAccess(访问授权列表):存储所有的合法访问配对信息。由于服务方法是最终执行业务
26、功能的最小单元,因此安全策略中的访问授权粒度也细化到服务方法的程度,服务交互过程必须通过该表记录来判断访问请求的合法性。授权内容通过字段名称可以明确地指定每次合法服务访问的具体提供方和消费方。7 Pre_ServiceAccess:该表结构与 ServiceAccess 完全一致,目的是辅助完成服务注册过程。当需要调用其他服务的服务注册时,需要向该表提交需调用服务的清单,授权方通过此表进行相应授权操作从而完成注册过程。4 基于 SAA 的服务注册与授权机制由于 SAA 概念的引入,该服务管理方案贯穿于企业上层组织机构设置到底层业务应用始终,因此注册流程也必须根据上述自顶向下的逻辑完成。本方案中
27、服务注册全过程可以分四个步骤(如图 4 所示)完成,其中包括前期准备阶段(企业机构、服务访问代理注册)和服务注册阶段(服务注册、访问授权) 。8图 4 服务注册流程1. 企业机构注册:根据企业实际的组织结构进行划分,每一个能够提供具有业务功能web 服务的部门都需注册到中央数据库。2. SAA 注册:根据集团型企业网络分布状况进行注册,每一个局域网环境(通常是各分/子公司的信息系统)都被视为一个安全域,需要部署注册一个对应的服务 SAA,同时记录该安全域内所辖的已注册机构,从而确定该机构提供服务所对应的 SAA。3. 服务注册:注册粒度需要细化到服务的每个方法,注册内容包含系统自动分配的 ID
28、,其本身属性和调用接口信息,以及其所属机构、开发作者等外部信息。4. 服务访问授权:授权粒度精确到方法对方法的程度,以支持多方法服务的运行。5 基于注册中心的服务跨域访问控制逻辑在注册过程顺利完成后,各种合法的跨域服务交互就可以在 SAA 的控制下实现。现以 B 域的服务 Bi 要进行跨域调用 A 域内的服务 Ai 为例介绍在本方案控制下的跨域访问交互,具体流程如图 5 所示:9查 询 注 册 中 心 数 据 库 :1 、 根 据 I D _ A i 以 及 I D _ B i 访 问授 权 列 表 , 通 过 “ 身 份 审查 ” 。2 、 根 据 I D _ A i 得 到 A i 的 访
29、 问参 数 。查 询 注 册 中 心 数 据 库 :1 、 根 据 I D _ A i 得 到 服 务 A i 所属 机 构 I D _ O r g A ;2 、 根 据 I D _ O r g A 得 到 服 务 A i对 应 代 理 I D _ A g e n t A ;3 、 根 据 I D _ A g e n t A 获 得 代 理 A的 访 问 参 数 。查 询 注 册 中 心 数 据 库 :1 、 根 据 I D _ B i 得 到 服 务 B i 所属 机 构 I D _ O r g B ;2 、 根 据 I D _ O r g B 得 到 服 务 B i对 应 代 理 I D
30、_ A g e n t B ;3 、 根 据 I D _ A g e n t B 获 得 代 理 B的 访 问 参 数 。服 务 A i代 理 A服 务 B i代 理 B局 域 网局 域 网公 网 调 用T a b l e s :1 、 S e r v i c e s2 、 O r g a n i z a t i o n s3 、 S e r v i c e A g e n t sT a b l e s :1 、 S e r v i c e s2 、 O r g a n i z a t i o n s3 、 S e r v i c e A g e n t sT a b l e s :1 、 S
31、 e r v i c e A c c e s s2 、 S e r v i c e s3 、 S e r v i c e M e t h o d s同步同步同步防火墙防火墙跨域服务调用流程跨域调用时与注册中心交互过程域 B 域 A1 、 I D _ A i2 、 代 理 B 的 访 问 参 数1 、 I D _ A i2 、 代 理 A 访 问 参 数1 、 服 务 A i 的 访 问 参 数中 央 数 据 库( C D B )图 5 基于注册中心的跨域服务交互流程通过图 5 所示,服务 Bi 跨域调用服务 Ai 的过程可以描述为:首先 Bi 需要向 SAA_B发出调用请求,该调用请求中包含
32、Bi 自身的 ID_Bi 以及 Ai 的 ID(即 ID_Ai) 。SAA_B 接收到请求后,利用 ID_Ai 到注册中心查找 Ai 对应的代理 SAA_A,然后将服务调用请求转发给 SAA_A。 SAA_A 接到请求后,利用 ID_Ai 和 ID_Bi 到注册中心查寻授权列表,如果访问未被授权,则 SAA_A 将拒绝本次来自域外的访问请求并返回调用违法的提示信息,否则 SAA_A 将转发该请求给服务 Ai 完成此次跨域调用过程 6,Ai 的运行结果将通过代理原路返回给服务 Bi。其中服务与其代理的交互是简单的 web 调用,其安全性由域内安全策略保证,代理间的通信则由 Kerberos 机制
33、保护。至此,一次跨域调用将在多重保护控制下顺利完成。6 结束语本文以集团型企业分布式异构系统集成为主要目标,在 SOA 框架下提出了一套基于访问代理的 web 服务管理方案。该方案在每个安全域内建立一个服务访问代理( SAA)来对本域内的服务进行管理,基于 Kerberos 的综合认证授权机制确保了代理间通信的安全性,从而保证了跨域服务访问的安全性。另一方面传统 SOA 集成解决方案中具有基础功能的原子服务与利用服务编排技术生成的流程服务之间以及 web 服务与其对应的 SAA 之间的紧耦合性使得系统维护非产复杂。针对上述问题,本文又设计了“基于全局 ID 的服务注册管理机制”,该机制给每个
34、web 服务分配一个系统内部的全局 ID,对应其一组完整的注册信10息,所有服务交互、调用、维护等过程需要的信息都通过此 ID 动态获取。此时若被调用服务的变更仅对应于注册信息的变更,而不会对调用方(SAA 或流程服务)的调用过程有任何影响,有效地解决了传统 SOA 集成方案中服务调用双方紧耦合的难题。综上所述,基于服务访问代理和全局 ID 的服务注册管理方案二者相互配合,在满足企业应用系统安全性需求的同时,又具有良好的操作灵活性,并充分体现了 SOA 的松散耦合性优势。该方案目前已被应用到一项国家 863 课题研究项目中,同时在某国营集团型企业的初步工程实践中展现了良好的应用效果。参考文献:
35、1 Komoda, N. Service Oriented Architecture (SOA) in Industrial Systems. Industrial Informatics, 2006 IEEE International Conference. 2006. 152 Hu Si-le, Shao Bei-en. A Middleware Integration Solution for Heterogeneous Systems in an Enterprise GroupJ. Microcomputer Information, 2009,25(9):35. 呼斯乐,邵贝恩.
36、 集团型企业异构系统的中间件集成方案J. 微计算机信息,2009 ,25(9):3 5.3 Bing Xiao-yan, Shao Bei-en. SOA-based cross-domain access control for enterprise applicationsJ. Tsinghua Science and Technology, 2009,49(7):10501053. 邴晓燕,邵贝恩. 基于 SOA 的企业应用跨安全域访问控制 J. 清华大学学报,2009,49(7):10501053.4 http:/uddi.xml.org/ Official website of St
37、andard UDDI protocol committee.5 Bing Xiao-yan, Shao Bei-en. Centralized authentication and authorization based on KerberosJ. Microcomputer Information, 2009,25(9):12. 邴晓燕,邵贝恩. 基于Kerberos 的统一认证授权研究J. 微计算机信息,2009,25(9):1 2.6 Qing Li, Jian Zhou, Qi-rui Peng, et al. Business Processes Oriented Heteroge
38、neous Systems Integration Platform for Networked Enterprises. Special Issue of Computer in Industry (Accepted, will be in volume 61 issue 2 around March 2010)7 Li Can-qiang. Business Model Based Service Orchestration TechnologyD. Beijing: Department of Automation, Tsinghua University, 2009. 李灿强 . 基于业务模型的服务编排技术研究D. 北京:清华大学自动化系, 2009.