通过服务中介实现企业内部服务总线的安全管控方法
2012-10-12陈旭毅
王 洪,陈旭毅
WANG Hong,CHEN Xu-yi
(中国移动贵州公司 信息技术部,贵阳 550004)
0 引言
SOA架构已经成为企业信息化的重要目标,企业服务总线应用越发广泛,其带来的优点是:1)通过屏蔽物理服务的位置和开放细节,简化系统间协作的成本,例如:当某个系统进行升级或者替换时,其作为服务提供者提供的服务只需在企业服务总线(Enterprise Service Bus: ESB)上简单的替换,而大量的服务消费者系统无需进行任何修改,可以有效节约维护成本。2)企业服务可以帮助大量的现有系统开放服务,企业服务总线可以通过中介流进行消息格式、通讯协议的转换,可以对现有系统的改造要求减到最小,可以快速实现业务需求,适应市场的变化[1]。
1 服务总线的安全管控方法
随着SOA的大量应用,服务的安全管控方法是每个使用企业服务总线的企业都会面临的问题。在面向服务架构(SOA,Service-Oriented Architecture)中,业务是最核心的抽象手段,业务被划分(组件化)为一系列粗粒度的业务服务和业务流程。其中,业务服务通过一个或者多个分布的系统、基于对象(Object)机制实现,包含多个操作方法,业务流程由业务服务组装而来[2]。
SOA服务协作过程中,为了实现标准化,一般会利用基于超文本传输协议(HTTP,Hyper Text Transfer Protocol)中的简单对象访问协议(SOAP,Simple Object Access Protocol)封装消息,即业务信息,SOAP协议采用可扩展标记语言(XML,Extensible Markup Language)描述。当然,也可以利用其他传输协议封装消息。
SOA服务协作模式一般采用请求-响应的阻塞模式。业务及流程是服务的识别和定义的基础,服务定义的原则是高内聚、松耦合。服务采用基于对象的机制,包含多种业务操作。
随着通信技术的发展以及企业间共享业务服务应用需求的增强,企业之间通过建立企业服务总线,在企业服务总线上开放来源于包括信息服务、功能服务、流程服务等多个系统的大量的服务,作为SOA架构的重要组成部分,以消除不同应用之间的技术差异,使得不同的应用服务器协调运作,从而实现不同服务之间的通信与整合。
企业服务总线是一种开放的、基于标准的分布式同步或异步信息传递中间件,基于事件驱动和文档导向,并支持内容的路由和过滤,通过将业务逻辑封装到中间件中,支持更为灵活的面向消息和面向事件的交互模式。
现有企业服务总线支持的服务的访问控制一般采用WS-SECURITY的协议机制,该WSSECURITY提供在Web服务上应用安全方法的网络传输协议,包含了关于如何在Web服务消息上保证完整性和机密性的规约。WS-SECURITY协议包括安全断言标记语言(SAML,Security Assertion Markup Language)、Kerberos和认证证书格式(如X.509)使用的详细信息。主要描述如何将签名和加密头加入SOAP消息头以及如何在消息中加入安全令牌,包括二进制安全令牌,如X.509认证证书和Kerberos门票(ticket)[3]。
由上述可见,WS-SECURITY协议主要涉及:1)服务验证(authentication)、2)数据完整性(data integrity)和 3)数据机密性(data con fidentiality),通过建立业务系统(服务消费者系统)与企业服务总线间的认证关系,由企业服务总线上的WEB容器(Container)实现基于证书的认证,还不能提供完整的服务安全管控机制,例如,不能针对不同类型的服务消费者进行灵活的管理、审计,不能提供对具体服务的访问控制和服务方法的访问控制、以及认证信息如何被使用。而随着SOA的大量应用,服务安全管控是每个使用企业服务总线的企业(服务消费者系统)都会面临的问题,举例来说,以人员信息服务为例:服务消费者系统可以在企业服务总线上通过对业务的梳理和分析,获取人员的服务信息,包括:人员基本信息、人员的工作分配信息、员工用工形式信息、员工奖惩信息、员工的专业资格信息、员工的薪酬信息等,这样,在SOA服务协作的企业服务总线模式下,如果服务消费者通过证书的认证,则可以获取人员的服务信息中的任何一种或多种信息,但实际应用中,对于人员基本信息、人员的工作分配信息、员工用工形式信息等,可以开放给大多数内部管理系统;而对于员工奖惩信息、员工的专业资格信息、员工的薪酬信息等,为较为敏感的信息,一般只能开放给少数指定的系统或服务消费者使用、查询。因而,需要针对不同类型的服务消费者,提供不同的具体服务的访问控制和服务方法的访问控制,实现相应的服务安全管控[4,5]。
2 通过服务中介实现的服务总线服务的安全管控机制
2.1 4A统一安全管控思想
1995年,国际网安界最早提出4A(认证Authentication、账号Account、授权Authorization、审计Audit)统一安全管理平台解决方案概念,正式将身份认证作为整个网络安全的基础及不可或缺的组成部分,即将身份认证、授权、审计和账号(即不可否认性及数据完整性)定义为网络安全的四大组成部分,从而确立了身份认证在整个网络安全系统中的地位与作用[6]。
将4A统一管控思想应用到企业服务总线的服务安全管控方法中,按照4A所包含的内容,通过服务中介实现企业服务总线服务的安全管控方法,在服务消费者管理、服务的访问授权、服务调用者与服务的访问管理和服务访问审计等方面形成的服务统一安全管控方法,将有效地弥补WSSECURITY协议的不足。
2.2 服务中介
服务中介在服务请求者与已存在的服务之间起到中介和消息转换的作用,服务中介使用包含中介流的服务中介模块进行实现。如图1所示。
图1 以中介流实现的服务中介
在企业服务总线(ESB)上采用服务中介(Mediation)的方式对物理服务进行封装。服务中介是一种代理机制,即服务消费者无法直接访问服务提供者提供的服务(物理服务),而需要经过企业服务总线访问物理服务,屏蔽物理服务(服务提供者提供的服务)的细节。服务中介提供位置透明性的服务路由和定位服务,即服务消费者无需知道所调用的物理服务是哪个系统提供,无需知道对端IP和访问URL地址,服务消费者只要知道服务总线上开放的服务既可,以上路由和定位都是由ESB实现;有多种消息传递形式(支持SOAP、XML、甚至二进制数据等);支持广泛使用的传输协议(web-service、http、https、FTP、JMS、plat file)。
2.3 通过服务中介实现服务的安全管控机制
在企业服务总线上建立服务安全管控中介,在每个业务服务中介中增加对安全管控中介的调用,对于每次服务消费者对服务的访问请求,服务消费者把服务消费者ID、服务消费者密码等安全认证信息嵌入到SOAP协议头中,把服务调用请求发送到企业服务总线。
服务的安全管控机制需要包含服务消费者账号管理方法、服务访问认证方法、服务授权管理方法、服务访问的安全审计方法等,以下对各个方法进行详细介绍。
2.3.1 服务消费者账号管理方法
在企业服务总线上建立服务账号管理的信息源,采用数据库或者LDAP或者文件或者其他的物理存储形式,包含的信息项至少包括服务消费者(应用或者系统)ID、服务消费者名称、服务消费者访问密码(加密存储)、密码是否过期、密码到期时间、服务消费者证书信息等信息。并提供维护该信息的功能。例如:对服务消费者账号的增、删、改、查操作。
2.3.2 通过建立服务授权项实现服务访问的授权管理方法
在企业服务总线建立服务的授权项信息源,采用数据库或者LDAP或者文件或者其他的物理存储形式,包括的授权项至少包括:服务ID、服务名称、服务端点地址、服务方法、服务消费者ID、是否允许访问、访问有效期等信息,并提供维护服务授权项信息的功能,例如:服务访问授权、服务授权查询、服务取消授权、服务授权设置有效期等功能。
2.3.3 通过服务安全管控中介实现对总线上的服务访问认证流程及方法
在企业服务总线上建立服务安全管控中介,在每个业务服务中介中增加对安全管控中介的调用,对于每次服务消费者对服务的访问请求,服务消费者把服务消费者ID、服务消费者密码等安全认证信息嵌入到SOAP协议头中,把服务调用请求发送到企业服务总线,业务服务中介(如图2)在接收到访问请求之后通过解析SOAP协议头信息以及服务访问信息,把访问请求发送至安全管控中介(如图2),安全管控中介使用服务消费者账号信息、服务请求授权项信息进行认证和授权验证,验证通过后记录服务访问安全审计日志,通知业务服务中介调用物理服务并把访问结果返回给服务消费者。如图2所示。
1)服务消费者向服务总线发起服务访问请求,服务消费者ID、服务消费者密码等安全认证信息嵌入到SOAP协议头中。以对HR的获取人员信息服务的请求为例:
图2 在企业服务总线上建立服务安全管控中介
图3 HR的获取人员信息服务的请求
该业务场景是通过服务获取HR系统中员工编号为27007086的员工的信息,形象的描述:SOAP协议由SOAP信封、SOAP信息头、SOAP信息体组成,SOAP信封主要描述的整个服务的命名空间“xmlns”以及调用的服务名称:“EmployeeInfoService”,SOAP消息头中增加了服务调用者的系统ID和服务调用者系统的密码,见上图红色显示的部分,其ID编号为“11”,密码是明文加密后并使用Base64方式编码的密码。如果有必要,还可以根据信息增加验证码,用于校验整个SOAP消息的校验和,以避免有非法篡改消息体的信息攻击;消息体中包含调用该服务的方法“getEmployeeInfoByEmployeeID”,以及员工编号输入信息“员工编号是27007086”。采用在消息头中而不在消息体中增加安全认证信息的优点是不破坏业务的可读性和完整性,消息体偏重在业务数据,便于系统的业务整合。
2)企业服务总线的业务服务中介把服务请求的上下文信息传递到服务安全管控中介进行身份及访问权限认证。
3)服务安全管控中介在服务访问的请求上下文获得服务消费者的ID及密码,通过服务消费者账号信息源进行身份认证,包括密码是否正确,账号在有效期内等,在身份认证通过后进行服务访问权限认证,从服务请求上下文获得服务的端点地址和服务消费者调用服务方法(Method)。
4)服务安全管控中介在认证通过后把认证结果通知业务服务中介。
5)服务安全管控中介记录本次服务访问的访问日志。
6)业务服务中介向服务提供者物理服务发起访问请求,物理服务是现有系统开放出来的为其它的系统提供服务的业务功能,例如:人力资源中的员工信息服务(其method方法包括:获取员工基本信息、获取员工薪酬信息、获取员工的联系信息、获取员工的奖惩信息等)、员工操作服务(其method方法包括:员工升迁任免、员工入职、员工离职、员工休假等);合同管理中的合同信息服务(其method方法包括:获取合同基本信息、获取合同文本、获取合同审判记录等)、合同操作服务(其method方法包括:合同创建、合同修改、合同销毁等)。在信息系统的建设中,物理服务由各专业系统提供,其如何识别和定义采用一定的方法论,包括业务流程拆解法、目标系统定义法和现有资产接口分析法,因该分析方法非本发明探讨的重点,不在本发明中做详细描述。
7)服务访问结果返回到企业服务总线。
8)服务访问结果由企业服务总线返回到服务消费者。
3 通过服务中介日志方式实现服务总线上的服务访问审计方法
服务安全管控中介在服务访问过程中在企业服务总线生成服务访问日志,采用数据库表或者文件或者其他存储的形式,至少包含服务消费者ID、服务访问ID、访问的服务方法(Method),服务访问时间,服务认证是否成功等信息,同时提供统计查询报表。通过服务访问的统计查询报表来满足企业的服务访问的安全审计要求。
4 结论
通过服务中介实现的服务总线服务的安全管控方法,融合了统一用户账号管理、统一认证管理、统一授权管理和统一安全审计等四要素,能够为企业提供功能完善的、高安全级别的企业服务总线上的安全管理,消除了不同应用之间的技术差异,在服务总线上开放了来源于多个系统大量的服务,包括信息服务、功能服务、流程服务等,使得不同的应用服务器得以安全协调运作,实现了不同服务之间的通信与整合。
[1]毛新生.SOA原理方法实践[M],北京:电子工业出版社,2007.
[2]曹中洪,廉东本. 面向SOA的企业服务总线研究与应用[J].计算机系统应用,2010,(10):63-67.
[3]杨海斌. 基于WS-Security框架的Web服务安全解决方案[J]. 电脑编程技巧与维护,2009,(18) :102-103,109.
[4]李瑞,陶明.基于WS-Security的Web服务安全的实现[J].计算机与现代化,2008,(12):131-137.
[5]石伟鹏,杨小虎.基于SOAP协议的Web Service安全基础规范(Web Security)[J],计算机应用研究,2003,20(2):100-102,105.
[6]李久洪.移动公司4A项目建设之我见[J].通信世界,2008,(23):24.