B/S系统开发中的权限设计方法研究

时间:2022-10-04 11:48:24

B/S系统开发中的权限设计方法研究

摘 要 本文主要研究了网络版GIS中的B/S系统开发中的权限设计方法,对RBAC权限设计模型进行了分析和优化考虑,还总结了几种权限控制算法,并分别进行了举例说明。

关键词 GIS;B/S系统开发;RBAC权限设计模型;权限控制算法

中图分类号TP39 文献标识码A 文章编号 1674-6708(2014)122-0227-02

0 引言

随着地理信息系统(GIS)在生产生活、灾害预警、国防建设等各个领域的广泛应用,GIS的表现形式也越来越多样化,从硬件支持上逐渐从单机版向网络版发展。鉴于网络版GIS在数据保护上的特殊要求,为了允许或限制不同用户的访问权限,都要用到权限的管理。常用的网络版GIS开发模式有C/S(客户端/服务器)和B/S(浏览器/服务器)两种。C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台计算机都已具备的,如果不建立一个完整的权限检测,那么一个“非法用户”很可能就能通过浏览器轻易访问到B/S系统中的所有功能导致非常严重的后果。因此B/S业务系统都需要有一个或多个权限系统来实现访问权限检测,让经过授权的用户可以正常合法的使用已授权功能,而对那些未经授权的“非法用户”将会将他们彻底的“拒之门外”。

1 权限设计模型及其优化

1.1 基于角色的权限设计

在网络系统开发中,基于角色的权限设计(Role Based Access Control,简称RBAC)是应用最为广泛的权限设计模型,RBAC的基本思想如下:

1)用户,角色,权限的概念以及相互关系

用户是被允许独立访问系统中数据类资源的主体。系统中的所有用户组成用户集(USERS),包含用户的姓名、登录密码、识别码,并随着用户的增减而动态变化。

角色具备一定的资质和权利,代表了某个团体、任务里面的位置或者工作,系统建立或管理者根据需要对角色进行定义。不同的角色组成角色集(ROLES),包含角色的称呼、数量、识别码等要素。

赋予角色可以对受控对象进行操作的权利就是权限。受控对象和操作分别组成受控对象集(OBJECTS)和操作集(OPERATIONS),集当中均包含识别码和名称;而权限集(PERMISSIONS)则需给出受控对象与操作的所有对应关系,包含权限识别码、名称、受控对象和操作识别码及作用描述。

用户,角色,权限之间关系如图1所示。其中一个用户可能担任多个角色,而一个角色也可能会被多个用户担任。角色与权限,操作与受控对象之间也是相同的对应关系。

在RBAC中,系统管理员对权限进行统一分配管理,根据角色的功能,授予角色不同的权限,而用户则是通过担任角色来实施权限,因此用户与权限不产生直接联系,而是通过角色来过渡。RBAC是一种被动式的控制访问方式,权限由管理员赋给角色,用户不能自主选择,也不能自主将权限授予他人。例如,在医院里,医院指定医生角色可以开处方,但他无权将开处方的权力传给护士。

2)角色继承

RBAC中的角色设置具有继承的特性,某些角色,不但有自己的特性,还可根据角色之间的关系继承其他角色的一些权限,从而有效地避免同一权限的重复授权。角色之间关系决定了角色权限的继承,这样也就自然反映出内部角色之间的责任、归属、职权关系。由此RBAC还建立了角色拓扑集的概念,拓扑集中需要包含上级和下级角色识别码、以及上级从下级继承的权限。角色继承关系同样可以利用医院层级关系的例子来理解,如图2,专家是比医生更高层级的角色,因此专家在角色拓扑集中位于上级位置,与医生的共同权限从医生处继承而来,同时专家还具有自己的特性权限。从图中可以看出,越是上级的角色拥有越多的权限。

3)RBAC中的关系集

角色/权限授权集,由不同角色的不同权限组成,包含所有对应角色和权限的识别码,可通过角色的建立和权限的更迭来管理。

用户/角色匹配集,包含所有对应用户和角色的识别码,通过将角色分配给用户或者取缔用户的角色资格等方法进行管理。

用户/角色权递集,用户获得的权限有两种,一是角色自身权限,一是角色继承的权限,因此权递集包含用户和角色识别码以及角色匹配性。记录具有用户所需权限的所有角色,当角色匹配性为“是”,用户才可获得角色的权限。

