王 洪,陳旭毅
WANG Hong,CHEN Xu-yi
(中國移動貴州公司 信息技術(shù)部,貴陽 550004)
SOA架構(gòu)已經(jīng)成為企業(yè)信息化的重要目標,企業(yè)服務總線應用越發(fā)廣泛,其帶來的優(yōu)點是:1)通過屏蔽物理服務的位置和開放細節(jié),簡化系統(tǒng)間協(xié)作的成本,例如:當某個系統(tǒng)進行升級或者替換時,其作為服務提供者提供的服務只需在企業(yè)服務總線(Enterprise Service Bus: ESB)上簡單的替換,而大量的服務消費者系統(tǒng)無需進行任何修改,可以有效節(jié)約維護成本。2)企業(yè)服務可以幫助大量的現(xiàn)有系統(tǒng)開放服務,企業(yè)服務總線可以通過中介流進行消息格式、通訊協(xié)議的轉(zhuǎn)換,可以對現(xiàn)有系統(tǒng)的改造要求減到最小,可以快速實現(xiàn)業(yè)務需求,適應市場的變化[1]。
隨著SOA的大量應用,服務的安全管控方法是每個使用企業(yè)服務總線的企業(yè)都會面臨的問題。在面向服務架構(gòu)(SOA,Service-Oriented Architecture)中,業(yè)務是最核心的抽象手段,業(yè)務被劃分(組件化)為一系列粗粒度的業(yè)務服務和業(yè)務流程。其中,業(yè)務服務通過一個或者多個分布的系統(tǒng)、基于對象(Object)機制實現(xiàn),包含多個操作方法,業(yè)務流程由業(yè)務服務組裝而來[2]。
SOA服務協(xié)作過程中,為了實現(xiàn)標準化,一般會利用基于超文本傳輸協(xié)議(HTTP,Hyper Text Transfer Protocol)中的簡單對象訪問協(xié)議(SOAP,Simple Object Access Protocol)封裝消息,即業(yè)務信息,SOAP協(xié)議采用可擴展標記語言(XML,Extensible Markup Language)描述。當然,也可以利用其他傳輸協(xié)議封裝消息。
SOA服務協(xié)作模式一般采用請求-響應的阻塞模式。業(yè)務及流程是服務的識別和定義的基礎(chǔ),服務定義的原則是高內(nèi)聚、松耦合。服務采用基于對象的機制,包含多種業(yè)務操作。
隨著通信技術(shù)的發(fā)展以及企業(yè)間共享業(yè)務服務應用需求的增強,企業(yè)之間通過建立企業(yè)服務總線,在企業(yè)服務總線上開放來源于包括信息服務、功能服務、流程服務等多個系統(tǒng)的大量的服務,作為SOA架構(gòu)的重要組成部分,以消除不同應用之間的技術(shù)差異,使得不同的應用服務器協(xié)調(diào)運作,從而實現(xiàn)不同服務之間的通信與整合。
企業(yè)服務總線是一種開放的、基于標準的分布式同步或異步信息傳遞中間件,基于事件驅(qū)動和文檔導向,并支持內(nèi)容的路由和過濾,通過將業(yè)務邏輯封裝到中間件中,支持更為靈活的面向消息和面向事件的交互模式。
現(xiàn)有企業(yè)服務總線支持的服務的訪問控制一般采用WS-SECURITY的協(xié)議機制,該WSSECURITY提供在Web服務上應用安全方法的網(wǎng)絡(luò)傳輸協(xié)議,包含了關(guān)于如何在Web服務消息上保證完整性和機密性的規(guī)約。WS-SECURITY協(xié)議包括安全斷言標記語言(SAML,Security Assertion Markup Language)、Kerberos和認證證書格式(如X.509)使用的詳細信息。主要描述如何將簽名和加密頭加入SOAP消息頭以及如何在消息中加入安全令牌,包括二進制安全令牌,如X.509認證證書和Kerberos門票(ticket)[3]。
由上述可見,WS-SECURITY協(xié)議主要涉及:1)服務驗證(authentication)、2)數(shù)據(jù)完整性(data integrity)和 3)數(shù)據(jù)機密性(data con fidentiality),通過建立業(yè)務系統(tǒng)(服務消費者系統(tǒng))與企業(yè)服務總線間的認證關(guān)系,由企業(yè)服務總線上的WEB容器(Container)實現(xiàn)基于證書的認證,還不能提供完整的服務安全管控機制,例如,不能針對不同類型的服務消費者進行靈活的管理、審計,不能提供對具體服務的訪問控制和服務方法的訪問控制、以及認證信息如何被使用。而隨著SOA的大量應用,服務安全管控是每個使用企業(yè)服務總線的企業(yè)(服務消費者系統(tǒng))都會面臨的問題,舉例來說,以人員信息服務為例:服務消費者系統(tǒng)可以在企業(yè)服務總線上通過對業(yè)務的梳理和分析,獲取人員的服務信息,包括:人員基本信息、人員的工作分配信息、員工用工形式信息、員工獎懲信息、員工的專業(yè)資格信息、員工的薪酬信息等,這樣,在SOA服務協(xié)作的企業(yè)服務總線模式下,如果服務消費者通過證書的認證,則可以獲取人員的服務信息中的任何一種或多種信息,但實際應用中,對于人員基本信息、人員的工作分配信息、員工用工形式信息等,可以開放給大多數(shù)內(nèi)部管理系統(tǒng);而對于員工獎懲信息、員工的專業(yè)資格信息、員工的薪酬信息等,為較為敏感的信息,一般只能開放給少數(shù)指定的系統(tǒng)或服務消費者使用、查詢。因而,需要針對不同類型的服務消費者,提供不同的具體服務的訪問控制和服務方法的訪問控制,實現(xiàn)相應的服務安全管控[4,5]。
1995年,國際網(wǎng)安界最早提出4A(認證Authentication、賬號Account、授權(quán)Authorization、審計Audit)統(tǒng)一安全管理平臺解決方案概念,正式將身份認證作為整個網(wǎng)絡(luò)安全的基礎(chǔ)及不可或缺的組成部分,即將身份認證、授權(quán)、審計和賬號(即不可否認性及數(shù)據(jù)完整性)定義為網(wǎng)絡(luò)安全的四大組成部分,從而確立了身份認證在整個網(wǎng)絡(luò)安全系統(tǒng)中的地位與作用[6]。
將4A統(tǒng)一管控思想應用到企業(yè)服務總線的服務安全管控方法中,按照4A所包含的內(nèi)容,通過服務中介實現(xiàn)企業(yè)服務總線服務的安全管控方法,在服務消費者管理、服務的訪問授權(quán)、服務調(diào)用者與服務的訪問管理和服務訪問審計等方面形成的服務統(tǒng)一安全管控方法,將有效地彌補WSSECURITY協(xié)議的不足。
服務中介在服務請求者與已存在的服務之間起到中介和消息轉(zhuǎn)換的作用,服務中介使用包含中介流的服務中介模塊進行實現(xiàn)。如圖1所示。
圖1 以中介流實現(xiàn)的服務中介
在企業(yè)服務總線(ESB)上采用服務中介(Mediation)的方式對物理服務進行封裝。服務中介是一種代理機制,即服務消費者無法直接訪問服務提供者提供的服務(物理服務),而需要經(jīng)過企業(yè)服務總線訪問物理服務,屏蔽物理服務(服務提供者提供的服務)的細節(jié)。服務中介提供位置透明性的服務路由和定位服務,即服務消費者無需知道所調(diào)用的物理服務是哪個系統(tǒng)提供,無需知道對端IP和訪問URL地址,服務消費者只要知道服務總線上開放的服務既可,以上路由和定位都是由ESB實現(xiàn);有多種消息傳遞形式(支持SOAP、XML、甚至二進制數(shù)據(jù)等);支持廣泛使用的傳輸協(xié)議(web-service、http、https、FTP、JMS、plat file)。
在企業(yè)服務總線上建立服務安全管控中介,在每個業(yè)務服務中介中增加對安全管控中介的調(diào)用,對于每次服務消費者對服務的訪問請求,服務消費者把服務消費者ID、服務消費者密碼等安全認證信息嵌入到SOAP協(xié)議頭中,把服務調(diào)用請求發(fā)送到企業(yè)服務總線。
服務的安全管控機制需要包含服務消費者賬號管理方法、服務訪問認證方法、服務授權(quán)管理方法、服務訪問的安全審計方法等,以下對各個方法進行詳細介紹。
2.3.1 服務消費者賬號管理方法
在企業(yè)服務總線上建立服務賬號管理的信息源,采用數(shù)據(jù)庫或者LDAP或者文件或者其他的物理存儲形式,包含的信息項至少包括服務消費者(應用或者系統(tǒng))ID、服務消費者名稱、服務消費者訪問密碼(加密存儲)、密碼是否過期、密碼到期時間、服務消費者證書信息等信息。并提供維護該信息的功能。例如:對服務消費者賬號的增、刪、改、查操作。
2.3.2 通過建立服務授權(quán)項實現(xiàn)服務訪問的授權(quán)管理方法
在企業(yè)服務總線建立服務的授權(quán)項信息源,采用數(shù)據(jù)庫或者LDAP或者文件或者其他的物理存儲形式,包括的授權(quán)項至少包括:服務ID、服務名稱、服務端點地址、服務方法、服務消費者ID、是否允許訪問、訪問有效期等信息,并提供維護服務授權(quán)項信息的功能,例如:服務訪問授權(quán)、服務授權(quán)查詢、服務取消授權(quán)、服務授權(quán)設(shè)置有效期等功能。
2.3.3 通過服務安全管控中介實現(xiàn)對總線上的服務訪問認證流程及方法
在企業(yè)服務總線上建立服務安全管控中介,在每個業(yè)務服務中介中增加對安全管控中介的調(diào)用,對于每次服務消費者對服務的訪問請求,服務消費者把服務消費者ID、服務消費者密碼等安全認證信息嵌入到SOAP協(xié)議頭中,把服務調(diào)用請求發(fā)送到企業(yè)服務總線,業(yè)務服務中介(如圖2)在接收到訪問請求之后通過解析SOAP協(xié)議頭信息以及服務訪問信息,把訪問請求發(fā)送至安全管控中介(如圖2),安全管控中介使用服務消費者賬號信息、服務請求授權(quán)項信息進行認證和授權(quán)驗證,驗證通過后記錄服務訪問安全審計日志,通知業(yè)務服務中介調(diào)用物理服務并把訪問結(jié)果返回給服務消費者。如圖2所示。
1)服務消費者向服務總線發(fā)起服務訪問請求,服務消費者ID、服務消費者密碼等安全認證信息嵌入到SOAP協(xié)議頭中。以對HR的獲取人員信息服務的請求為例:
圖2 在企業(yè)服務總線上建立服務安全管控中介
圖3 HR的獲取人員信息服務的請求
該業(yè)務場景是通過服務獲取HR系統(tǒng)中員工編號為27007086的員工的信息,形象的描述:SOAP協(xié)議由SOAP信封、SOAP信息頭、SOAP信息體組成,SOAP信封主要描述的整個服務的命名空間“xmlns”以及調(diào)用的服務名稱:“EmployeeInfoService”,SOAP消息頭中增加了服務調(diào)用者的系統(tǒng)ID和服務調(diào)用者系統(tǒng)的密碼,見上圖紅色顯示的部分,其ID編號為“11”,密碼是明文加密后并使用Base64方式編碼的密碼。如果有必要,還可以根據(jù)信息增加驗證碼,用于校驗整個SOAP消息的校驗和,以避免有非法篡改消息體的信息攻擊;消息體中包含調(diào)用該服務的方法“getEmployeeInfoByEmployeeID”,以及員工編號輸入信息“員工編號是27007086”。采用在消息頭中而不在消息體中增加安全認證信息的優(yōu)點是不破壞業(yè)務的可讀性和完整性,消息體偏重在業(yè)務數(shù)據(jù),便于系統(tǒng)的業(yè)務整合。
2)企業(yè)服務總線的業(yè)務服務中介把服務請求的上下文信息傳遞到服務安全管控中介進行身份及訪問權(quán)限認證。
3)服務安全管控中介在服務訪問的請求上下文獲得服務消費者的ID及密碼,通過服務消費者賬號信息源進行身份認證,包括密碼是否正確,賬號在有效期內(nèi)等,在身份認證通過后進行服務訪問權(quán)限認證,從服務請求上下文獲得服務的端點地址和服務消費者調(diào)用服務方法(Method)。
4)服務安全管控中介在認證通過后把認證結(jié)果通知業(yè)務服務中介。
5)服務安全管控中介記錄本次服務訪問的訪問日志。
6)業(yè)務服務中介向服務提供者物理服務發(fā)起訪問請求,物理服務是現(xiàn)有系統(tǒng)開放出來的為其它的系統(tǒng)提供服務的業(yè)務功能,例如:人力資源中的員工信息服務(其method方法包括:獲取員工基本信息、獲取員工薪酬信息、獲取員工的聯(lián)系信息、獲取員工的獎懲信息等)、員工操作服務(其method方法包括:員工升遷任免、員工入職、員工離職、員工休假等);合同管理中的合同信息服務(其method方法包括:獲取合同基本信息、獲取合同文本、獲取合同審判記錄等)、合同操作服務(其method方法包括:合同創(chuàng)建、合同修改、合同銷毀等)。在信息系統(tǒng)的建設(shè)中,物理服務由各專業(yè)系統(tǒng)提供,其如何識別和定義采用一定的方法論,包括業(yè)務流程拆解法、目標系統(tǒng)定義法和現(xiàn)有資產(chǎn)接口分析法,因該分析方法非本發(fā)明探討的重點,不在本發(fā)明中做詳細描述。
7)服務訪問結(jié)果返回到企業(yè)服務總線。
8)服務訪問結(jié)果由企業(yè)服務總線返回到服務消費者。
服務安全管控中介在服務訪問過程中在企業(yè)服務總線生成服務訪問日志,采用數(shù)據(jù)庫表或者文件或者其他存儲的形式,至少包含服務消費者ID、服務訪問ID、訪問的服務方法(Method),服務訪問時間,服務認證是否成功等信息,同時提供統(tǒng)計查詢報表。通過服務訪問的統(tǒng)計查詢報表來滿足企業(yè)的服務訪問的安全審計要求。
通過服務中介實現(xiàn)的服務總線服務的安全管控方法,融合了統(tǒng)一用戶賬號管理、統(tǒng)一認證管理、統(tǒng)一授權(quán)管理和統(tǒng)一安全審計等四要素,能夠為企業(yè)提供功能完善的、高安全級別的企業(yè)服務總線上的安全管理,消除了不同應用之間的技術(shù)差異,在服務總線上開放了來源于多個系統(tǒng)大量的服務,包括信息服務、功能服務、流程服務等,使得不同的應用服務器得以安全協(xié)調(diào)運作,實現(xiàn)了不同服務之間的通信與整合。
[1]毛新生.SOA原理方法實踐[M],北京:電子工業(yè)出版社,2007.
[2]曹中洪,廉東本. 面向SOA的企業(yè)服務總線研究與應用[J].計算機系統(tǒng)應用,2010,(10):63-67.
[3]楊海斌. 基于WS-Security框架的Web服務安全解決方案[J]. 電腦編程技巧與維護,2009,(18) :102-103,109.
[4]李瑞,陶明.基于WS-Security的Web服務安全的實現(xiàn)[J].計算機與現(xiàn)代化,2008,(12):131-137.
[5]石偉鵬,楊小虎.基于SOAP協(xié)議的Web Service安全基礎(chǔ)規(guī)范(Web Security)[J],計算機應用研究,2003,20(2):100-102,105.
[6]李久洪.移動公司4A項目建設(shè)之我見[J].通信世界,2008,(23):24.