RBAC模型在医疗系统中的研究与应用

时间:2022-08-12 10:34:44

RBAC模型在医疗系统中的研究与应用

摘 要: 基于角色的访问控制是目前应用在系统控制用户访问中比较主流的一门技术。在此针对医疗系统的特点,在基于角色的访问控制模型的基础上,分析医疗系统中的访问主体和客体,引入角色,将权限和角色相关联,重点研究不同用户对记录的访问控制,提出一个访问控制算法,通过分配用户适当的角色,然后授予用户适当的访问权限,使用户和访问权限逻辑分离,从而提高了在医疗系统中权限分配和访问控制的灵活性与安全性。

关键词: RBAC; 权限访问控制; 医疗系统; 访问控制算法

中图分类号: TN964?34 文献标识码: A 文章编号: 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 引 言

随着计算机互联网技术的发展和医疗技术水平的提高,病人迫切需要在家里就能接受医院的治疗。这就迫切需要构建一个医疗系统。通过这个系统,病人、医生、护士、病人的家人和朋友都能共享医疗信息资源。医生和护士能通过系统查看病人的文档,并对病人做出诊断。病人可以通过系统委托其他用户成为自己的监护人,全权管理自己的权限。病人的家人和朋友可以在病人授权容许的范围内查看有限的信息。整个系统对用户的权限有较高的限制要求,既不容许用户访问授权外的信息,也不容许用户查看不到授权内的信息。

由于医疗系统的用户数量庞大,所以权限管理在整个医疗系统设计中,起着至关重要的作用。在权限管理中,访问控制是实现整个权限的核心内容,它是实现数据保密性和完整性机制的主要手段[1]。在整个医疗系统中,用户对记录的访问是非常频繁的,而且记录具有私密性,没授权的用户是不容许访问的。用户对记录的访问在整个权限管理又是处于重中之重的地位。但是传统的两种访问控制,已无法满足这个医疗系统的需求,因为传统的访问机制都是对系统中所有用户的权限进行直接的管理,这样的权限管理既复杂又不灵活,如果记录信息膨胀的话,系统就难以管理和维护。基于角色的访问控制(Role?Based Access Control,RBAC)是解决大型企业统一资源访问控制的有效方法[2]。基于角色的访问控制,是通过分配和取消用户的角色来完成用户权限的授予和取消,使用户与访问权限在逻辑上分离[3]。本文主要利用基于角色的权限访问控制模型,研究和实现用户在医疗系统中的权限访问控制,重点研究不同用户对不同记录(Record)访问控制问题。

1 RBAC模型的概述

角色访问控制是介于自主访问控制和强制访问控制之间的一种访问控制技术。角色访问在20世纪70年代就有人提出,只是最近才有人提出形式化的角色模型。其中最有影响的是Sandhu在1996年提出的形式化模型[4]。基于角色的访问控制模型可以简单地用图1来表示[5]。在此模型中,包括4个基本的要素:用户、角色、权限和授予。用户就是正在登陆系统的人或主机,角色就是用户在系统和组织中执行的操作的集合,执行这些操作时就代表着系统和组织的一个角色,权限就是主体访问客体时的认可,权限代表了主体是否可以对客体进行某种操作[6?8]。它的基本思想是用户被授予角色,系统通过用户所授予的角色决定其权限[9]。模型中用户可以被授予多个角色,同时一个角色也可以被多个用户所拥有。同样,角色和权限也是多对多的关系[10]。

图1 基于角色的访问控制(RBAC)模型

2 医疗系统中权限管理的分析与设计

2.1 医疗系统的应用模型分析

基于角色的访问控制模型主要需处理好用户、角色、权限和它们之间的关系。在医疗系统中,用户对记录的访问是整个系统的核心内容。

2.1.1 用户分析

用户是在医疗系统中拥有账号的一个使用者,也有可能是游客。他可以在平台里拥有多个角色。例如:用户可以是一名病人,同时他也可以是一名医疗机构的管理员,甚至他本身就是医生,同时他也可以是其他病人的监护人或者普通的家人和朋友。

2.1.2 角色分析

在实现系统访问控制模块时定义了平台管理员(Platform Administrator,PA)、机构管理员(Agency Administrator,AA)、机构用户(Agency User,AU)、病人(Patient,P)、家人和朋友(Family and Friends,F)等多个角色。整个系统都是以病人为中心,所有角色都是为病人服务的。

(1)平台管理员,负责医疗系统平台的日常管理工作。他的一项重要的工作是创建其他的用户,特别是创建医疗机构并加入这个医疗系统。整个医疗系统可以由多个医疗机构组成。

(2)机构管理员,负责医疗机构的日常管理工作。他的一项重要的工作是添加其他的用户成为本机构的用户,并且设置他们的权限。

(3)机构用户,是医疗机构的主要成员。他们是负责日常的医疗管理,主要是指护士和医生。机构用户不能添加其他的用户。

(4)病人,是医疗服务的对象。他由医疗机构管理员添加到医疗机构,并安排医生和护士加入其护理组。

(5)家人和朋友,他们由病人邀请进病人的护理组,并赋予权限决定是否能够访问或修改病人信息。

2.1.3 权限分析

