摘 要: 基于角色的訪問控制是目前應(yīng)用在系統(tǒng)控制用戶訪問中比較主流的一門技術(shù)。在此針對(duì)醫(yī)療系統(tǒng)的特點(diǎn),在基于角色的訪問控制模型的基礎(chǔ)上,分析醫(yī)療系統(tǒng)中的訪問主體和客體,引入角色,將權(quán)限和角色相關(guān)聯(lián),重點(diǎn)研究不同用戶對(duì)記錄的訪問控制,提出一個(gè)訪問控制算法,通過分配用戶適當(dāng)?shù)慕巧缓笫谟栌脩暨m當(dāng)?shù)脑L問權(quán)限,使用戶和訪問權(quán)限邏輯分離,從而提高了在醫(yī)療系統(tǒng)中權(quán)限分配和訪問控制的靈活性與安全性。
關(guān)鍵詞: RBAC; 權(quán)限訪問控制; 醫(yī)療系統(tǒng); 訪問控制算法
中圖分類號(hào): TN964?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2013)24?0025?04
Research and application of role?based access control model in medical system
YANG Guang?ming, LI Xian?guo
(Northwestern Polytechnical University, Xi’an 710000, China)
Abstract:Role?based access control (RBAC) is a mainstream technology applied to the system control user access. According to the characteristics of the medical system, an access control algorithm is put forward in this paper. On the basis of RBAC model, the access subject and object in the medical system is analyzed, the role is introduced into the system, the permissions is associated with role, and the control for different users’ access to records is investigated emphatically. by assigning a role to the appropriate user, then confering an appropriate access privilege on the user, and making the user and access logic separated, the flexibility and security of the permission assignment and access control in the medical system are improved.
Keywords: RBAC; authorized access control; medical system; access control algorithm
0 引 言
隨著計(jì)算機(jī)互聯(lián)網(wǎng)技術(shù)的發(fā)展和醫(yī)療技術(shù)水平的提高,病人迫切需要在家里就能接受醫(yī)院的治療。這就迫切需要構(gòu)建一個(gè)醫(yī)療系統(tǒng)。通過這個(gè)系統(tǒng),病人、醫(yī)生、護(hù)士、病人的家人和朋友都能共享醫(yī)療信息資源。醫(yī)生和護(hù)士能通過系統(tǒng)查看病人的文檔,并對(duì)病人做出診斷。病人可以通過系統(tǒng)委托其他用戶成為自己的監(jiān)護(hù)人,全權(quán)管理自己的權(quán)限。病人的家人和朋友可以在病人授權(quán)容許的范圍內(nèi)查看有限的信息。整個(gè)系統(tǒng)對(duì)用戶的權(quán)限有較高的限制要求,既不容許用戶訪問授權(quán)外的信息,也不容許用戶查看不到授權(quán)內(nèi)的信息。
由于醫(yī)療系統(tǒng)的用戶數(shù)量龐大,所以權(quán)限管理在整個(gè)醫(yī)療系統(tǒng)設(shè)計(jì)中,起著至關(guān)重要的作用。在權(quán)限管理中,訪問控制是實(shí)現(xiàn)整個(gè)權(quán)限的核心內(nèi)容,它是實(shí)現(xiàn)數(shù)據(jù)保密性和完整性機(jī)制的主要手段[1]。在整個(gè)醫(yī)療系統(tǒng)中,用戶對(duì)記錄的訪問是非常頻繁的,而且記錄具有私密性,沒授權(quán)的用戶是不容許訪問的。用戶對(duì)記錄的訪問在整個(gè)權(quán)限管理又是處于重中之重的地位。但是傳統(tǒng)的兩種訪問控制,已無法滿足這個(gè)醫(yī)療系統(tǒng)的需求,因?yàn)閭鹘y(tǒng)的訪問機(jī)制都是對(duì)系統(tǒng)中所有用戶的權(quán)限進(jìn)行直接的管理,這樣的權(quán)限管理既復(fù)雜又不靈活,如果記錄信息膨脹的話,系統(tǒng)就難以管理和維護(hù)。基于角色的訪問控制(Role?Based Access Control,RBAC)是解決大型企業(yè)統(tǒng)一資源訪問控制的有效方法[2]。基于角色的訪問控制,是通過分配和取消用戶的角色來完成用戶權(quán)限的授予和取消,使用戶與訪問權(quán)限在邏輯上分離[3]。本文主要利用基于角色的權(quán)限訪問控制模型,研究和實(shí)現(xiàn)用戶在醫(yī)療系統(tǒng)中的權(quán)限訪問控制,重點(diǎn)研究不同用戶對(duì)不同記錄(Record)訪問控制問題。
1 RBAC模型的概述
角色訪問控制是介于自主訪問控制和強(qiáng)制訪問控制之間的一種訪問控制技術(shù)。角色訪問在20世紀(jì)70年代就有人提出,只是最近才有人提出形式化的角色模型。其中最有影響的是Sandhu在1996年提出的形式化模型[4]。基于角色的訪問控制模型可以簡(jiǎn)單地用圖1來表示[5]。在此模型中,包括4個(gè)基本的要素:用戶、角色、權(quán)限和授予。用戶就是正在登陸系統(tǒng)的人或主機(jī),角色就是用戶在系統(tǒng)和組織中執(zhí)行的操作的集合,執(zhí)行這些操作時(shí)就代表著系統(tǒng)和組織的一個(gè)角色,權(quán)限就是主體訪問客體時(shí)的認(rèn)可,權(quán)限代表了主體是否可以對(duì)客體進(jìn)行某種操作[6?8]。它的基本思想是用戶被授予角色,系統(tǒng)通過用戶所授予的角色決定其權(quán)限[9]。模型中用戶可以被授予多個(gè)角色,同時(shí)一個(gè)角色也可以被多個(gè)用戶所擁有。同樣,角色和權(quán)限也是多對(duì)多的關(guān)系[10]。
圖1 基于角色的訪問控制(RBAC)模型
2 醫(yī)療系統(tǒng)中權(quán)限管理的分析與設(shè)計(jì)
2.1 醫(yī)療系統(tǒng)的應(yīng)用模型分析
基于角色的訪問控制模型主要需處理好用戶、角色、權(quán)限和它們之間的關(guān)系。在醫(yī)療系統(tǒng)中,用戶對(duì)記錄的訪問是整個(gè)系統(tǒng)的核心內(nèi)容。
2.1.1 用戶分析
用戶是在醫(yī)療系統(tǒng)中擁有賬號(hào)的一個(gè)使用者,也有可能是游客。他可以在平臺(tái)里擁有多個(gè)角色。例如:用戶可以是一名病人,同時(shí)他也可以是一名醫(yī)療機(jī)構(gòu)的管理員,甚至他本身就是醫(yī)生,同時(shí)他也可以是其他病人的監(jiān)護(hù)人或者普通的家人和朋友。
2.1.2 角色分析
在實(shí)現(xiàn)系統(tǒng)訪問控制模塊時(shí)定義了平臺(tái)管理員(Platform Administrator,PA)、機(jī)構(gòu)管理員(Agency Administrator,AA)、機(jī)構(gòu)用戶(Agency User,AU)、病人(Patient,P)、家人和朋友(Family and Friends,F(xiàn))等多個(gè)角色。整個(gè)系統(tǒng)都是以病人為中心,所有角色都是為病人服務(wù)的。
(1)平臺(tái)管理員,負(fù)責(zé)醫(yī)療系統(tǒng)平臺(tái)的日常管理工作。他的一項(xiàng)重要的工作是創(chuàng)建其他的用戶,特別是創(chuàng)建醫(yī)療機(jī)構(gòu)并加入這個(gè)醫(yī)療系統(tǒng)。整個(gè)醫(yī)療系統(tǒng)可以由多個(gè)醫(yī)療機(jī)構(gòu)組成。
(2)機(jī)構(gòu)管理員,負(fù)責(zé)醫(yī)療機(jī)構(gòu)的日常管理工作。他的一項(xiàng)重要的工作是添加其他的用戶成為本機(jī)構(gòu)的用戶,并且設(shè)置他們的權(quán)限。
(3)機(jī)構(gòu)用戶,是醫(yī)療機(jī)構(gòu)的主要成員。他們是負(fù)責(zé)日常的醫(yī)療管理,主要是指護(hù)士和醫(yī)生。機(jī)構(gòu)用戶不能添加其他的用戶。
(4)病人,是醫(yī)療服務(wù)的對(duì)象。他由醫(yī)療機(jī)構(gòu)管理員添加到醫(yī)療機(jī)構(gòu),并安排醫(yī)生和護(hù)士加入其護(hù)理組。
(5)家人和朋友,他們由病人邀請(qǐng)進(jìn)病人的護(hù)理組,并賦予權(quán)限決定是否能夠訪問或修改病人信息。
2.1.3 權(quán)限分析
本文重點(diǎn)研究的內(nèi)容是不同用戶對(duì)不同記錄的訪問控制問題。在設(shè)計(jì)的醫(yī)療系統(tǒng)中,病人的記錄分為team_note,resume,plan_of_care,life_doc,health_record,office_visit,medication,resource_lib等8大類。病人為自己創(chuàng)建一個(gè)護(hù)理組,機(jī)構(gòu)管理員、機(jī)構(gòu)用戶、家人和朋友只有在病人的護(hù)理組里才能查看病人的記錄。不同類型的用戶對(duì)病人的記錄具有不同的訪問權(quán)限。
首先,用戶要訪問病人的文檔,這個(gè)用戶一定是在這個(gè)病人的護(hù)理組里。其次要根據(jù)用戶不同的角色決定其權(quán)限,機(jī)構(gòu)用戶的訪問權(quán)限,由機(jī)構(gòu)管理員默認(rèn)設(shè)置,比如醫(yī)生和護(hù)士的訪問權(quán)限是不同的,醫(yī)生可以讀寫病人的病歷,而護(hù)士就只能讀他的病歷,這個(gè)權(quán)限的設(shè)置就由他們所在的機(jī)構(gòu)管理員設(shè)置的;病人的家人或朋友的訪問權(quán)限,由病人設(shè)置權(quán)限。
2.2 權(quán)限管理的數(shù)據(jù)庫設(shè)計(jì)
在設(shè)計(jì)數(shù)據(jù)庫時(shí),為系統(tǒng)建立用戶表、病人表、機(jī)構(gòu)表、機(jī)構(gòu)成員表、角色表、護(hù)理組表、權(quán)限表、記錄表和角色權(quán)限表等幾個(gè)表。
(1)用戶表,存儲(chǔ)該系統(tǒng)中所有用戶的信息。用戶表的設(shè)計(jì)如表1所示。
表1 用戶表
(2)病人表,存儲(chǔ)該系統(tǒng)中所有病人的信息。病人表的設(shè)計(jì)如表2所示。
表2 病人表
(3)機(jī)構(gòu)表,存儲(chǔ)該系統(tǒng)中所有機(jī)構(gòu)的信息。機(jī)構(gòu)表的設(shè)計(jì)如表3所示。
表3 機(jī)構(gòu)表
(4)角色表,存儲(chǔ)該系統(tǒng)中的角色。角色表的設(shè)計(jì)如表4所示。
表4 角色表
(5)機(jī)構(gòu)成員表,存儲(chǔ)該系統(tǒng)中所有機(jī)構(gòu)下的成員信息。機(jī)構(gòu)成員表的設(shè)計(jì)如表5所示。
表5 機(jī)構(gòu)成員表
(6)護(hù)理組表,存儲(chǔ)該系統(tǒng)中病人和其他用戶的關(guān)系表。護(hù)理組表的設(shè)計(jì)如表6所示。
表6 護(hù)理組表
(7)權(quán)限表,存儲(chǔ)該系統(tǒng)中的權(quán)限。權(quán)限表的設(shè)計(jì)如表7所示。
表7 權(quán)限表
(8)角色權(quán)限表,存儲(chǔ)角色和權(quán)限的關(guān)聯(lián)表。角色和權(quán)限是多對(duì)多的關(guān)系,利用標(biāo)識(shí)符確定角色是否具有權(quán)限的存取或操作功能。角色權(quán)限表的設(shè)計(jì)如表8所示。
表8 角色權(quán)限表
(9)記錄表,存儲(chǔ)文檔的表。文檔分為8大類,由TAXONOMY_ID進(jìn)行分類,記錄表的設(shè)計(jì)如表9所示。
表9 記錄表
3 醫(yī)療系統(tǒng)中訪問權(quán)限的實(shí)現(xiàn)
該醫(yī)療系統(tǒng)的權(quán)限管理采用PHP+MySqL+Apache作為框架,并以Zend Studio作為開發(fā)環(huán)境實(shí)現(xiàn)的。
3.1 AA/AU對(duì)病人記錄的訪問權(quán)限實(shí)現(xiàn)
AA/AU訪問病人的記錄時(shí),首先獲取當(dāng)前要訪問的記錄ID,然后通過這個(gè)ID查詢記錄表,獲取當(dāng)前記錄的TAXONOMY_ID,系統(tǒng)通過保存在Session的用戶ID查詢機(jī)構(gòu)成員表,通過比較,確定用戶是否為AA/AU,并且獲得當(dāng)前用戶在這個(gè)機(jī)構(gòu)的所有Role值。然后通過Role值、TAXONOMY_ID值和AGENCY_ID值在角色權(quán)限表中確定訪問權(quán)限,任意一個(gè)Role有權(quán)限,則表明有權(quán)限。如果沒權(quán)限,則判斷當(dāng)前用戶是否是病人的FF,然后通過FF對(duì)病人記錄的訪問權(quán)限實(shí)現(xiàn)步驟確定權(quán)限。
3.2 FF對(duì)病人記錄的訪問權(quán)限實(shí)現(xiàn)
當(dāng)FF訪問病人的記錄時(shí),首先獲取當(dāng)前要訪問的記錄ID,然后通過這個(gè)ID查詢記錄表,獲取當(dāng)前記錄的TAXONOMY_ID,系統(tǒng)通過保存在Session的用戶ID查詢護(hù)理組表,確定用戶是否在病人的護(hù)理組里,并且獲得當(dāng)前用戶在病人護(hù)理組里的權(quán)限,如有權(quán)限,則可訪問。
3.3 用戶對(duì)病人記錄的訪問權(quán)限
用戶對(duì)病人記錄的訪問權(quán)限實(shí)現(xiàn)的整個(gè)流程圖如圖2所示。
4 結(jié) 語
角色訪問控制由于不是直接授予權(quán)限給用戶,而是先授予權(quán)限給角色,然后再授予用戶角色,所以通過角色,實(shí)現(xiàn)了用戶和訪問權(quán)限的邏輯分離,使權(quán)限管理簡(jiǎn)便化。
圖2 AA/AU對(duì)病人文檔(record)獲得訪問權(quán)限的過程
本文利用角色訪問控制模型實(shí)現(xiàn)了醫(yī)療系統(tǒng)的訪問控制策略,重點(diǎn)研究和分析了用戶對(duì)不同記錄的訪問控制問題。實(shí)踐證明基于角色的訪問控制技術(shù)能夠有效地解決用戶權(quán)限的管理問題,降低了系統(tǒng)設(shè)計(jì)的復(fù)雜度。
參考文獻(xiàn)
[1] 林磊,駱建彬,鄧憲.管理信息系統(tǒng)中基于角色的權(quán)限控制[J].計(jì)算機(jī)應(yīng)用研究,2002(6):82?84.
[2] SANDHU R S, COYNE J, FEINSTEIN H L, et a1. Role?based access control models [J]. Computer, 1996, 29(2): 38?47.
[3] 樊金生,關(guān)保燦,李曉東.基于角色的訪問控制擴(kuò)展模型及其實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008(18):4718?4721.
[4] 毛碧波,孫玉芳.角色控制訪問[J].計(jì)算機(jī)科學(xué),2003(1):122?123.
[5] 周錦程,張佳強(qiáng),冷文浩.可擴(kuò)展系統(tǒng)中基于RBAC模型的訪問控制[J].計(jì)算機(jī)工程,2009,35(14):145?147.
[6] 姜宇鋒,付鈺,吳曉平.基于RBAC的權(quán)限系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2009(6):98?101.
[7] 智勇.基于角色的權(quán)限管理在教學(xué)資源管理系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2003(7):37?39.
[8] 建東,張鐵,王中文,等.角色訪問控制技術(shù)在放射治療中的應(yīng)用[J].計(jì)算機(jī)工程,2008,34(10):269?270.
[9] 陳金玉,劉東榮,李卓偉,等.基于角色控制的教學(xué)權(quán)限訪問系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].重慶大學(xué)學(xué)報(bào):自然科學(xué)版,2005,28(12):60?61.
[10] 高正憲,李中學(xué).Web 環(huán)境下基于角色的訪問控制策略及實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004,30(8):l33?l35.