張賽男
(中國人民解放軍理工大學 理學院,江蘇 南京 211100)
隨著Web服務的廣泛應用,Web服務中的訪問控制策略描述及實現顯得尤為重要。目前,Web服務安全標準以及其實現并不完善,Web服務安全多數交由作為應用程序服務器的Web服務器的安全機制管理。例如,Tomcat服務器為用戶、組、角色的管理和為訪問Java-Web應用程序的權限提供了安全管理。但是,Tomcat中的授權是粗粒度的,也就是說,Tomcat不可能限制對Web服務的單個的訪問操作。
本文通過示例,探討如何把一種新的安全模型應用到Web服務中。這種新的安全模型提供了一種規范語言——視圖策略語言,其授權可以在Web服務單個的操作層次上細粒度地指定,同時授權還可以通過操作的調用動態地改變。這種模型和Web服務相結合,能夠實現Web服務下安全訪問控制權限的動態改變,改善目前靜態訪問控制的問題。
圖書中心系統是一個Web服務的簡單應用,其結構如圖1所示。
圖書中心系統主要提供書店注冊服務、書店客戶注冊服務、書店處理客戶注冊請求服務、書店管理客戶借閱圖書信息服務和為所有的用戶查詢圖書信息的服務。其中書店注冊是其他所有服務的前提條件。
圖書中心系統的訪問控制需求描述如下:
BusinessRegistration:書店經理注冊自己的書店。這個注冊是其他所有服務的前提條件。
CustomerRegistration:書店的客戶向書店提交注冊申請。
CustomerRegistrationProcess:書店處理客戶的注冊申請。
CustomerBookList:書店僅能為自己的客戶使用此服務。客戶可以查詢己借閱清單,但不能在此清單上添加新的請求,只有店員可以添加客戶的借閱清單。
BookSearch:店員和客戶都能使用此服務查詢圖書信息。
基于視圖的訪問控制VBAC(View-BasedAccess Control)模型是專門用于支持分布式訪問控制策略的設計和管理的模型[1],圖2是VBAC的簡易模型。VBAC模型可以看成是基于角色的訪問控制RBAC(Role-Based Access Control)模型的擴展,VBAC增加了視圖以及模式的概念。視圖描述的是對訪問對象的授權,視圖被分配給角色。如果一個主體所扮演的角色擁有對某個對象訪問的視圖,則這個主體就可以訪問此對象。如果這個角色沒有這個視圖,則這個主體就不能訪問此對象。模式描述的是視圖和角色動態的分配以及刪除。

圖2 VBAC模型
視圖策略語言VPL(View Policy Language)是一種說明性的語言,用于描述VBAC策略。VPL用于描述角色、視圖以及模式。角色在角色聲明roles之后,視圖以及模式聲明使用關鍵字view和schema。
角色聲明描述了策略中的角色以及這些角色初始擁有的視圖。圖3是圖書中心的角色聲明。這個例子中有customer和staff兩個角色。 staff繼承了customer,customer能夠調用的操作,staff也可以調用。staff擁有初始視圖 BusinessRegistratoin,關鍵字holds來說明角色擁有視圖,而customer沒有初始視圖。

圖3 VPL角色聲明
圖4是圖書中心的訪問控制需求的VPL視圖聲明,關鍵字controls引導的是一個類或者接口。例如,視圖BusinessRegistration允許調用類BusinessRegistration的操作processRegisterRequest。VPL視圖可以靜態地被限制給特定的角色,這些角色羅列在關鍵字restricted to后面。例如,視圖BusinessRegistration只能被賦給角色staff而不能賦給 customer。
VPL對被描述的授權操作的參數沒有限制,即不需要全部參數才能調用某個操作。例如,調用操作getCustomerGUID僅需要書店的loginBusinessID就能獲取到自己書店的所有客戶的信息。因為,書店在注冊以后有對應的loginBusinessID。由于基于CORBA的應用程序,都會采取為每個客戶端在服務器端創建一個對象的設計模式。因此,客戶端與創建的對象進行通信無需身份驗證。例如,在這個例子中,每個客戶端在服務器端都有一個CustomerRegistrationProcess對象,由于SOAP對面向對象支持的局限性,將loginBusinessID作為一個參數給出。