本文重点研究的内容是不同用户对不同记录的访问控制问题。在设计的医疗系统中,病人的记录分为team_note,resume,plan_of_care,life_doc,health_record,office_visit,medication,resource_lib等8大类。病人为自己创建一个护理组,机构管理员、机构用户、家人和朋友只有在病人的护理组里才能查看病人的记录。不同类型的用户对病人的记录具有不同的访问权限。

首先,用户要访问病人的文档,这个用户一定是在这个病人的护理组里。其次要根据用户不同的角色决定其权限,机构用户的访问权限,由机构管理员默认设置,比如医生和护士的访问权限是不同的,医生可以读写病人的病历,而护士就只能读他的病历,这个权限的设置就由他们所在的机构管理员设置的;病人的家人或朋友的访问权限,由病人设置权限。

2.2 权限管理的数据库设计

在设计数据库时,为系统建立用户表、病人表、机构表、机构成员表、角色表、护理组表、权限表、记录表和角色权限表等几个表。

(1)用户表,存储该系统中所有用户的信息。用户表的设计如表1所示。

表1 用户表

(2)病人表,存储该系统中所有病人的信息。病人表的设计如表2所示。

表2 病人表

(3)机构表,存储该系统中所有机构的信息。机构表的设计如表3所示。

表3 机构表

(4)角色表,存储该系统中的角色。角色表的设计如表4所示。

表4 角色表

(5)机构成员表,存储该系统中所有机构下的成员信息。机构成员表的设计如表5所示。

表5 机构成员表

(6)护理组表,存储该系统中病人和其他用户的关系表。护理组表的设计如表6所示。

表6 护理组表

(7)权限表,存储该系统中的权限。权限表的设计如表7所示。

表7 权限表

(8)角色权限表,存储角色和权限的关联表。角色和权限是多对多的关系,利用标识符确定角色是否具有权限的存取或操作功能。角色权限表的设计如表8所示。

表8 角色权限表

(9)记录表,存储文档的表。文档分为8大类,由TAXONOMY_ID进行分类,记录表的设计如表9所示。

表9 记录表

3 医疗系统中访问权限的实现

该医疗系统的权限管理采用PHP+MySqL+Apache作为框架,并以Zend Studio作为开发环境实现的。

3.1 AA/AU对病人记录的访问权限实现

AA/AU访问病人的记录时,首先获取当前要访问的记录ID,然后通过这个ID查询记录表,获取当前记录的TAXONOMY_ID,系统通过保存在Session的用户ID查询机构成员表,通过比较,确定用户是否为AA/AU,并且获得当前用户在这个机构的所有Role值。然后通过Role值、TAXONOMY_ID值和AGENCY_ID值在角色权限表中确定访问权限,任意一个Role有权限,则表明有权限。如果没权限,则判断当前用户是否是病人的FF,然后通过FF对病人记录的访问权限实现步骤确定权限。

3.2 FF对病人记录的访问权限实现

当FF访问病人的记录时,首先获取当前要访问的记录ID,然后通过这个ID查询记录表,获取当前记录的TAXONOMY_ID,系统通过保存在Session的用户ID查询护理组表,确定用户是否在病人的护理组里,并且获得当前用户在病人护理组里的权限,如有权限,则可访问。

3.3 用户对病人记录的访问权限

用户对病人记录的访问权限实现的整个流程图如图2所示。

4 结 语

角色访问控制由于不是直接授予权限给用户,而是先授予权限给角色,然后再授予用户角色,所以通过角色,实现了用户和访问权限的逻辑分离,使权限管理简便化。

图2 AA/AU对病人文档(record)获得访问权限的过程

本文利用角色访问控制模型实现了医疗系统的访问控制策略,重点研究和分析了用户对不同记录的访问控制问题。实践证明基于角色的访问控制技术能够有效地解决用户权限的管理问题,降低了系统设计的复杂度。

参考文献

[1] 林磊,骆建彬,邓宪.管理信息系统中基于角色的权限控制[J].计算机应用研究,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] 樊金生,关保灿,李晓东.基于角色的访问控制扩展模型及其实现[J].计算机工程与设计,2008(18):4718?4721.

[4] 毛碧波,孙玉芳.角色控制访问[J].计算机科学,2003(1):122?123.

[5] 周锦程,张佳强,冷文浩.可扩展系统中基于RBAC模型的访问控制[J].计算机工程,2009,35(14):145?147.

[6] 姜宇锋,付钰,吴晓平.基于RBAC的权限系统设计与实现[J].计算机与数字工程,2009(6):98?101.

[7] 智勇.基于角色的权限管理在教学资源管理系统中的应用[J].计算机与现代化,2003(7):37?39.

[8] 建东,张铁,王中文,等.角色访问控制技术在放射治疗中的应用[J].计算机工程,2008,34(10):269?270.

[9] 陈金玉,刘东荣,李卓伟,等.基于角色控制的教学权限访问系统的设计与实现[J].重庆大学学报:自然科学版,2005,28(12):60?61.

[10] 高正宪,李中学.Web 环境下基于角色的访问控制策略及实现[J].计算机工程,2004,30(8):l33?l35.

上一篇:志愿者爱心浇灌花朵·助圆成长梦想 下一篇:基于图像融合的运动前景检测方法