融合UML和XACML的医院信息系统建模

2014-08-04 01:19张莉莉范宝德
关键词:用例访问控制视图

张莉莉,范宝德

(烟台大学计算机与控制工程学院,山东 烟台 264005)

在对软件不断开发和创新的过程中,人们越来越重视安全这个问题.信息在开放性的环境下必然会受到安全威胁,访问控制机制居于网络安全机制的核心地位,理应受到高度重视,从而实现数据上的共享[1].为了解决这个问题,在建模时就要把访问控制机制考虑进去,从而在很大程度上得到改善.

HIS(Hospital Information System)医院信息系统,利用计算机软硬件技术、网络通讯技术等先进手段,对医院及其所属各部门对人流、物流等进行全面管理,对在医疗活动各阶段中产生的数据进行采集、存贮、处理、提取、传输、汇总、加工生成各种信息,从而为医院的整体运动提供全面的、自动化的管理及各种服务[2].在这方面也需要增强其安全意识.

1 语言描述

在对医院信息系统建模时,需要用到的工具有UML、XACML、VPL,下面先具体介绍一下这些语言,通过对它们的描述使我们更深入的了解系统建模.

1.1 UML

UML(Unified Modeling Language,统一建模语言),它是一种支持模型化和软件开发的标准建模语言,功能是帮助用户对软件系统进行面向对象的描述和建模,它可以描述软件开发从需求分析、实现到测试的全过程.在对系统进行建模时,主要采用的是UML技术,并以Rational Rose 2003为建模工具.通过UML的使用,可以更好的描述出软件需求,消除主观上产生的误会.统一建模语言UML可以由5类模型图来定义,分别是用例图、静态图、行为图、交互图、实现图.不同类型的模型图描述的关系也不相同,针对需要选择适合的模型图.其中用例图显示了用户与操作之间的关系.在用例图中,由用例,参与者以及箭头组成,通过箭头来表示参与者与用例之间的关系.用例图是以用户的角度进行建模的,可以明显的看出用户的需求,以及方便用户进行检查.

1.2 XACML

XACML(eXtensible Access Control Markup Language,可扩展的访问控制标记语言),可以应用在分布式环境下,对信息和资源进行保护.XACML可以建立一种可移植的、标准的方式来形容访问控制实体及其属性,同时可以提供一种机制,以比简单的拒绝访问、授权访问更严格的控制访问[3].它可以对信息进行保护,一旦外界有访问消息时,就将这个消息中的属性与包含在策略规则中的属性进行比较,并判断这个消息是被允许还是被拒绝,最后把这个响应返回到相应的地方进行操作,从而实现通过授权保护信息的目的.下面就来看一下XACML的流程图(图1),系统了解它是如何工作的.

图1 XACML工作流程图

当外界有访问消息时,通过策略执行点(PEP)创建一个请求并将这个请求传送到上下文处理器,上下文处理器根据策略信息点收集到的环境、资源及主体等的属性进行查询,将请求转换成策略决策点(PDP)可以理解的决策请求,同时传递给PDP,通过评估这个请求,输出相应的结果即允许或拒绝,并返回响应.上下文处理器除上述作用外,还可以把PDP返回的授权决策转换为访问者能够理解的形式.PDP在对请求进行评估时,依据现存的策略属性与这个请求的属性进行比较,而这些策略是存放在策略访问点中的.在对访问进行控制和授权时,主要的实体:subject,resource,action以及它们的属性[4],并且这些信息都是存储在访问控制链表(ACL)中.通过这样的授权方式,才能对访问进行更好的控制,更能起到保护信息的作用[3].XACML策略包括规则、标识符、义务和目标,同时一个策略可以与多条规则相关联,而每个策略只有一个目标,即确定策略是否与请求有关,这直接关系着是否要为请求评估该策略[4].

1.3 VPL

