張莉莉,范寶德
(煙臺大學(xué)計算機與控制工程學(xué)院,山東 煙臺 264005)
在對軟件不斷開發(fā)和創(chuàng)新的過程中,人們越來越重視安全這個問題.信息在開放性的環(huán)境下必然會受到安全威脅,訪問控制機制居于網(wǎng)絡(luò)安全機制的核心地位,理應(yīng)受到高度重視,從而實現(xiàn)數(shù)據(jù)上的共享[1].為了解決這個問題,在建模時就要把訪問控制機制考慮進去,從而在很大程度上得到改善.
HIS(Hospital Information System)醫(yī)院信息系統(tǒng),利用計算機軟硬件技術(shù)、網(wǎng)絡(luò)通訊技術(shù)等先進手段,對醫(yī)院及其所屬各部門對人流、物流等進行全面管理,對在醫(yī)療活動各階段中產(chǎn)生的數(shù)據(jù)進行采集、存貯、處理、提取、傳輸、匯總、加工生成各種信息,從而為醫(yī)院的整體運動提供全面的、自動化的管理及各種服務(wù)[2].在這方面也需要增強其安全意識.
在對醫(yī)院信息系統(tǒng)建模時,需要用到的工具有UML、XACML、VPL,下面先具體介紹一下這些語言,通過對它們的描述使我們更深入的了解系統(tǒng)建模.
UML(Unified Modeling Language,統(tǒng)一建模語言),它是一種支持模型化和軟件開發(fā)的標(biāo)準(zhǔn)建模語言,功能是幫助用戶對軟件系統(tǒng)進行面向?qū)ο蟮拿枋龊徒?它可以描述軟件開發(fā)從需求分析、實現(xiàn)到測試的全過程.在對系統(tǒng)進行建模時,主要采用的是UML技術(shù),并以Rational Rose 2003為建模工具.通過UML的使用,可以更好的描述出軟件需求,消除主觀上產(chǎn)生的誤會.統(tǒng)一建模語言UML可以由5類模型圖來定義,分別是用例圖、靜態(tài)圖、行為圖、交互圖、實現(xiàn)圖.不同類型的模型圖描述的關(guān)系也不相同,針對需要選擇適合的模型圖.其中用例圖顯示了用戶與操作之間的關(guān)系.在用例圖中,由用例,參與者以及箭頭組成,通過箭頭來表示參與者與用例之間的關(guān)系.用例圖是以用戶的角度進行建模的,可以明顯的看出用戶的需求,以及方便用戶進行檢查.
XACML(eXtensible Access Control Markup Language,可擴展的訪問控制標(biāo)記語言),可以應(yīng)用在分布式環(huán)境下,對信息和資源進行保護.XACML可以建立一種可移植的、標(biāo)準(zhǔn)的方式來形容訪問控制實體及其屬性,同時可以提供一種機制,以比簡單的拒絕訪問、授權(quán)訪問更嚴格的控制訪問[3].它可以對信息進行保護,一旦外界有訪問消息時,就將這個消息中的屬性與包含在策略規(guī)則中的屬性進行比較,并判斷這個消息是被允許還是被拒絕,最后把這個響應(yīng)返回到相應(yīng)的地方進行操作,從而實現(xiàn)通過授權(quán)保護信息的目的.下面就來看一下XACML的流程圖(圖1),系統(tǒng)了解它是如何工作的.
圖1 XACML工作流程圖
當(dāng)外界有訪問消息時,通過策略執(zhí)行點(PEP)創(chuàng)建一個請求并將這個請求傳送到上下文處理器,上下文處理器根據(jù)策略信息點收集到的環(huán)境、資源及主體等的屬性進行查詢,將請求轉(zhuǎn)換成策略決策點(PDP)可以理解的決策請求,同時傳遞給PDP,通過評估這個請求,輸出相應(yīng)的結(jié)果即允許或拒絕,并返回響應(yīng).上下文處理器除上述作用外,還可以把PDP返回的授權(quán)決策轉(zhuǎn)換為訪問者能夠理解的形式.PDP在對請求進行評估時,依據(jù)現(xiàn)存的策略屬性與這個請求的屬性進行比較,而這些策略是存放在策略訪問點中的.在對訪問進行控制和授權(quán)時,主要的實體:subject,resource,action以及它們的屬性[4],并且這些信息都是存儲在訪問控制鏈表(ACL)中.通過這樣的授權(quán)方式,才能對訪問進行更好的控制,更能起到保護信息的作用[3].XACML策略包括規(guī)則、標(biāo)識符、義務(wù)和目標(biāo),同時一個策略可以與多條規(guī)則相關(guān)聯(lián),而每個策略只有一個目標(biāo),即確定策略是否與請求有關(guān),這直接關(guān)系著是否要為請求評估該策略[4].
VPL(View Policy Language,視圖策略語言),通過視圖對訪問控制策略進行管理.視圖規(guī)范了角色調(diào)用對象操作的權(quán)限,可以根據(jù)視圖進行訪問控制策略的建模,但是這些視圖只是對靜態(tài)的訪問進行描述,為了達到靜態(tài)和動態(tài)的授權(quán),所以在這里我們引入了VPL,它可以對策略進行行之有效的管理.基于視圖的訪問控制決策的工作原理是:當(dāng)一個角色想要通過它現(xiàn)存的操作訪問一個對象時,如果角色所擁有的視圖包含了這一操作,且操作對象屬于視圖的控制對象類型時,訪問被允許,否則被拒絕[5].通過視圖模型可以明顯的看到怎樣的訪問是被允許的,怎樣的訪問是被限制的,便于設(shè)計者們根據(jù)需求進行建模和軟件開發(fā).視圖可以實現(xiàn)訪問控制粒度細化、有條件授權(quán)的控制.通過VPL形式化描述安全模型,實現(xiàn)安全策略由VPL描述向通用的XACML描述的映射.
傳統(tǒng)的HIS是基于UML的建模,根據(jù)用戶需求和規(guī)定設(shè)置的用例圖.用例圖可以清楚地描述醫(yī)院內(nèi)部的總體結(jié)構(gòu).圖2是利用Rational Rose 2003軟件形成的,描述的是病人根據(jù)HIS由入院到治療的流程圖.
圖2 醫(yī)院信息系統(tǒng)用例圖
在上述的醫(yī)院信息系統(tǒng)用例圖中可以清楚地了解病人進行就醫(yī)時的程序,即病人進入醫(yī)院后,先到門診處進行掛號、登記,根據(jù)護士、醫(yī)生的診斷到相應(yīng)的部門進行就診,接受門診治療或是住院治療.如果進行的是門診治療,則需要根據(jù)掛號單上指定的門診部門找到相應(yīng)的醫(yī)生,按照要求進行必要的檢查,然后醫(yī)生根據(jù)檢查結(jié)果做出相應(yīng)的診判,開處方.接著病人拿著醫(yī)生開的藥單到門診收費處,根據(jù)醫(yī)療保險報銷的情況程度,進行相應(yīng)的繳費,結(jié)束后,拿著繳費單和藥單到藥局領(lǐng)取藥品.在這個過程中,已經(jīng)在醫(yī)療保險系統(tǒng)上進行了相應(yīng)的登記記錄.同時患者在進行選擇治療的同時,可以根據(jù)自己信任醫(yī)生的程度查詢相關(guān)醫(yī)生的信息,選擇醫(yī)生進行掛診治療;然后在病案管理系統(tǒng)內(nèi)登錄自己的相關(guān)信息,建立個人信息.如果需要進行住院治療,除了需要掛號、登記外,還需要辦理住院手續(xù),再由護士工作站判斷,醫(yī)生診療后安排到相應(yīng)的地方.并由護士通知用藥或進行處方取藥、手術(shù)檢查檢驗申請、預(yù)約,同時進行過程跟蹤處理.如果病人經(jīng)診斷后需要進行手術(shù),則由專門的手術(shù)醫(yī)生負責(zé),在相應(yīng)的手術(shù)室進行醫(yī)治.
以上各操作都是由不同的角色完成的.這個醫(yī)院信息系統(tǒng)在建模時根據(jù)實際行程,粗略地描述了醫(yī)院業(yè)務(wù)流程.它僅是對系統(tǒng)功能進行的描述,還不能反映系統(tǒng)的安全性,但是在實際建模中,我們必須要考慮到這一點.
通過對醫(yī)院信息系統(tǒng)的一個病歷子系統(tǒng)來分析一下它的安全性,見圖3.
圖3 病歷子系統(tǒng)用例圖
在這個醫(yī)院信息病歷子系統(tǒng)用例圖中,我們可以看到總共設(shè)置了3個角色:管理者(administrator),醫(yī)生(doctor)和病人(patient).從上圖中可以看到,administrator具有的權(quán)限是管理記錄(managerecord),doctor具有的權(quán)限是創(chuàng)建記錄(creatrecord),patient具有的權(quán)限是查看記錄(readrecord),同時administrator繼承了doctor,doctor繼承了patient.也就是說doctor能夠訪問到的權(quán)限,根據(jù)繼承的概念來說,administrator也可以訪問doctor的權(quán)限,同樣的,patient能夠訪問到的權(quán)限,doctor也可以訪問patient的權(quán)限.依據(jù)傳遞性依然有效的原則,具有最高繼承權(quán)的administrator也能夠通過doctor訪問到patient擁有的所有訪問權(quán)限.然而如果考慮到實際的安全問題,對于某些角色來說有些操作是不能被允許訪問的.在實際生活中,針對這3個角色,只有doctor具有訪問用例creatrecord的功能,而administrator不能擁有此權(quán)限.所以對于administrator來說,creatrecord就是禁止用例[6].單單依靠這樣的用例圖進行建模,就會存在安全隱患問題,最終帶來不必要的麻煩.
為了增加系統(tǒng)的安全性,系統(tǒng)開發(fā)者在進行建模時,應(yīng)該明確描述出角色擁有的操作權(quán)限,以及對哪些操作沒有相應(yīng)的訪問權(quán)限,在這個的基礎(chǔ)上,再對系統(tǒng)進行建模,見圖4.
圖4 安全系統(tǒng)的用例圖
如上所示,從安全要求的角度出發(fā),可以在角色和用例之間添加相應(yīng)的標(biāo)記,也就是擴展關(guān)聯(lián)為《拒絕》(?deny?).標(biāo)有?deny?的意思是指角色不具有對用例進行訪問的權(quán)限,此操作是被限制的.根據(jù)圖3中所顯示的安全缺陷,再結(jié)合XACML建立的安全系統(tǒng)模型中,可以看出雖然administrator繼承了doctor所擁有的權(quán)限,但是對creatrecord這個操作來說,administrator沒有對其進行訪問的權(quán)限.通過加入XACML,從而大大增加了系統(tǒng)的安全性.軟件設(shè)計者們對系統(tǒng)的安全建模是通過用例與用戶之間的關(guān)系來表示的.通過注釋,用通用的語言描述出來,既可以實現(xiàn)用戶所需要的要求又可以對數(shù)據(jù)進行保護.總而言之,我們通過擴展UML,把XACML集成到系統(tǒng)建模中,可以達到安全建模的作用.
當(dāng)外部有請求響應(yīng)時,在內(nèi)部進行處理的實際上是XACML文件.在生成這個文件時,是先對視圖進行分析的.為了實現(xiàn)動態(tài)的訪問控制,本文引入了VPL.視圖只是靜態(tài)的描述了角色與對象操作之間的關(guān)系,見圖5.
圖5 靜態(tài)視圖訪問控制模型
在上述靜態(tài)訪問控制模型中可以看到,creatrecord被分配給記錄(record)對象上的doctor角色,也就是說doctor對creatrecord是具有訪問權(quán)限的,同樣的,不能創(chuàng)建記錄(no creatrecord)被分配給record對象上的administrator角色,也就是說administrator對creatrecord是沒有訪問權(quán)限的.通過這個可以把角色和授權(quán)明顯的表示出來.視圖的重要性在于能及時發(fā)現(xiàn)所需模型和所建模型是不是一致的.如果要想實現(xiàn)動態(tài)的訪問控制模型,就需要VPL加以描述.一旦某個操作被調(diào)用后引起角色權(quán)限改變,VPL都可以清楚的描述出來.
VPL策略是由關(guān)鍵字policy開始,它對每個角色進行了聲明,角色聲明語句的關(guān)鍵詞holds后列舉了安全策略的涉及視圖,在關(guān)鍵詞on之后說明視圖針對的接口[6].VPL安全訪問控制策略定義如下:
policy record
roles
patient
doctor:patient
holds creatrecord on record
administrator:doctor
holds nocreatrecord on record
可以看到總共定義了3個角色:patient,doctor,和administrator.其中的冒號代表了繼承關(guān)系,也就是說doctor繼承了patient,administrator繼承了doctor.并為creatrecord視圖和no creatrecord視圖設(shè)置的接口為record.在視圖模型中,每個視圖產(chǎn)生一個與其自身有相同標(biāo)志和相同訪問權(quán)限的VPL定義,來進行訪問控制[6].定義如下:
view creatrecord1
controls record
restricted to doctor
{
allow
creatrecord
}
view creatrecord2
controls record
restricted to administrator
{
deny
creatrecord
}
定義的2個視圖creatrecord1和creatrecord2中,視圖控制的接口類型均為record.對于視圖creatrecord1來說,視圖指派的角色為doctor,且這個角色擁有對creatrecord的操作權(quán)限;對于視圖creatrecord2來說,視圖指派的角色為administrator,但是這個角色對creatrecord沒有操作權(quán)限.
通過生成的VPL視圖,可以進一步構(gòu)建XACML文件,在這個映射過程中,controls對應(yīng)resources,restricted to對應(yīng)subjects,而allow/deny對應(yīng)于actions,表示被授權(quán)或限制的訪問.通過這種映射關(guān)系,可以更好的融合UML和XACML進行醫(yī)院信息系統(tǒng)的建模.
文中,對UML,XACML以及VPL的特點進行分析,并且以醫(yī)院信息系統(tǒng)子系統(tǒng)為例,說明了UML存在的安全問題.結(jié)合這個問題,本文加入了XACML進行有注釋的安全建模,生成XACML的訪問控制策略,更有利于信息系統(tǒng)的保護,與之前的僅用UML進行建模相比,在安全性方面有了很大的提高.其中還簡單探討了VPL在建模中的應(yīng)用,從而實現(xiàn)訪問控制粒度細化、有條件授權(quán)的控制.基于以上的研究,融合UML與XACML的信息系統(tǒng)建模更具有應(yīng)用前景.但是這篇文章只是從訪問授權(quán)的角度予以描述,并沒有結(jié)合實驗加以證明,下一步將在此方向上進行完善.
參考文獻:
[1] 李景峰,李云鵬. 基于 XACML 的 EPCIS 訪問控制模型[J]. 計算機工程,2013,39(4): 180-183.
[2] 何菊.基于UML的醫(yī)院信息系統(tǒng)建模[J]. 醫(yī)學(xué)信息,2006,18(9): 1047-1049.
[3] Li Mengmeng,Fan Baode. The modeling of RBAC model based on UML and XACML[C]//Proceedings of 2012 International Conference on Systems and Informatics. Yantai:China IEEE,2012: 1533-1537.
[4] 李欣榮. XACML在控制信息訪問中的應(yīng)用[J]. 現(xiàn)代情報,2005,25(6): 101-103.
[5] 姚前,陳舜,謝立. 基于視圖的訪問控制語言VPL及其應(yīng)用[J]. 計算機科學(xué),2005,32(6): 206-209.
[6] 張賽男,殷兆麟,劉厚泉. 軟件系統(tǒng) UML 建模與其安全建模的集成[J]. 計算機工程,2007,33(8): 86-88.