RBAC模型在教室动态管理工作平台中的应用
2017-04-15向兰宣
向兰宣
摘要:基于角色的访问控制(RBAC)模型是权限管理中应用比较多的一个模型,它主要通过将权限授予角色或用户组来完成对每一个用户访问许可资源的控制。在RBAC模型主要通过对角色,资源,用户,以及角色和用户的对象关系数据类的处理,结合位操作运算来完成权限的授予与撤销。因而应用RBAC模型的教室动态管理工作平台,权限设置变得非常简单和灵活。
关键词:RBAC;权限;角色;动态
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)34-0122-02
Abstract: Role-based access control (RBAC) model is a model of privilege management application more, mainly by granting permissions to roles or user groups to complete control over each user access to resources.In the RBAC model, through the role, resources, users, as well as the role and user object-relational data processing, combined with bit manipulation operations to complete the grant and revoke permissions.Thus RBAC model classroom dynamic management platform, permissions are set very easy and flexible.
Key words:rbac; authority; role; automatic
1 RBAC简介
RBAC英文全称是Role-Based Access Control,也就是我们平时经常说的基于角色的访问控制。它主要应用于计算机操作系统的安全控制,核心操作就是对相应的权限赋予相应的对象,从而使相对应的对象可访问许可的相关资源。
RBAC支持三个著名的原则,也就是最小权限、责任分离和数据抽象三个原则。因此它广泛地应用于各大应用系统中权限管理模型中。而当中最主要的就是权限的管理,说得简单就是“WWH”问题,即Who对What进行How操作,其中的Who就是权限的拥有者,What就是权限相对应的资源或对象,How就是指具体的权限(授予权限和撤销权限)。
2 教室动态管理工作平台中的权限分析
在教室动态管理工作平台中主要涉及的用户主要有学生、教师、管理员、而在教师中又分为普通教师、部门领导、学院领导等,而每种角色具有不同的权限。
2.1 学生
学生具有的权限相当较少,主要可以浏览全院教室列表,以及查询某个时间段空闲教室。这样学生在上自习时,不用像以前那样在教学楼一间一间的搜寻没有上课的教室。
2.2 普通教师
普通教师具有的权限主要有浏览全院教室列表,查询某个时间段空闲教室,还有就是申请使用教室。这样教师申请教室补课时,不用本人必须到学院教务处申请,再开具申请后教室使用审批单,减少了教师来回跑,提高了工作效率。
2.3 部门领导
部门领导具有普通教师所有的权限,另外他还有具有审批普通教师申请使用教室的初级权限。特别是申请教室来除补课外的活动,首先要部门领导同意后,教务处管理员再做审批。
2.4 学院领导
学院领导具有普通教师所有的权限,另外还具有查询各种生成报表的权限。例如教室使用率,教室空置情况,教室维护状态等报表。
2.5 管理员
管理员是管理工作平台最高权限的角色,他具有学生、普通教师、部门领导、学院领导所有角色的权限,还具有管理角色,分配权限,审批教室等功能。
3 RBAC模型在教室动态管理工作平台中的具体实现
RBAC模型实现主要涉及角色(Role),资源(Resource),用户(User),操作(Operator)以及角色和用户的对象关系(UserRole)五大数据类的处理。
3.1 角色(Role)
角色(Role)主要完成管理工作平台使用用户的分组。这样在给用户授予权限时不用为每一个用户授予权限,只需为一个用户组授予权限就可以了。角色数据类中主要有角色号,角色名,角色描述三个属性。如表1角色(Role)数据类所示:
3.3 用户(User)
用户(User)主要是使用管理工作平台中的每一个用户。用户数据类中主要有用户ID,用户姓名,用户密码等属性。如表3用户(User)数据类所示:
3.4 操作(Operator)
操作(Operator)主要完成的是管理工作平台中的每一个角色对资源进行增删改查操作的对应。其中增删改查又是通过位操作来完成了,也就是说我们在设计操作时通过一个数值来标识所具有的权限。因此主要有操作ID,角色ID,资源ID,操作数等属性。如表3.4操作(Operator)数据类所示:
3.5 角色用户(UserRole)
角色用户(UserRole)主要完成的是管理工作平台中的每一個用户所属的角色。因此角色用户(UserRole)数据类有主要有角色用户ID,角色ID,UID,操作数等属性。如表5操作(Operator)数据类所示:
3.6 具体实现
根据设计的五大数据类分别编写基本的增、删、改、查四大操作,用户利用用户名登录后,在角色用户类中找到相对应的角色ID,然后再根据角色ID在操作数据类中对应的可操作的资源ID,最后在资源数据类中找到可操作资源信息,最后就得到了用户实际可操作的资源,完成了数据权限的动态读取。其实现的部分核心代码如下:
//mysql数据类,完成数据库的连接,基本操作的实现
include_once 'MySQLDAL/MySQL.class.php';
//c代表添加权限,r代表读取权限,u代表修改权限,d代表删除权限
$sql = "select RID, aclState&1 c, aclState&2 r, aclState&4 u, aclState&8 d from t_acl where role_id='".$_GET["RoleID"]."'";
$mysql = CreateMySQL();
$res = $mysql->crud($sql);
$result = "";
while ($r=mysql_fetch_array($res))
{
$result .= $r["RID"] . ":" . $r["c"] . ":" . $r["r"] . ":" . $r["u"] . ":" . $r["d"] . ",";
}
$result = substr($result,0,strlen($result)-1);
echo $result;
4 结束语
根据程序运行结果可以看出,设计的程序能实现权限的自动读取的需求,能完成基于角色的权限管理。大大提高了系统的灵活性和可控性,可实现基于细粒度的权限管理。
参考文献:
[1] Bootstrap 3中文文档.Bootstrap的使用 [EB/OL]. http://v3.bootcss.com/css/.
[2] Luke Welling, Laura Thomsona. PHP and MySQL Web Developent[M]. 吴欣, 译. 北京: 机械工业出版社, 2009: 100-115.
[3] 百度百科. 位运算 [EB/OL]. http://baike.baidu.com/view /379209.htm.