谢嘉华,黎明,吴俊,黄刚
(湖南科技学院电子与信息工程学院,永州425000)
采用基于角色的访问控制方法(RBAC)相对于强制或自主访问控制方法[1],其优势在于角色与权限之间的变化比用户与权限之间的变化更为稳定,减少了授权的复杂性,降低了出错的概率。并且RBAC能够根据需求的变动,快速灵活地响应企业或机构中影响要素的变化,拥有较高的安全机制保护系统安全。
但是目前RBAC模型中没有明确定义对数据权限的支持,仅单纯地以角色为单位授权作为实现策略,在目前企业和政府机构分工不断细化的形势之下,这种授权方式不够灵活,还会导致角色数据冗余严重,导致权限的管理变得复杂;传统RBAC模型没有完善的权限委托代理的机制,无法适应现实世界中权限的临时委托代理;而且角色继承中的私有角色泛滥等问题都是基于RBAC的访问控制传统模型有待解决的问题。
传统RBAC模型在应对临时任务分配以及角色权限收回的场景下,对角色权限管理操作极其繁琐,甚至容易导致潜藏的漏洞存在;例如,当临时委托时所赋予的权限忘记收回导致信息泄露,以及用户a和用户b具有相同的角色,随着企业的发展以至需要对两者的权限细节进行区分时,系统的管理功能就暴露出它的局限性。
经过研究,针对以上情况,本文在基于场景的观点上,提出了RBAC模型改进方法,通过以直接授权和间接授权两种方式对用户进行授权以及通过引入权限组的方法进行改进。
通过系统管理员对用户进行授权,授予具体的功能权限,例如用户能访问某一板块,某一资源,使用查询功能等;直接授权主要用于满足特殊状况下提高灵活性的需求,例如临时用户、或者超级用户等特殊用户。
在对于零散、临时、数据量小的用户数据录入的场景下,给临时用户赋予时间标签,然后直接赋予相应权限,当其访问资源或者享用服务时,在登录时系统对用户类型和时间标签进行检查,通过时间标签标识的时间在服务器端进行判断后若在有效期内则允许访问,若超出有效期则删除临时权限以及删除临时用户,而且在系统清理周期中会对临时用户进行检测,将过期的临时用户自动删去,从而达到简化操作、提高性能、减少安全风险的目标。
对于集中、临时、数据量较大的用户数据录入的场景下,采用构建临时角色(临时角色名称要求唯一),例如游客角色等,通过对临时用户添加时间标签、赋予临时角色从而获得权限,以达到提高效率的目的,对于该种临时用户依然采用在登录时检查用户类型和时间标签,在服务器进行判断,区别就在超过有效期时,先删除拥有该角色的所有用户,然后再删除角色。
对于长期、稳定的用户数据录入的场景下,通过对用户赋予相应的角色,角色映射一个权限的集合,其拥有某一特定职能的权限,用户则通过扮演某种角色而获得权限,最终实现相应的资源访问,这里引入权限组的方式进行优化,当用户扮演某一特定角色后,由于情况需要增加或减少对某一资源的控制,那么其操作是繁琐的,如图1和图2所示:
图1 RBAC下的权限分配
图2 更改用户A的权限
此时不能简单的将角色a中访问资源4的权限删除,如果直接将该权限删除,那么所有拥有该角色用户的权限都会改变,所以只能通过引入第三个角色为其分配权限然后赋予用户A让其失去对资源4的权限,那么就增加了一个角色和一条规则,这样导致了冗余的产生,复杂了权限管理,并增加了安全隐患,最终导致权限分配出现问题,但是通过引入权限组的方式则可以得到有效地避免这种情况发生。
在该方法中,角色所拥有的不是单一的权限,而是拥有一个权限组,表示拥有权限的范围,在权限组中有可以对拥有的权限进行细分,在这种情况下虽然用户可能拥有同一个角色但有不同的权限,但是其拥有的权限不会超过角色所定义权限组[2]的范围,其基于RBAC的改进模型如图3所示:
图3 基于RBAC的改进模型
该方法采用形式化语言说明如下:
假设U表示用户,R表示角色,A表示资源,UR表示用户U拥有的角色集合,UA表示用户U拥有的权限集合,RA表示角色R拥有的权限集合;
(1)UR⊆ U,RA⊆R,UA⊆UA
∀u ∈ U,∀r∈ R
(2)uR=r→uA⊆ uA
例如:用户A和用户B都只拥有同一个角色b,AR={b},BR={b},并且拥有相同权限 AA={1 ,2,4} ,BA={1 ,2,4},而b的权限范围为bA={1 ,2,3,4},如果此时上级要求用户A去执行某项任务需要给A增加权限3,并且删去权限4并且用户角色不变。
查看用户A的角色:
AR={b}
查看角色b所拥有的所有权限:
bA={1 ,2,3,4}
增加权限3,删除权限4:
AA={1 ,2,3},
然而其余拥有角色b的用户并没有任何影响。
BA={1 ,2,4}
可见:
bA⊆ AA⋃BA,而不是bA=AA⋃BA
通过此种方式如果改变用户的权限,只需要在用户拥有的角色中的权限组中进行增删就可以完成效果。
(1)当用户为临时并且零散时,采用直接授权,首先需要在临时用户表中输入用户数据并且设置时间标签,以及在临时权限表中赋予所需的临时权限,然后在临时用户权限表中,将临时用户编号和权限编号进行输入,当临时用户的时间标签过期之后进行访问、或者在系统清理周期内检查到过期的时间标签,系统后台根据时间标签查询到临时用户编号,根据临时用户权限表,删除临时权限和临时用户。
直接授权数据库模型如图4所示:
图4 直接授权数据库模型
(2)当用户为临时并且集中时,采用间接授权,首先在临时用户表中输入大量用户数据,之后在临时角色表中创建一个临时角色,接着在权限表中添加所需要的权限,然后在权限组权限表中添加记录并且在角色表中输入权限组编号,最后在临时用户角色表中,给同一权限的大量人员进行临时角色的赋予即可,当临时用户的时间标签过期之后、或者在系统清理周期内检查到过期的时间标签,系统后台将先根据用户编号,查询到临时角色和临时用户以及相应的权限组和权限,从而进行删除操作。
(3)当用户为长期并且较稳定时,采用间接授权,首先在用户表中添加用户数据,接着在权限表中添加权限,然后在权限组权限表中添加权限组编号和权限编号,创建相应角色,角色表中添加权限组编号,最后在角色用户表中插入角色编号和用户编号即可。
间接授权数据库模型[3]如图5所示:
图5 间接授权数据库模型
使用基于场景的改进RBAC模型后,有效减轻了管理人员的工作量,使得授权更加便利,应对不同场景更加灵活,具体从以下几个方面进行说明:
优点:
(1)采用直接和间接授权两种方式,对用户角色的授权更加灵活。
(2)引用权限组的方式,有效降低角色的冗余。
(3)使用基于场景的方法,对于超级用户,临时用户的授权更加的合理。
缺点:
(1)在角色对角色的管理关系上存在缺陷[4]。
(2)角色的继承机制存在问题,导致权限过大,不符合最小特权原则。
(3)对于真实情况的模拟存在问题,对于临时任务的分配,需要产生一个临时的用户身份。
使用改进RBAC模型相比于使用传统RBAC模型,该模型有如下特点:在处理临时人员访问的场景下,能够高效地处理临时任务并且解决临时人员逾期访问资源的权限回收问题,降低了系统维护人员的工作量和操作复杂度,提高了对于这类场景的处理能力。使用改进RBAC模型不仅在对企业和政府机构不断细化工作,细化权限的形势下给权限的分配提供了一个很好的方式,并且降低了大量角色数据在后台重复堆积,从而使得系统的运行更加的流畅。而且使用改进RBAC模型的系统拥有直接和间接授权两种授权方式,使得给用户授予权限的方式更加灵活。还能通过用户编号所携带的信息经过映射之后对资源访问进行限制,使得计算机所承担的工作量减少,有效地提高了系统效率和安全性。