圖4 VPL視圖定義
因此,研究擴展VPL來說明操作被調用的時候所必須具備的條件是在操作后添加if caller=param來指定必備條件。這個表達式中,關鍵字caller表示此操作調用者的ID,param表示操作的實參。調用者由一個整數表示其身份。如果操作的某個參數不是必須的,用”-”表示;如果視圖中操作參數沒有任何條件限制,則VPL視圖中僅有操作名稱的標識符,而沒有參數列表。例如,視圖BusinessRegistration中的操作processRegisterProcess就屬于這一類型。
依據服務 CustomerBookList,角色 staff和 customer有不同的訪問需求。staff可以調用processAddRequest以及processQueryRequest兩個操作,但是customer僅能調用processQueryRequest。視圖CustomerBookListFull確定其使用角色是staff,可以擁有兩個操作,而CustomerBookListRestricted沒有角色的限制。如果視圖被調用,customer僅能查詢自己借閱的書。
VPL模式(VPL Schema)為動態訪問控制建立模型。它描述給定的操作被調用后帶來角色授權的改變,而角色不能擁有某個視圖,用assign視圖from角色表示;反之,用assign視圖to角色表示。圖5表示調用完操作processRegisterRequest后,將CustomerRegistrationProcess等視圖授權給角色staff,而將CustomerBookListRestricted等視圖授權給角色customer,即表示了訪問控制權限動態地改變。

圖5 VPL模式聲明
這部分描述在Web服務下執行VPL表示的訪問控制策略的基礎結構。這個結構中包含了執行VPL所描述策略的Raccoon[2]結構。
Raccoon結構包含了處理VPL策略的開發工具以及定義角色視圖的存儲庫(即角色、視圖服務器)。視圖角色服務器可以使用圖形管理工具來處理,訪問控制決策依據這些存儲庫來決定。
圖6為Raccoon結構的主要部分。角色服務器包含了用戶所有的角色證書,當一個客戶在系統中認證時,客戶得到所有屬于自己的角色證書;而當客戶端調用服務器端的某個操作時,相應的角色證書被傳送。此調用由攔截器攔截,攔截器傳送客戶端信息給訪問決策對象。如果客戶端被準許調用此操作,訪問決策對象依據給出的角色以及策略來決策。請求策略分布在服務器上,如果策略允許客戶調用操作,那么攔截器給服務器發送一個請求;如果不允許,則此訪問被拒絕。

圖6 Raccoon結構
Web服務訪問控制的實現使用Raccoon來管理和執行VPL策略,即通過獲取SOAP消息,讓Raccoon做出訪問控制的決策,依賴于Raccoon的決策,來拒絕或者發送SOAP消息。因為消息在服務器端加密,客戶證書在服務器端傳輸,因此把HTTP作為傳輸協議。
2.2.1 Web服務部署
此結構中,把Web服務部署在Apache Tomcat服務器上,同時使用Axis引擎。Axis本質上是一個SOAP引擎,提供創建服務器端、客戶端和網關SOAP操作的基本框架[3]。使用 Axis是為了利用 Axis handler概念。handler是SOAP消息的特殊部分,例如,handler可以控制消息發送方在允許消息被服務器處理之前對其執行身份驗證。
2.2.2策略部署
Web服務的VPL策略部署在策略服務器中。由于Raccoon是基于CORBA的,所以部署VPL策略需要CORBA接口庫。接口使用IDL語言描述,IDL語言由WSDL演變而來。這種演變可以由XSL樣式表轉換,例如,WSDL中 portTypes對應了 IDL的 interfaces,operations對應了 IDL的operations,WSDL操作中<input>元素對應了 IDL中的參數 in,<output>對應了 IDL中的參數 out。
2.2.3用于訪問決策的Axis handler
Axis handler充當CORBA客戶端與角色以及策略服務器通信的中介。當 SOAP消息通過 handler,handler從SOAP消息中獲取用戶信息(如證書)以及請求的方法名以及參數。這些證書用于從Raccoon角色服務器中獲取用戶的角色證書。角色服務器中存放了用戶證書和角色之間的關系。策略服務器包含了視圖以及視圖和角色之間的關聯。基于客戶角色,handler決定是否允許訪問Web服務操作。如果訪問被拒絕,將拋出異常;否則,SOAP消息被發送給Web服務。
本文使用VPL來描述Web服務的訪問控制需求。VPL以及相應的訪問控制模型來源于基于CORBA的應用。通過擴展VPL來覆蓋所有的Web服務需求。提出了一種用于實現基于Web應用的訪問控制策略的結構,同時也為Web服務安全管理提供部署和管理工具。
VPL可以用于描述XACML規范,可以通過樣式表將VPL轉換成XACML。后期工作主要集中于將Raccoon結構轉化為XACML模型,為其他系統提供互操作性,例如 jiffyXACML或者 sun’sXACML。
[1]張賽男.軟件系統UML建模與其安全建模的集成[J].計算機工程,2007,33(8),86-88.
[2]BROSE G.Raccoon-an infrastructure for managing access control in CORBA[C].Proceeding Conference on Distributed Applications and Interoperable Systems (DAIS), Paris,France,2004.
[3]PAPAZOGLOU M P.Web服務:原理與技術[M].龔玲,張云濤,譯.北京:機械工業出版社,2010.