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