论文部分内容阅读
摘 要 基于角色的访问控制方法可以实现对用户、角色和权限的良好管理,文章以权限控制模型为例展现了RBAC的灵活应用,体现了RBAC在權限管理方面的优越性。
关键词 基于角色的访问控制 权限 角色
Abstract Role-Based Access Control can achieve good management of users, roles and permissions. This paper shows the flexible application of RBAC taking permissions control model for example, and reflects the superiority of RBAC rights management.
Key words Role-Based Access Control;permissions;role
信息系统中的访问控制技术通过授权用户访问数据的权限,保证了数据的完整性、机密性和可用性。基于角色的访问控制(Role-Based Access Control,RBAC)是目前应用非常广泛的资源访问控制方法,它可以实现对用户、角色和权限的良好管理[1]。
一、RBAC相关理论
RBAC的基本思想是:根据对系统的操作职能划分若干个角色,将权限授予角色,再将角色分配给用户主体,使主体得到客体的操作权限从而实现授权。RBAC模型将用户和用户所拥有的权限分离开来,使得管理员可以灵活的管理用户、角色和权限,从而减少了授权管理的复杂性,降低了管理开销[2]。
二、基于RBAC的权限控制模型的设计
根据RBAC的基本思想,以下以权限控制模型为例实现RBAC的应用。
(一)权限控制模型的物理模型设计
权限控制模型涉及到系统模块表、用户表、角色表,以及用户—角色关系、角色—权限关系,利用Power Designer建模工具进行数据库物理建模,体现出各个表之间的联系[3]。如图1所示。
图1 权限控制模型的PDM图
(二) 权限控制模型的实现
1.权限控制模型的技术架构
权限控制模型采用.NET 与C#开发技术,以软件三层架构为开发模式来实现对用户访问权限的控制。
2.权限检验函数设计
为了统一用户的权限控制,采用面向对象编程的思想,在公共模块下建立pageBase通用类,该类中定义了权限检验函数CheckRightAuth,用来判断用户所具有的权限。
该函数的定义如下:
private int CheckRightAuth(string ModuleId,string UserId)
{
int Right = 0;
string[] strLogin = new string[]{ ModuleId, UserId };
//定义业务逻辑层下的对象
Qx.Bll.SysRole sysrole = new SysRole();
//查询用户对模块的访问权限
Right = sysrole.GetUserModuleRight(strLogin);
return Right;
}
执行用户权限查询的SQL语句定义如下:
SELECT TOP 1 sysModuleRole.RightFlag FROM sysModuleRole, sysUserRole WHERE ModuleId = @ModuleId AND UserId = @UserId AND sysModuleRole.RoleId = sysUserRole .RoleId ORDER BY RightFlag DESC
根据查询出来的权限字段的值判断用户对模块的操作权限,-1表示无权操作,0表示浏览权限,1表示查询权限,2表示添加权限,3表示编辑权限,4表示删除权限,数值越大表示操作权限越高,高权限涵盖了低权限。
3.表现层设计
表现层的页面均继承于pageBase,通过调用父类的方法CheckRightAuth来检验用户对模块的访问权限,如果用户没有此操作权限,则会显示“你没有权限操作此功能”的提示。
三、结束语
本文以.NET为平台设计了基于RBAC的权限控制模型,实现了用户与访问权限的逻辑分离,降低了管理员的管理复杂度。但该设计模型的局限性表现在仅实现了 RBAC96基本模型的RBAC0模型,如需实现更复杂、功能更强的权限管理,则需要对RBAC0做进一步的扩展,这是本文后续的研究工作。
参考文献:
[1]王亮亮.RBAC技术在管理系统中的研究与应用[D].武汉:武汉理工大学,2008:18.
[2]杨凯.RBAC模型在Web环境下的研究与应用[D].太原:中北大学,2008:8.
[3]贾爱华,陈定方.NET平台下基于RBAC模型的用户权限控制[J].湖北工业大学学报,2008,23(3):29-30.
关键词 基于角色的访问控制 权限 角色
Abstract Role-Based Access Control can achieve good management of users, roles and permissions. This paper shows the flexible application of RBAC taking permissions control model for example, and reflects the superiority of RBAC rights management.
Key words Role-Based Access Control;permissions;role
信息系统中的访问控制技术通过授权用户访问数据的权限,保证了数据的完整性、机密性和可用性。基于角色的访问控制(Role-Based Access Control,RBAC)是目前应用非常广泛的资源访问控制方法,它可以实现对用户、角色和权限的良好管理[1]。
一、RBAC相关理论
RBAC的基本思想是:根据对系统的操作职能划分若干个角色,将权限授予角色,再将角色分配给用户主体,使主体得到客体的操作权限从而实现授权。RBAC模型将用户和用户所拥有的权限分离开来,使得管理员可以灵活的管理用户、角色和权限,从而减少了授权管理的复杂性,降低了管理开销[2]。
二、基于RBAC的权限控制模型的设计
根据RBAC的基本思想,以下以权限控制模型为例实现RBAC的应用。
(一)权限控制模型的物理模型设计
权限控制模型涉及到系统模块表、用户表、角色表,以及用户—角色关系、角色—权限关系,利用Power Designer建模工具进行数据库物理建模,体现出各个表之间的联系[3]。如图1所示。
图1 权限控制模型的PDM图
(二) 权限控制模型的实现
1.权限控制模型的技术架构
权限控制模型采用.NET 与C#开发技术,以软件三层架构为开发模式来实现对用户访问权限的控制。
2.权限检验函数设计
为了统一用户的权限控制,采用面向对象编程的思想,在公共模块下建立pageBase通用类,该类中定义了权限检验函数CheckRightAuth,用来判断用户所具有的权限。
该函数的定义如下:
private int CheckRightAuth(string ModuleId,string UserId)
{
int Right = 0;
string[] strLogin = new string[]{ ModuleId, UserId };
//定义业务逻辑层下的对象
Qx.Bll.SysRole sysrole = new SysRole();
//查询用户对模块的访问权限
Right = sysrole.GetUserModuleRight(strLogin);
return Right;
}
执行用户权限查询的SQL语句定义如下:
SELECT TOP 1 sysModuleRole.RightFlag FROM sysModuleRole, sysUserRole WHERE ModuleId = @ModuleId AND UserId = @UserId AND sysModuleRole.RoleId = sysUserRole .RoleId ORDER BY RightFlag DESC
根据查询出来的权限字段的值判断用户对模块的操作权限,-1表示无权操作,0表示浏览权限,1表示查询权限,2表示添加权限,3表示编辑权限,4表示删除权限,数值越大表示操作权限越高,高权限涵盖了低权限。
3.表现层设计
表现层的页面均继承于pageBase,通过调用父类的方法CheckRightAuth来检验用户对模块的访问权限,如果用户没有此操作权限,则会显示“你没有权限操作此功能”的提示。
三、结束语
本文以.NET为平台设计了基于RBAC的权限控制模型,实现了用户与访问权限的逻辑分离,降低了管理员的管理复杂度。但该设计模型的局限性表现在仅实现了 RBAC96基本模型的RBAC0模型,如需实现更复杂、功能更强的权限管理,则需要对RBAC0做进一步的扩展,这是本文后续的研究工作。
参考文献:
[1]王亮亮.RBAC技术在管理系统中的研究与应用[D].武汉:武汉理工大学,2008:18.
[2]杨凯.RBAC模型在Web环境下的研究与应用[D].太原:中北大学,2008:8.
[3]贾爱华,陈定方.NET平台下基于RBAC模型的用户权限控制[J].湖北工业大学学报,2008,23(3):29-30.