VPL(View Policy Language,视图策略语言),通过视图对访问控制策略进行管理.视图规范了角色调用对象操作的权限,可以根据视图进行访问控制策略的建模,但是这些视图只是对静态的访问进行描述,为了达到静态和动态的授权,所以在这里我们引入了VPL,它可以对策略进行行之有效的管理.基于视图的访问控制决策的工作原理是:当一个角色想要通过它现存的操作访问一个对象时,如果角色所拥有的视图包含了这一操作,且操作对象属于视图的控制对象类型时,访问被允许,否则被拒绝[5].通过视图模型可以明显的看到怎样的访问是被允许的,怎样的访问是被限制的,便于设计者们根据需求进行建模和软件开发.视图可以实现访问控制粒度细化、有条件授权的控制.通过VPL形式化描述安全模型,实现安全策略由VPL描述向通用的XACML描述的映射.

2 医院信息系统建模

2.1 UML建模下的HIS

传统的HIS是基于UML的建模,根据用户需求和规定设置的用例图.用例图可以清楚地描述医院内部的总体结构.图2是利用Rational Rose 2003软件形成的,描述的是病人根据HIS由入院到治疗的流程图.

图2 医院信息系统用例图

在上述的医院信息系统用例图中可以清楚地了解病人进行就医时的程序,即病人进入医院后,先到门诊处进行挂号、登记,根据护士、医生的诊断到相应的部门进行就诊,接受门诊治疗或是住院治疗.如果进行的是门诊治疗,则需要根据挂号单上指定的门诊部门找到相应的医生,按照要求进行必要的检查,然后医生根据检查结果做出相应的诊判,开处方.接着病人拿着医生开的药单到门诊收费处,根据医疗保险报销的情况程度,进行相应的缴费,结束后,拿着缴费单和药单到药局领取药品.在这个过程中,已经在医疗保险系统上进行了相应的登记记录.同时患者在进行选择治疗的同时,可以根据自己信任医生的程度查询相关医生的信息,选择医生进行挂诊治疗;然后在病案管理系统内登录自己的相关信息,建立个人信息.如果需要进行住院治疗,除了需要挂号、登记外,还需要办理住院手续,再由护士工作站判断,医生诊疗后安排到相应的地方.并由护士通知用药或进行处方取药、手术检查检验申请、预约,同时进行过程跟踪处理.如果病人经诊断后需要进行手术,则由专门的手术医生负责,在相应的手术室进行医治.

以上各操作都是由不同的角色完成的.这个医院信息系统在建模时根据实际行程,粗略地描述了医院业务流程.它仅是对系统功能进行的描述,还不能反映系统的安全性,但是在实际建模中,我们必须要考虑到这一点.

2.2 HIS的安全性分析

通过对医院信息系统的一个病历子系统来分析一下它的安全性,见图3.

图3 病历子系统用例图

在这个医院信息病历子系统用例图中,我们可以看到总共设置了3个角色:管理者(administrator),医生(doctor)和病人(patient).从上图中可以看到,administrator具有的权限是管理记录(managerecord),doctor具有的权限是创建记录(creatrecord),patient具有的权限是查看记录(readrecord),同时administrator继承了doctor,doctor继承了patient.也就是说doctor能够访问到的权限,根据继承的概念来说,administrator也可以访问doctor的权限,同样的,patient能够访问到的权限,doctor也可以访问patient的权限.依据传递性依然有效的原则,具有最高继承权的administrator也能够通过doctor访问到patient拥有的所有访问权限.然而如果考虑到实际的安全问题,对于某些角色来说有些操作是不能被允许访问的.在实际生活中,针对这3个角色,只有doctor具有访问用例creatrecord的功能,而administrator不能拥有此权限.所以对于administrator来说,creatrecord就是禁止用例[6].单单依靠这样的用例图进行建模,就会存在安全隐患问题,最终带来不必要的麻烦.

2.3 融合XACML与UML的HIS模型分析

为了增加系统的安全性,系统开发者在进行建模时,应该明确描述出角色拥有的操作权限,以及对哪些操作没有相应的访问权限,在这个的基础上,再对系统进行建模,见图4.

图4 安全系统的用例图