4)角色的其他特性

角色上限,在管理员设置角色时,应限制角色的上限,根据现实需求,一定时间内,某角色只能由一定数量的用户担任。

角色适应,一是静态适应,当某角色与用户所匹配的其他角色都不排斥时,该角色才能被匹配给该用户;二是动态适应,当用户的某角色与用户的其他当前活动角色都不排斥时,该角色才可成为用户的另一活动角色。

角色激活,用户同系统的交互便是会话,用户一个会话激活一个角色,并可同时进行多个会话,激活不同的角色。其中这些会话组成会话集,包含会话和用户识别码;角色组成了激活角色集,包含会话和角色识别码,关系如图3所示。

1.2 对RBAC的优化

RBAC模型通过“角色”概念将用户与权限联系起来,并可以对用户归纳、分组,减少了大量的个体数据量。但是在某些应用时会稍欠灵活,例如当管理员需要给某位护士赋予医生的个别权限时,就需要再增加一种新的角色,但是这种角色只是临时的,需要在收回此护士权限时删除,因此我们可以通过建立一张“用户/权限”集来满足模型可能会遇到的某些特例。该集包含用户和权限识别码、权限通行证,其中权限通行证用来决定用户是否直接有某种权限,且该集中的权限优先于“用户/角色”集中记录的角色权限。

2 几种权限控制算法

按照权限集的定义,集包含识别码、名称、描述三个字段,此种定义法具有一定的可扩展性,也保证了权限集的独立性,便于对用户和角色订制某些权限。但是当需要进行用户、角色和权限的关联性操作时,这种独立性很强的定义方法就显得不是很方便,要对库数据多次查询。因此,我们在定义中增加“权限值”字段,增强对权限的控制。常见的算法有以下几种:

2.1 位与运算法

权限值的集合用2的n次幂组成(可建立对照表来配置权限与数值的对应关系),用户的权限值为某一子集中的数和,如 15=1+2+4+8,3=1+2。如要检索包含某些权限的用户,先将这些权限的值相加,设和为M,然后select * from table where 1 and 用户权限值 = 'M';反之要判别用户有哪些个权限,取其权限值M,分别进行M&1,M&2,M&4,M&16...运算,结果若为真,表示用户具有“&”右边数值代表的权限。

2.2 素数标识法

将所有的权限按照某种标准排列,并与从小到大排列的素数进行一一对应,把对应素数的值定义为该权限的权限值,一个用户的权限值为其具备所有权限的素数值的乘积。如果我们要查询用户所具备的权限时,只需将用户权限值分解为素数乘积,积中所有的素数就代表用户具备对应的权限。例如,2、3、5、7、11、13六个数分别代表浏览、删除、录入、修改、拷贝、打印六种权限,如果一个用户权限值为130,将其分解质因数130=2*5*13,因此该用户具备浏览、录入、打印的权限。

2.3 “向量表”方法

将所有的权限按照某种标准排列,用一段由0、1表示的“向量”式字符串与之对应,每一位数对应一种权限,其中1表示具备该权限,0则反之,因此一个用户的权限值就是一个二进制的数。例如,权限表的排列顺序为浏览、删除、录入、修改、拷贝、打印,当用户具备浏览、录入、打印的权限,则权限值为101001;如果用户只拥有录入权限,则权限值为001。从上例可以得出,权限值的长度小于等于权限总数,这样的好处是在权限表中增加更多权限时,不影响用户的权限值。

3 结论

本文主要针对B/S系统中的几种权限设计模型和权限控制算法进行了分析与比较,在实际开发中不能照搬已有的模型或算法,而应结合具体的功能需求制定有效的权限设计方法,从而保证系统运行的高效性和权限控制的准确性。

参考文献

[1]王丙焕.股票交易监控系统中的访问控制[D].浙江:浙江大学硕士论文,2008.

[2]曹天杰,张永平.基于角色访问控制的总体设计[J].计算机应用与软件,2001(8):23-25.

[3]基于角色的权限设计方案-博客频道.http:///skyhackvip/article/details/5189867.

[4]关于权限的数据库设计-博客频道. http:///zhoufoxcn/article/details/1536110.

上一篇:基于GPS RTK技术的公路测量 下一篇:油气混输管线的优化设计