張賽男
(中國人民解放軍理工大學(xué) 理學(xué)院,江蘇 南京 211100)
隨著Web服務(wù)的廣泛應(yīng)用,Web服務(wù)中的訪問控制策略描述及實(shí)現(xiàn)顯得尤為重要。目前,Web服務(wù)安全標(biāo)準(zhǔn)以及其實(shí)現(xiàn)并不完善,Web服務(wù)安全多數(shù)交由作為應(yīng)用程序服務(wù)器的Web服務(wù)器的安全機(jī)制管理。例如,Tomcat服務(wù)器為用戶、組、角色的管理和為訪問Java-Web應(yīng)用程序的權(quán)限提供了安全管理。但是,Tomcat中的授權(quán)是粗粒度的,也就是說,Tomcat不可能限制對(duì)Web服務(wù)的單個(gè)的訪問操作。
本文通過示例,探討如何把一種新的安全模型應(yīng)用到Web服務(wù)中。這種新的安全模型提供了一種規(guī)范語言——視圖策略語言,其授權(quán)可以在Web服務(wù)單個(gè)的操作層次上細(xì)粒度地指定,同時(shí)授權(quán)還可以通過操作的調(diào)用動(dòng)態(tài)地改變。這種模型和Web服務(wù)相結(jié)合,能夠?qū)崿F(xiàn)Web服務(wù)下安全訪問控制權(quán)限的動(dòng)態(tài)改變,改善目前靜態(tài)訪問控制的問題。
圖書中心系統(tǒng)是一個(gè)Web服務(wù)的簡單應(yīng)用,其結(jié)構(gòu)如圖1所示。
圖書中心系統(tǒng)主要提供書店注冊服務(wù)、書店客戶注冊服務(wù)、書店處理客戶注冊請(qǐng)求服務(wù)、書店管理客戶借閱圖書信息服務(wù)和為所有的用戶查詢圖書信息的服務(wù)。其中書店注冊是其他所有服務(wù)的前提條件。
圖書中心系統(tǒng)的訪問控制需求描述如下:
BusinessRegistration:書店經(jīng)理注冊自己的書店。這個(gè)注冊是其他所有服務(wù)的前提條件。
CustomerRegistration:書店的客戶向書店提交注冊申請(qǐng)。
CustomerRegistrationProcess:書店處理客戶的注冊申請(qǐng)。
CustomerBookList:書店僅能為自己的客戶使用此服務(wù)??蛻艨梢圆樵兗航栝喦鍐?,但不能在此清單上添加新的請(qǐng)求,只有店員可以添加客戶的借閱清單。
BookSearch:店員和客戶都能使用此服務(wù)查詢圖書信息。
基于視圖的訪問控制VBAC(View-BasedAccess Control)模型是專門用于支持分布式訪問控制策略的設(shè)計(jì)和管理的模型[1],圖2是VBAC的簡易模型。VBAC模型可以看成是基于角色的訪問控制RBAC(Role-Based Access Control)模型的擴(kuò)展,VBAC增加了視圖以及模式的概念。視圖描述的是對(duì)訪問對(duì)象的授權(quán),視圖被分配給角色。如果一個(gè)主體所扮演的角色擁有對(duì)某個(gè)對(duì)象訪問的視圖,則這個(gè)主體就可以訪問此對(duì)象。如果這個(gè)角色沒有這個(gè)視圖,則這個(gè)主體就不能訪問此對(duì)象。模式描述的是視圖和角色動(dòng)態(tài)的分配以及刪除。
圖2 VBAC模型
視圖策略語言VPL(View Policy Language)是一種說明性的語言,用于描述VBAC策略。VPL用于描述角色、視圖以及模式。角色在角色聲明roles之后,視圖以及模式聲明使用關(guān)鍵字view和schema。
角色聲明描述了策略中的角色以及這些角色初始擁有的視圖。圖3是圖書中心的角色聲明。這個(gè)例子中有customer和staff兩個(gè)角色。 staff繼承了customer,customer能夠調(diào)用的操作,staff也可以調(diào)用。staff擁有初始視圖 BusinessRegistratoin,關(guān)鍵字holds來說明角色擁有視圖,而customer沒有初始視圖。
圖3 VPL角色聲明
圖4是圖書中心的訪問控制需求的VPL視圖聲明,關(guān)鍵字controls引導(dǎo)的是一個(gè)類或者接口。例如,視圖BusinessRegistration允許調(diào)用類BusinessRegistration的操作processRegisterRequest。VPL視圖可以靜態(tài)地被限制給特定的角色,這些角色羅列在關(guān)鍵字restricted to后面。例如,視圖BusinessRegistration只能被賦給角色staff而不能賦給 customer。
VPL對(duì)被描述的授權(quán)操作的參數(shù)沒有限制,即不需要全部參數(shù)才能調(diào)用某個(gè)操作。例如,調(diào)用操作getCustomerGUID僅需要書店的loginBusinessID就能獲取到自己書店的所有客戶的信息。因?yàn)?,書店在注冊以后有?duì)應(yīng)的loginBusinessID。由于基于CORBA的應(yīng)用程序,都會(huì)采取為每個(gè)客戶端在服務(wù)器端創(chuàng)建一個(gè)對(duì)象的設(shè)計(jì)模式。因此,客戶端與創(chuàng)建的對(duì)象進(jìn)行通信無需身份驗(yàn)證。例如,在這個(gè)例子中,每個(gè)客戶端在服務(wù)器端都有一個(gè)CustomerRegistrationProcess對(duì)象,由于SOAP對(duì)面向?qū)ο笾С值木窒扌?,將loginBusinessID作為一個(gè)參數(shù)給出。
圖4 VPL視圖定義
因此,研究擴(kuò)展VPL來說明操作被調(diào)用的時(shí)候所必須具備的條件是在操作后添加if caller=param來指定必備條件。這個(gè)表達(dá)式中,關(guān)鍵字caller表示此操作調(diào)用者的ID,param表示操作的實(shí)參。調(diào)用者由一個(gè)整數(shù)表示其身份。如果操作的某個(gè)參數(shù)不是必須的,用”-”表示;如果視圖中操作參數(shù)沒有任何條件限制,則VPL視圖中僅有操作名稱的標(biāo)識(shí)符,而沒有參數(shù)列表。例如,視圖BusinessRegistration中的操作processRegisterProcess就屬于這一類型。
依據(jù)服務(wù) CustomerBookList,角色 staff和 customer有不同的訪問需求。staff可以調(diào)用processAddRequest以及processQueryRequest兩個(gè)操作,但是customer僅能調(diào)用processQueryRequest。視圖CustomerBookListFull確定其使用角色是staff,可以擁有兩個(gè)操作,而CustomerBookListRestricted沒有角色的限制。如果視圖被調(diào)用,customer僅能查詢自己借閱的書。
VPL模式(VPL Schema)為動(dòng)態(tài)訪問控制建立模型。它描述給定的操作被調(diào)用后帶來角色授權(quán)的改變,而角色不能擁有某個(gè)視圖,用assign視圖from角色表示;反之,用assign視圖to角色表示。圖5表示調(diào)用完操作processRegisterRequest后,將CustomerRegistrationProcess等視圖授權(quán)給角色staff,而將CustomerBookListRestricted等視圖授權(quán)給角色customer,即表示了訪問控制權(quán)限動(dòng)態(tài)地改變。
圖5 VPL模式聲明
這部分描述在Web服務(wù)下執(zhí)行VPL表示的訪問控制策略的基礎(chǔ)結(jié)構(gòu)。這個(gè)結(jié)構(gòu)中包含了執(zhí)行VPL所描述策略的Raccoon[2]結(jié)構(gòu)。
Raccoon結(jié)構(gòu)包含了處理VPL策略的開發(fā)工具以及定義角色視圖的存儲(chǔ)庫(即角色、視圖服務(wù)器)。視圖角色服務(wù)器可以使用圖形管理工具來處理,訪問控制決策依據(jù)這些存儲(chǔ)庫來決定。
圖6為Raccoon結(jié)構(gòu)的主要部分。角色服務(wù)器包含了用戶所有的角色證書,當(dāng)一個(gè)客戶在系統(tǒng)中認(rèn)證時(shí),客戶得到所有屬于自己的角色證書;而當(dāng)客戶端調(diào)用服務(wù)器端的某個(gè)操作時(shí),相應(yīng)的角色證書被傳送。此調(diào)用由攔截器攔截,攔截器傳送客戶端信息給訪問決策對(duì)象。如果客戶端被準(zhǔn)許調(diào)用此操作,訪問決策對(duì)象依據(jù)給出的角色以及策略來決策。請(qǐng)求策略分布在服務(wù)器上,如果策略允許客戶調(diào)用操作,那么攔截器給服務(wù)器發(fā)送一個(gè)請(qǐng)求;如果不允許,則此訪問被拒絕。
圖6 Raccoon結(jié)構(gòu)
Web服務(wù)訪問控制的實(shí)現(xiàn)使用Raccoon來管理和執(zhí)行VPL策略,即通過獲取SOAP消息,讓Raccoon做出訪問控制的決策,依賴于Raccoon的決策,來拒絕或者發(fā)送SOAP消息。因?yàn)橄⒃诜?wù)器端加密,客戶證書在服務(wù)器端傳輸,因此把HTTP作為傳輸協(xié)議。
2.2.1 Web服務(wù)部署
此結(jié)構(gòu)中,把Web服務(wù)部署在Apache Tomcat服務(wù)器上,同時(shí)使用Axis引擎。Axis本質(zhì)上是一個(gè)SOAP引擎,提供創(chuàng)建服務(wù)器端、客戶端和網(wǎng)關(guān)SOAP操作的基本框架[3]。使用 Axis是為了利用 Axis handler概念。handler是SOAP消息的特殊部分,例如,handler可以控制消息發(fā)送方在允許消息被服務(wù)器處理之前對(duì)其執(zhí)行身份驗(yàn)證。
2.2.2策略部署
Web服務(wù)的VPL策略部署在策略服務(wù)器中。由于Raccoon是基于CORBA的,所以部署VPL策略需要CORBA接口庫。接口使用IDL語言描述,IDL語言由WSDL演變而來。這種演變可以由XSL樣式表轉(zhuǎn)換,例如,WSDL中 portTypes對(duì)應(yīng)了 IDL的 interfaces,operations對(duì)應(yīng)了 IDL的operations,WSDL操作中<input>元素對(duì)應(yīng)了 IDL中的參數(shù) in,<o(jì)utput>對(duì)應(yīng)了 IDL中的參數(shù) out。
2.2.3用于訪問決策的Axis handler
Axis handler充當(dāng)CORBA客戶端與角色以及策略服務(wù)器通信的中介。當(dāng) SOAP消息通過 handler,handler從SOAP消息中獲取用戶信息(如證書)以及請(qǐng)求的方法名以及參數(shù)。這些證書用于從Raccoon角色服務(wù)器中獲取用戶的角色證書。角色服務(wù)器中存放了用戶證書和角色之間的關(guān)系。策略服務(wù)器包含了視圖以及視圖和角色之間的關(guān)聯(lián)?;诳蛻艚巧琱andler決定是否允許訪問Web服務(wù)操作。如果訪問被拒絕,將拋出異常;否則,SOAP消息被發(fā)送給Web服務(wù)。
本文使用VPL來描述Web服務(wù)的訪問控制需求。VPL以及相應(yīng)的訪問控制模型來源于基于CORBA的應(yīng)用。通過擴(kuò)展VPL來覆蓋所有的Web服務(wù)需求。提出了一種用于實(shí)現(xiàn)基于Web應(yīng)用的訪問控制策略的結(jié)構(gòu),同時(shí)也為Web服務(wù)安全管理提供部署和管理工具。
VPL可以用于描述XACML規(guī)范,可以通過樣式表將VPL轉(zhuǎn)換成XACML。后期工作主要集中于將Raccoon結(jié)構(gòu)轉(zhuǎn)化為XACML模型,為其他系統(tǒng)提供互操作性,例如 jiffyXACML或者 sun’sXACML。
[1]張賽男.軟件系統(tǒng)UML建模與其安全建模的集成[J].計(jì)算機(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,F(xiàn)rance,2004.
[3]PAPAZOGLOU M P.Web服務(wù):原理與技術(shù)[M].龔玲,張?jiān)茲?,譯.北京:機(jī)械工業(yè)出版社,2010.