如上所示,从安全要求的角度出发,可以在角色和用例之间添加相应的标记,也就是扩展关联为《拒绝》(≪deny≫).标有≪deny≫的意思是指角色不具有对用例进行访问的权限,此操作是被限制的.根据图3中所显示的安全缺陷,再结合XACML建立的安全系统模型中,可以看出虽然administrator继承了doctor所拥有的权限,但是对creatrecord这个操作来说,administrator没有对其进行访问的权限.通过加入XACML,从而大大增加了系统的安全性.软件设计者们对系统的安全建模是通过用例与用户之间的关系来表示的.通过注释,用通用的语言描述出来,既可以实现用户所需要的要求又可以对数据进行保护.总而言之,我们通过扩展UML,把XACML集成到系统建模中,可以达到安全建模的作用.

2.4 VPL在HIS建模中的应用

当外部有请求响应时,在内部进行处理的实际上是XACML文件.在生成这个文件时,是先对视图进行分析的.为了实现动态的访问控制,本文引入了VPL.视图只是静态的描述了角色与对象操作之间的关系,见图5.

图5 静态视图访问控制模型

在上述静态访问控制模型中可以看到,creatrecord被分配给记录(record)对象上的doctor角色,也就是说doctor对creatrecord是具有访问权限的,同样的,不能创建记录(no creatrecord)被分配给record对象上的administrator角色,也就是说administrator对creatrecord是没有访问权限的.通过这个可以把角色和授权明显的表示出来.视图的重要性在于能及时发现所需模型和所建模型是不是一致的.如果要想实现动态的访问控制模型,就需要VPL加以描述.一旦某个操作被调用后引起角色权限改变,VPL都可以清楚的描述出来.

VPL策略是由关键字policy开始,它对每个角色进行了声明,角色声明语句的关键词holds后列举了安全策略的涉及视图,在关键词on之后说明视图针对的接口[6].VPL安全访问控制策略定义如下:

policy record

roles

patient

doctor:patient

holds creatrecord on record

administrator:doctor

holds nocreatrecord on record

可以看到总共定义了3个角色:patient,doctor,和administrator.其中的冒号代表了继承关系,也就是说doctor继承了patient,administrator继承了doctor.并为creatrecord视图和no creatrecord视图设置的接口为record.在视图模型中,每个视图产生一个与其自身有相同标志和相同访问权限的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的操作权限;对于视图creatrecord2来说,视图指派的角色为administrator,但是这个角色对creatrecord没有操作权限.

通过生成的VPL视图,可以进一步构建XACML文件,在这个映射过程中,controls对应resources,restricted to对应subjects,而allow/deny对应于actions,表示被授权或限制的访问.通过这种映射关系,可以更好的融合UML和XACML进行医院信息系统的建模.

3 总 结

文中,对UML,XACML以及VPL的特点进行分析,并且以医院信息系统子系统为例,说明了UML存在的安全问题.结合这个问题,本文加入了XACML进行有注释的安全建模,生成XACML的访问控制策略,更有利于信息系统的保护,与之前的仅用UML进行建模相比,在安全性方面有了很大的提高.其中还简单探讨了VPL在建模中的应用,从而实现访问控制粒度细化、有条件授权的控制.基于以上的研究,融合UML与XACML的信息系统建模更具有应用前景.但是这篇文章只是从访问授权的角度予以描述,并没有结合实验加以证明,下一步将在此方向上进行完善.

参考文献:

[1] 李景峰,李云鹏. 基于 XACML 的 EPCIS 访问控制模型[J]. 计算机工程,2013,39(4): 180-183.

[2] 何菊.基于UML的医院信息系统建模[J]. 医学信息,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在控制信息访问中的应用[J]. 现代情报,2005,25(6): 101-103.

[5] 姚前,陈舜,谢立. 基于视图的访问控制语言VPL及其应用[J]. 计算机科学,2005,32(6): 206-209.

[6] 张赛男,殷兆麟,刘厚泉. 软件系统 UML 建模与其安全建模的集成[J]. 计算机工程,2007,33(8): 86-88.

猜你喜欢
用例访问控制视图
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
联锁软件详细设计的测试需求分析和用例编写
從出土文獻用例看王氏父子校讀古書的得失
5.3 视图与投影
视图
Y—20重型运输机多视图
SA2型76毫米车载高炮多视图
ONVIF的全新主张:一致性及最访问控制的Profile A
动态自适应访问控制模型