摘 要:协同系统越来越多的在各部门、企业中使用,基于智能客户端(Smart Client)的协同系统是现在协同系统发展的新趋势。它支持多用户的离线和在线的操作,将具体计算工作在客户端完成,减轻了服务器的负载,同时降低了对网络的传输要求,系统的适用范围也更广泛。通过对RBAC(Role Base Access Control)模型的改进,有效的增强了基于智能客户端环境下的RBAC访问控制,提高了系统的访问效能。
关键词:智能客户端(Smart Client);RBAC;分布式协同系统
1. 引言
智能客户端(Smart Client)在分布式协同系统中的应用得到了极大的关注。智能客户端是基于.NET Framework的应用程序。它可以支持用户的离线工作,充分利用客户端的计算资源,节省网络带宽的同时,也具有瘦客户端应用程序的易于部署、管理的特点,实现了无接触部署和自动更新。基于智能客户端的分布式协同系统可以支持不可靠的Internet进行连接,协同工作。如何保证系统中对象的操作只被有操作权限的用户访问,是开发人员关注的重点。
1992年由Ferraiolo和Kuhhn提出的RBAC模型,引入角色实现了用户与权限的逻辑分离。现在普遍使用的是由美国George Mason大学在20世纪90年代中后期提出的RBAC96模型。RBAC96模型在用户——角色,角色——权限关联的同时,增加了互斥角色的限制、角色基数限制,使得用户管理更加简洁,简化了复杂的授权管理工作。然而,传统的角色控制模型没有考虑到用户操作环境的变化,因此,这种机制只适用于单一的客户端环境,在基于智能客户端的分布式协同系统中,系统的访问控制无法实现。
因此,在基于智能客户端的分布式协同系统中,需要检测环境状态的实时变化,以满足用户的各种访问控制,使得系统能适应的复杂环境要求。
2. 基于智能客户端的协同系统环境的体系结构
1.1 智能客户端的特点
随着B/S 和C/S架构的发展,都各有限制,智能客户端作为两者的补充,有以下的特点:(1)丰富的用户界面:智能客户端采用windows界面,摆脱了单一的web模式,丰富了用户界面的样式;(2)充分利用本地资源:由于B/S架构过分依赖服务器资源,在协同系统中会给服务器带来极大的压力,而采用智能客户端则可以充分利用本地计算机的功能,利用CPU的计算能力处理可以进行图形等的计算处理;(3)合理利用网络资源:采用web形式,很难穿透防火墙,基于webservice技术的智能客户端,就可以方便的穿越防火墙,进行通信;(4)支持偶尔连接的用户:由于网络条件的限制,不可能所有用户都能实时在线,采用智能客户端技术,支持用户的离线和在线两种状态;(5)便捷的部署和维护:采用智能客户端的程序,不需要用户知道版本的变迁,通过版本比对功能,就可以自动升级版本,不需要再挨个客户端去安装,方便了系统的部署及维护。
1.2 智能客户端在协同系统中的优势
协同系统在系统响应时间上有较高要求,使用智能客户端技术,用户可以充分利用本机资源,减少用户与服务器之间的反复访问;采用windows界面,丰富了系统的功能,同时也增强了用户的体验。
采用智能客户端的协同系统,可以实现控件的本地使用和数据的本地备份。在网络联通的时候,用户可以相互协同办公;当用户没有网络或者外出办公的时候,依旧可以使用系统,等网络联通的时候,再通过本地数据库与服务器数据库同步,实现各用户的协同工作。
协同系统内包括了多部门的用户,不同的部门在不同的局域网中,因此,采用智能客户端,通过利用智能客户端可以穿透防火墙的特点,实现各局域网间的访问。
协同系统需要持续的更新以满足需求,智能客户端的便捷的维护方式,可以让系统的升级更加容易,只需在指定的服务器上附属新的程序,其他用户利用本机的版本比对功能即可发现最新程序,自动升级本地系统。
1.3 智能客户端在协同系统的不足
虽然智能客户端在协同系统中有许多的优势,是协同系统发展的趋势,但是,由于智能客户端本身支持偶尔连接的用户,因此,采用智能客户端的协调系统在实现对系统的访问控制的时,原有的基于角色访问控制模型RBAC96不能提供对离线用户的权限控制,因此,提出了基于智能客户端的访问控制模型,以解决此类问题。
2 基于智能客户端的访问控制模型
2.1 SRBAC模型介绍
RBAC(Role-Based Access Control——基于角色的访问控制)模型是20世纪90年代研究出来的一种新型模型,这种模型是对访问矩阵模型的扩展。这个模型把角色(Role)与许可权(Permission)联系到一起,用户可以在这种模型中担任不同的角色从而获得不同角色的许可权。
RBAC模型虽然可以很好的解决用户与角色之间的关系,但是角色控制(RBAC)模型没有提供针对智能客户端用户有离线和在线的不同状态的控制方式。因此,对于采用智能客户端的协同系统,本文提出了针对智能客户端改进的SRBAC模型,这个模型的设计有以下特点:
客户端代理可以将各个客户端的操作请求信息解析出具体的操作类型和参数,然后将信息发送给认证服务器,当服务器确认返回信息时,客户端代理将操作指令反馈给客户端,减轻了客户端的操作,同时保证了客户端的信息安全。
智能客户端控制组件的引入,可以通过记录用户的登录信息,通过智能客户端在线进程管理模块,判断用户的当前在线状态,进而可以按照状态判断操作的合法性,确保对操作的唯一性。
采用智能客户端的协同系统,除了有地域分布的特征外,用户的在线状态是其重要的判断标识。客户端代理的引入,可以消除了各个用户与服务器会话时操作的复杂性,同时,也去除了多次会话给信息安全带来的隐患,客户端不再直接与服务器打交道,而是通过代理来完成信息的提取,封装,从而保障了信息的安全性;引入了智能客户端控制组件对用户的在线的状态做出判断,以实现协同系统的操作。
2.1.1 SRBAC模型的元素
本文给出的SRBAC模型的组成包括:用户(U)、角色(R)、权限(P)、会话(S)、代理服务(PS)、智能客户端组件(SC)、如图1所示,可以表示为SRBAC={U,R,P,S,PS,SC}
图1 SRBAC模型
其中,模型中的元素描述如下:
用户(U):是指系统中的人,也可以是Agent等智能程序,可以对系统的资源进行访问,如读、写、资源等操作。
角色(R):是指系统中某个
工作流程或任务的职责,权利。角色是一种语义综合题,可是是一种抽象概念,也可以是对应在具体领域中的职位和权利。
权限(P):是用户对系统对象操作的许可,可以说权限是操作和对象的特殊关系,即当用户对对象进行操作时,必须有权限加以限制。
会话(S):是用户的登录状态的描述,会话是用户与角色之间的映射关系,即用户要完成某种操作,激活了对应的角色,角色赋予用户这种操作的权利。用户与会话之间是一对多的关系,即一个用户可以进行多个会话。
代理服务(PS):是将客户端的具体登录和操作请求,解析出具体的操作类型和参数后,交给服务器进行判断和处理,代替客户端完成操作。
智能客户端组件(SC):携带了用户ID、用户登录时间、联网时间的相关信息,并通过用户在线状态的判断给出判断结果,用以限制用户的操作权限。智能客户端与用户是一对一的关系。
2.1.2 SRBAC模型的关系
SRBAC模型的关系包括原有的RBAC关系和扩展关系两个部分。
RBAC模型关系,有用户角色关系(UA)、权限角色关系(PA)、角色等级关系(RH)。
用户角色关系:UAU×R,表示用户与角色之间多对多的指派关系,负责为用户分配角色。
权限角色关系:PAP×R,表示角色与权限之间多对多的指派关系,负责为不同的角色分配权限。
角色等级关系:也称角色支配关系,RHR×R,角色等级有自反性(自己可以继承自己)、传递性(A继承B,B继承C,则A继承C)、反对称性(A继承B,B继承A,则A=B)。因此,角色等级关系是对R的偏序关系。
角色互斥关系:是限制角色冲突的一种,用于指定两个角色具有不同的职责,不同的用户不能同时获得两个角色的使用权。
本文为了适应运用了智能客户端的适应协同系统中,用户登录时状态的随机性(离线状态或者在线状态)会导致的用户对对象的操作可能引起一系列的冲突,并且用户长时间的离线状态可能导致协同工作的无法继续进行。通过增加令牌控制,保证对象与用户关系的唯一性;通过增加智能客户端控制组件,记录用户的登录时间信息和联网信息,解决了多状态用户操作权限的判断。本文在角色关系上进行了一些改进,扩展出了令牌分配关系和智能客户端限制关系。扩展出的关系如下:
智能客户端限制关系:SCU SC×U,表示智能客户端组件与用户是一对多的指派关系。
2.2 智能客户端组件
智能客户端组件包含一个离线管理表,它是维护设计过程中用户对模型操作的合法性,是智能客户端组件的核心。离线管理表是通过各客户端对各自操作对象的请求,在表内查询后,提取出请求操作对象的状态,经过对比判断,来决定是否给该用户操作的权限。
来自客户端的操作请求,首先由客户端代理模块分析出具体的操作类型和参数后,交给服务器,其中,每一个客户端代理对应一个客户端。经过客户代理的请求信息被交给智能客户端组件的离线管理表进行比对和调用,离线管理表通过检查不同被请求操作的对象的状态,再决定是否赋予操作请求者操作的权限。
2.2.1 离线管理表
作为智能客户端组件的核心部件,它记录了所有模型对象的操作信息,为了防止用户的越权操作,所有的模型对象都与客户端用户是一对一的关系,即在某一时刻t,只能有一个用户对此模型对象进行操作。
该表为每一个对象建立对象索引,用以记录所有对象的操作用户信息。当接收到来自某个客户端的操作请求后,请求进程首先在对象的用户索引中检查该对象的用户信息,如果在索引中找不到该对象的用户信息,则直接给申请操作的用户操作权;否则,判断该对象的用户状态,用户标为离线状态并且离线时间超过系统最大离线允许时间,则申请用户可以对该对象进行操作;如果用户在线,或者离线时间小于系统最大允许离线时间,则此次操作请求失败。
任何模型中实体对象的增加和删除都会及时的反映到对象索引,以保证智能客户端组件的正常运行。同时,用户对操作的获得和放弃也实时的反映到对象索引中。
3.SRBAC模型的实现和应用
本文提出的SRBAC模型已经应用于大庆钻井设计系统,取得了良好的效果。由于此系统是协同系统,同时允许各用户离线办公,用户在客户端登录后根据其角色信息,再通过智能客户端组件取得操作许可。整个访问控制过程分成4个部分(如图2所示),包括:
1). 身份验证模块:验证用户信息(密码和用户名),用户在申请操作对象之前必须要通过身份验证模块,认证成功后,由身份认证服务器获取用户身份和对应的角色信息。
2). 访问策略模块:根据从服务器取出的角色信息、和对象的索引信息等,形成对当前访问的控制策略。并且根据策略判别用户是否有操作该对象的权限。访问策略相当于一个访问请求的判断机构,当判断用户有操作的权限时,则允许用户的进行权限内的操作;否则,将用户的操作请求直接截断,操作失败的消息直接返回给用户。
3). 系统管理工具:通过方便快捷的系统管理工具,系统管理员可以对用户信息进行维护,同时及时更新角色分配和角色权限的配置。
图2 SRBAC访问流程图
4. 总结
使用智能客户端的系统操作系统成为目前协同系统的新趋势,但是用户管理和访问控制成为其实现过程中的关键点。本文针对采用智能客户端协同系统的特点,改进了传统的访问控制RBAC模型,增加了智能客户端组件,称为SRBAC模型。采用了SRBAC模型主要增加了用户状态判断,通过客户端代理,可以实现对系统内部数据的有效保护。SRBAC模型适用于使用智能客户端的协同系统使用。