基于角色的访问控制在教务系统中的应用

时间:2022-10-10 03:58:25

基于角色的访问控制在教务系统中的应用

摘要 本文通过对RBAC96的分析提出扩展的RBAC模型(ERBAC),并且在高校教务系统中加以应用,验证了其有效性和实用性。

关键词 RBAC;角色;访问控制

中图分类号TP39 文献标识码A 文章编号 1674-6708(2011)54-0183-02

传统的高校教务系统的访问控制模块通常将用户和权限直接关联,这样的授权模型不方便系统的扩展,也不够灵活,当组织规模不断扩大、结构变换频繁时,就出现了大量繁琐的授权变化,权限管理的复杂度呈现指数增长的态势,而基于角色的访问控制(Role-Based Access Control,以下简称RBAC)模型能够较好的解决这个问题。

1 RBAC概述

RBAC模型引入了“角色”的概念,使得操作权限不直接授予用户,而是通过建立“用户角色权限”的映射关系,来灵活的表征组织内部以及用户与权限间的关系。现阶段RBAC的研究均以RBAC96为基础,RBAC96[1]由Ravi S.Sandhu教授及其领导的乔治梅森大学信息安全技术实验室(LIST)提出,主要由RBAC0、RBAC1、RBAC2和RBAC3组成,如图1所示。

图 1 RBAC96(包括RBAC0、RBAC1、RBAC2和RBAC3)

RBAC0是RBAC96模型的核心,主要包括U(用户集)、R(角色集)、P(权限集)和S(会话集),P由OPS(操作集)和OBS(客体集)组成。RBAC1在RBAC0的基础上增加了RH(角色分层)概念,使用偏序来描述这种角色继承的关系。RBAC2在RBAC0的基础上引入C(约束集)来决定对RBAC0各组件的操作是否被接受,只有被接受的操作才被允许。RBAC3综合了RBAC1和RBAC2,自然也包括了RBAC0。

RBAC96是一个基本模型,属于中性策略,这就决定了在应用中,可以根据实际情况对RBAC96进行扩展。

2 扩展的RBAC模型

本文根据我院教务系统的访问控制的实际需求,对RBAC96进行扩展,增加了“属性”的概念,形成了一个扩展的RBAC模型,简称ERBAC模型。

ERBAC模型在角色中形成了三元组(r, a, p),减少虚拟“中介”角色的出现,这样有利于简化权限指派,避免繁琐复杂。在用户中也形成了三元组(u, a, p),灵活动态的控制了用户所需的临时特权。同时,在用户中还形成了三元组(u, a, r),使得用户可以自动分配到相应的角色中,减小了数据添加维护的复杂度。由此可见,属性统一了模型的各部分,因此ERBAC是一种动态的基于属性的访问控制模型,在RBAC0的基础上增加了一个维度――属性,这也成为了它的核心,如图2所示,围绕这个核心,ERBAC具有相当大的伸缩性,可以灵活应用于我院教务系统中。

图 2 ERBAC模型的核心概念图

3 ERBAC在教务系统中的实现

我院教务系统使用技术,以C#为开发语言,其中可以很容易在系统中实现基于角色的安全性,许多代码都是以服务器为基础的,主要基于System.Web.Security[2]命名空间中的Membership和Roles类。教务系统的访问控制模块采用ERBAC模型,主要包括两方面子模块:一方面为系统设置模块,包括用户管理、角色管理、权限管理、属性管理、策略设置和数据备份;另一方面为用户认证模块,包括身份验证和权限获取。

系统设置模块通过用户管理、角色管理、权限管理和属性管理,可以实现用户、角色、权限及属性的增加、删除、修改等功能,也实现了它们之间关系的指派。这里需要特别说明,ERBAC模型中的属性按系统定义可划分为角色属性和权限属性,角色属性设置目标是为了动态分配给用户相应角色,而权限属性是为了动态分配权限给用户或者角色,故而在数据库表的设计中需要考虑这些。

用户认证模块通常是用于验证用户身份的合法性,此外在我院教务系统中,还通过用户认证模块分配给合法用户所拥有的权限。

包括三种基本的身份验证方式,分别为Windows身份验证、Forms身份验证和Passport身份验证。用户认证模块选取Forms身份验证,通过Forms身份验证,可以使用创建的登录窗体验证用户的用户名和密码,为经过身份验证的请求将被重新定向登录页面,用户在该页上提供凭据和提交窗体。用户的密码采用System.Security.Cryptography[2]命名空间中的MD5进行加密,这样使得明文传播的密码愈加安全。

合法用户通过身份验证之后,需要分配其相应权限,用户拥有的权限分为:直接从属性获取的权限、经角色间接获取的权限。经角色间接获取的权限还可以分为直接指派给角色的权限和经属性分配给角色的权限。这些权限难免会出现重复,需要进行删除,假设重复数组为permissionArray,则其算法如下:

int maxIndex = permissionArray.Length - 1;

if (maxIndex > 0)

{

List listInt = new List();//临时数组

Array.Sort(permissionArray);//排序数组

for (int i = 0; i < maxIndex; i++)

{

if (permissionArray[i] != permissionArray[i + 1])

listInt.Add(permissionArray[i]);

}

listInt.Add(permissionArray[maxIndex]); //将最后一个元素添加至临时数组中

permissionArray = listInt.ToArray();

}

4 结论

ERBAC应用于我院教务系统的访问控制模块,改善了传统用户与权限直接关联带来的问题,同时又增加了RBAC的灵活性,使得用户和角色均可以动态的授予权限,在实际使用十分方便快捷。以后还将不断地改进ERBAC,使其不仅应用于我院教务系统,还将服务于整个数字化校园的建设。

参考文献

[1]Ravi S.Sandhu,Edward J.Coyne,Hal L.Feinstein. Role-Based Access Control Models[J].IEEE Computer,1996:38-47.

[2]Christian Nagel,Bill Evjen,Jay Glynn,et al.C#高级编程[M].6版.北京:清华大学出版社,2008.

上一篇:框架码头立柱植筋质量控制 下一篇:抓怀旧心理 热卖土花猪