刘波
四川广播电视大学信息中心 四川 610073
目前RBAC控制模型还在不断的发展中,为了适应远程教学平台中大量资源的有效控制,本文以RBAC96核心模型为基础,探讨对权限的有效管理,提出了基于层次权限的角色控制技术(Multi-Level Privilege RBAC,MLPRBAC),建立了符合远程教学平台特点的权限管理模型,并通过权限数据定义和客体相关算法验证了 MLPRBAC模型在远程教育中的可行性。
在RBAC96模型中定义了以下基本元素:用户、角色、操作、客体、权限、会话等,分别用USER,ROLE,OP,OBJ,PRM,SESSION表示;其对应的集合称为用户集、角色集、操作集、客体集、权限集、会话集,用US,RS,OPS,OBJS,PRMS,SESSIONS表示。
在通常的权限管理中,我们不仅仅要控制对该权限的操作,还可能需要控制隶属于该权限的子权限,这种具有控制属性的权限称为控制权限,写为cp,不具有控制属性的权限称为普通权限,写为np。根据控制权限和普通权限的定义,R、A、B、E称为控制权限,C、D、F称为普通权限,其中R控制了A,R间接控制了B、C、D,E控制了F。
层次权限集合(Multi-Level Privileges, MLPS)表示了权限之间的层次关系,通过上层的权限能对下层的访问控制产生一定的影响。可以这样规定:如果用户(角色)没有其所有控制该权限的所有权限,那么无论有没有下层的这项权限,他都不能执行这项权限。这样体现了层次模型对现实管理的实际反映。
图1 MLPRBAC模型
定义1:MLPRBAC模型遵循核心RBAC模型的基本定义。
定义 2:MLPS的所有权限是互斥的,也称在MLPS中不存在两个相同的权限。其形式化写为:
定义3:组成MLPS的所有客体肯定是客体集合的元素,组成MLPS的所有操作肯定是操作集合的元素。形式化表示为:
定义4:权限的控制关系用符号≪表示,pi控制pj写为pi≪pj,控制关系具有传递性,形式化描述为:
定义 5:权限的非控制关系用符号∼表示,pi控制pj写为 pi∼pj,显然控制关系和非控制关系是互斥的,形式化描述为:
定义6:CreateMlp ( pk, pi, pj:MLPS ) 定义了一个新z层次权限加入到层次权限集的算法,其中权限pi的父亲节点为pk,其孩子节点增加一个孩子节点pj。当且仅当节点pi、pk、pj之间不存在任何的控制关系,此函数功能有效。如果pk节点为空表示此节点为根节点;当pj为空表示此节点为叶子节点。
定义7:RevokeMlp ( pi:MLPS ) 定义了从已存在的层次权限集删除一个层次权限的算法。如果pi的父亲节点不为空,则从pi的父亲节点的孩子节点集中删除pi;如果pi的孩子节点不为空,则把所有pi的孩子节点的父亲节点置为空。
定义8:CheckAccess (s:SESSIONS, p:MLPS)定义了判断在会话s中是否能执行权限p。返回值是布尔值是或者否。
对于模型的处理,关键问题就体现在对客体的控制上,根据1.2层次权限的定义,在1.3 MLPRBAC模型的定义6和定义7中,建立了一个适用的层次权限模型,定义8给出了判断权限有效的定义。对于权限的控制,关键就体现在定义8中。
算法CheckAccess ( s:SESSIONS, p:MLPS ) 当且仅当所有控制权限p的权限都是会话s的权限时,返回TRUE,否则返回FALSE。其中avail_session_perms(s)在RBAC96中的定义为当前会话拥有的权限集合,权限判断算法描述伪码如下:
在现代远教平台中,存在着大量的用户,也发布了大量的资源,这些资源包括了课程、教学文件、IP课件等资源,而这些用户要访问这些资源,必然要受一定的权限控制。而RBAC模型就通过角色解决了大量用户集中授权管理的问题;MLPRBAC模型就解决了大量资源的逻辑管理。
组成这些资源的基本元素可以认为就是具体某个权限,它包括了操作和客体,如课程管理的操作在平台中就是点击或者是执行,而对象就是某个课程。
在MLPRBAC模型中,重点描述了层次权限,通过普通层次权限和控制层次权限组成了层次权限树和层次权限森林。
如图2的层次权限数据定义:FunctionID是权限的惟一标示,这个字段表明了层次权限的互斥和惟一;Object表明了需要操作的客体;Operation表明了对这个客体的操作,通常Object和Operation都是相互存在的;ParentID表明了这个权限的父节点权限,其父节点是惟一的,当为根节点的时候,填入空值表示,否则填入某个FunctionID的值表示其父节点;ChildIDS表明了这个权限的子节点权限,根据2.2层次权限的定义,孩子节点可能有多个,直接表示在这个字段中,当为叶节点时,填入空值表示,否则填入一个或多个FunctionID的值表示其孩子节点。
系统中对用户表、角色表、用户角色映射表、角色权限映射表都遵循RBAC96的定义,也可以参考文献表的设计。
图2 层次权限定义
在远程教学平台的运用中,结合 MLORBAC模型的特点,授权过程描述为:一般应该先根据1.3中的定义6和定义7建立层次权限表,然后把权限分配给角色,最后在把角色分配给某个用户,用户就拥有了这项权限。
2.3.1 建立层次权限表
假定在远程教学平台中,我们需要控制的权限有:我的课程、我的工作室、经济法学、计算机应用基础、计算机应用基础教学文件、计算机应用基础IP课件、计算机应用基础教学辅导、计算机应用基础课程说明共计8个权限,分别定义为权限p1、p2、p3、p4、p5、p6、p7、p8,根据实际的逻辑关系,建立的层次权限表如表1。
表1 远程教学平台层次权限例表
在表1中,有两个根节点:我的课程和我的工作室,我的课程下面有经济法学和计算机应用基础两门课,计算机应用基础课中有教学文件、IP课件、教学辅导,教学辅导中有计算机应用基础课程说明,这样,一个细粒度的层次权限就建立了起来。
2.3.2 分配权限
在 2.3.1中建立一个层次权限表,由于权限是体现在会话中,假定有 5个会话 S1、S2、S3、S4、S5,其分配的权限如表2。
表2 会话权限例表
2.3.3 权限有效判断
例1:CheckAccess(S1,P5) 判断会话S1是否能执行权限P5,根据表1和表2判断,P5的父节点是P4不在S1拥有的权限中,返回FALSE,表示会话S1不能执行权限P5。
例2:CheckAccess(S1,P2) 判断会话S1是否能执行权限P2,根据表1和表2判断,P2的父节点为NULL,P2就是根节点,返回TRUE,表示会话S1能执行权限P5。
例3:CheckAccess(S2,P8) 判断会话S2是否能执行权限P8,根据表1和表2判断,P8的父节点是P5在S2拥有的权限中,接着P5的父节点为P4也在S2拥有的权限中,再接着P4的父节点为P1不在S2拥有的权限中,返回FALSE,表示会话S2不能执行权限P8。
例4:CheckAccess(S3,P5) 判断会话S3是否能执行权限P5,根据表1和表2判断,P5的父节点是P4在S3拥有的权限中,接着P4的父节点为P1不在S2拥有的权限中,返回FALSE,表示会话S3不能执行权限P5。
例5:CheckAccess(S4,P5) 判断会话S4是否能执行权限P5,根据表1和表2判断,P5的父节点是P4在S4拥有的权限中,接着P4的父节点为P1不在S4拥有的权限中,返回FALSE,表示会话S4不能执行权限P5。
例 6:CheckAccess(S51,P8) 判断会话 S5是否能执行权限P8,根据表1和表2判断,P8的父节点是P5在S5拥有的权限中,接着P5的父节点为P4在S5拥有的权限中,再接着P4的父节点为P1在S5拥有的权限中,最后P1的父节点为NULL,P1就是根节点,返回TRUE,表示会话S5不能执行权限P8。
面对远程教学平台中要管理的大量权限,其权限本身就包括了对客体的操作和被操作的客体,本文在RBAC96模型的基础上,结合远程教育的特点,建立了符合远程教育特色的层次客体权限管理模型,把权限作为最小的粒度,提供了灵活的管理方法,很好的管理了大量的权限和用户,这个模型非常适合现代远程教育软件中的权限管理。
随着远程教育的不断发展,对某个特定任务也将要求更好的进行流程控制,而基于任务的权限模型(Task Based Access Control, TBAC)就有极大的便利,它结合本文提出的模型也将得到更多的运用。
[1] 杨宗凯,吴砥,刘清堂.网络教育标准与技术[M].北京:清华大学出版社.2008.
[2] R.S.Sandu,E.J.Loyne,et al.Role-Based Access Control Models.IEEE Transaction on Computer.1996.
[3] 张晓燕,张素伟.基于RBAC的电子政务权限访问控制模块的设计与实现[J].计算机工程与设计.2007.