基于RBAC的权限管理系统的实现
0 引 言
本文引用地址:http://www.amcfsurvey.com/article/90104.htm在许多的实际应用中,不只是要求用户简单地进行注册登录,还要求不同类别的用户对资源有不同的操作权限。目前,权限管理系统也是重复开发率最高的模块之一。在企业中,不同的应用系统都拥有一套独立的权限管理系统。每套权限管理系统只满足自身系统的权限管理需要,无论在数据存储、权限访问和权限控制机制等方面都可能不一样,这种不一致性存在如下弊端:
(1)系统管理员需要维护多套权限管理系统,重复劳动;
(2)用户管理、组织机构等数据重复维护,数据一致性、完整性得不到保证;
(3)由于权限管理系统的设计不同,概念解释不同,采用的技术有差异,权限管理系统之间的集成存在问题,实现单点登录难度十分大,也给企业构建企业门户带来困难。
采用统一的安全管理设计思想,规范化设计和先进的技术架构体系,构建一个通用的、完善的、安全的、易于管理的、有良好的可移植性和扩展性的权限管理系统,使得权限管理系统真正成为权限控制的核心,在维护系统安全方面发挥重要的作用,是十分必要的。
本文介绍一种基于角色的访问控制RBAC(role-based policies access control)模型的权限管理系统的设计和实现,系统采用基于.NFT Framework 2.0架构技术实现,并讨论了应用系统如何进行权限的访问和控制。
1 RBAC的基本思想
企业环境中的访问控制策略一般有3种:自主型访问控制方法、强制型访问控制方法和基于危色的访问控制方法(RBAC)。其中,自主式太弱,强制式太强,二者工作最大,不便于管理。基于角色的访问控制方法是目前公认的解决大型企业的统一资源访问控制的有效方法。其最著的2大特征是:(1)减小授权管理的复杂性,降低管理开销;(2)灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。
美国国家标准与技术研究院(the national institute of standards and technology,NIST)标准RBAC模型由4个部件模型组成,这4个部件模型分别是基本模型RBAC0(core RBAC)、角色分级模型RBAC1(hierarchal RBAC)、角色限制模型RBAC2(constraint RBAC)和统一模型RBAC3(combines RBAC)。RBAC0模型如图1所示。
(1)RBAC0定义了能构成一个RBAC控制系统的最小的元素集合。在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素,权限被赋予角色,而不是用户,当一个角色被指定给一个用户时,此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性,RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。
(2)RBAC1引入角色间的继承关系,角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系最一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。
(3)RBAC2模型中添加了责任分离关系。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。
(4)RBAC3包含了RBAC1和RBAC2,既提供了角色间的继承关系,又提供了责任分离关系。
事实上,RBAC认为权限授权实际上是Who、What、How的问题。在RBAC模型中,who、what、how构成了访问权限三元组,也就是"Who对What(Which)进行How的操作"。这点我们在后面的描述中来详细讨论。
2采用.NET Framework 2.0架构设计
采用.NET Framework 2.0企业平台架构构建权限管理系统。NET Framework 2.0集成了先进的软件体系架构思想,具有采用多层分布式应用模型、基于组件并能重用组件、统一完全模型和灵活的事务处理控制等特点。而且在需要的时候,可以与Windows Server 2003的Active Directory进行无缝连接,直接通过Active Directory管理用户帐户。
系统逻辑上分为四层:表现层、业务层、数据访问层和数据层。
(1)表现层主要负责人机交互。可以使系统管理员通过Web浏览器访问。
(2)业务层提供业务服务,包括业务数据和业务逻辑,集中了系统业务处理。
(3)数据访问层主要负责数据的访问,如数据的增加、修改、删除和查找等。
(4)数据层主要负责数据的存储、组织和管理。数据层使用了 SQL Server 2000或SQL Server 2005来实现。
3核心对象模型设计
根据RBAC模型的权限设计思想,建立权限管理系统的数据库模型,如图2所示。
根据RBAC模型的权限设计思想,建立权限管理系统的核心对象模型,如图3所示。
由于RBAC解决的就是Who、What、How的问题,通过图3来做一个详细的描述:
Who:权限的拥用者或主体(User、Group、Role、Actor)。
What:权限针对的对象或资源(Resource),资源具有层次关系和包含关系。例如,网页是资源,网页上的按钮、文本框等对象也是资源,是网页节点的子节点,如可以访问按钮,则必须能够访问页面。资源应该是一个树形结构。
How:具体的权限(Privilege,正向授权与负向授权),这个权限是绑定在特定的对象上的。比如说教师测评系统新闻的发布权限,叫做"部门新闻发布权限"。这就表明,该Privilege是一个发布权限,而且是针对部门新闻这种资源的一种发布权限。权限,包括系统定义权限和用户自定义权限,用户自定义权限之间可以指定排斥和包含关系(如:读取,修改,管理三个权限,管理权限包含前两种权限)。
Operator:操作。表明对What的How操作。也就是Privilege+Resource的集合;
Role:角色,一定数量的权限的集合,是粗粒度和细粒度(业务逻辑)的接口。一个基于粗粒度控制的权限框架软件,对外的接口应该是Role,具体业务实现可以直接继承或拓展丰富Role的内容,Role不是如同User或Group的具体实体,它是接口概念,抽象的通称。Role的继承通过Group来体现,所以不考虑Role的继承关系。但是Role可以与相关的Group相关联,便于授权。
Group:用户组,权限分配的单位与载体,直接映射组织关系。权限不考虑分配给特定的用户。组可以包括组(以实现权限的继承)。组可以包含用户,组内用户继承组的权限。Group要实现继承。即在创建时必须要指定该Group的ParentGroup是什么Group。在粗粒度控制上,可以认为,只要某用户直接或者间接的属于某个Group那么它就具备这个Group的所有操作许可。细粒度控制上,在业务逻辑的判断中,User仅应关注其直接属于的Group,用来判断是否"同组"。
User:纯粹的用户,与权限分离,只能通过Role去关联相应的权限。
该模型中主要的关系有:分配资源操作RA(resource assignment)、分配角色权限PA(privi-lege assignment)、分配用户组角色GA(group as-signment)描述如下:
(1)分配资源访问RA:实现资源和操作之间的关联关系映射。
(2)分配角色权限PA:实现操作和角色之间的关联关系映射。
(3)分配用户组角色GA:实现用户组和角色之间的关联关系映射。 权限管理系统的操作模式主要分为以下3个步骤:
(1)创造资源、权限:用户创建一个资源(Re-source)的实例的时候指定相关的权限以及权限分配。比如学生测评只能创建者有修改的权限,同Group的人员只能拥有查看的权限。
(2)分配权限:系统管理员指定相关资源(Re-source)的权限分配,创建Role,创建Group,给Role分配权限,给Group分配User,给Group赋予某个Role等等。
(3)使用权限:User使用管理员分配的角色去使用相应的系统功能。
4权限访问机制
权限管理系统服务器端:提供集中管理权限的服务,负责提供用户的鉴别、用户信息、用户组信息,以及权限关系表的计算,如图4所示。
系统根据用户、用户组、角色、操作、访问方式和资源对象之间的关联关系,同时考虑权限的正负向授予,计算出用户的最小权限。在业务逻辑层使用SecuirtyManager.GetPower()方法实现此服务。采用代理Proxy模式,集中控制来自应用系统的所要访问的权限计算服务,并返回权限关系表,即二元组{ResouceId,OperationId}。
在表现层:可以通过访问能力表CL和访问控制表ACL两种可选的访问方式访问权限管理系统。以基于.NET Framework的教师测评系统为例,说明访问过程:
(1)首先采用基于表单的验证。考虑到需要鉴别的实体是用户,采用基于ACL访问方式。用户登录时调用权限管理系统的用户鉴别服务,如果验证成功,调用权限计算服务,并返回权限关系表,以HashTable的方式存放到登录用户的全局Session中;如果没有全局的Session或者过期,则被导向到登录页面,重新获取权限。
(2)直接URL资源采用基于CL访问方式进行的访问控制。如果用户直接输入URL地址访问页面,有两种方法控制访问:1.通过权限标签读取CL进行控制;2.采取页面载人判断权限模式,进行权限控制,如果没有权限,则重定向到登录页面。
5权限控制机制
由于应用系统的权限控制与特定的技术环境有关,以基于.NET Framework 2.0架构的教师测评系统为例来说明,系统主要的展示组件是aspx页面,采用标记和权限控制组件共同来实现。
(1)权限标识:利用页面标签来标识该页面上所有的权限访问控制对象。
(2)权限控制:应用系统用户登录系统时,从权限管理中获得权限关系表之后,一方面,权限标签控制页面展示;另一方面,利用权限控制组件在业务逻辑中进行相应的权限控制,尤其是和业务逻辑紧密联系的控制对象实例的权限控制。
6权限数据存储机制
权限管理采用了关系型数据库SQL Server2000或SQL Server 2005用来存储用户信息、用户组信息、角色、操作、权限等信息。
7结 论
本文论述了一种基于RBAC的权限管理系统的实现技术方案。该权限管理系统已成功应用于教师测评系统的设计和开发实践,与教师测评系统具有很好的集成。实践表明,采用基于RBAC模型的权限管理系统具有以下优势:由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销;而且能够灵活地支持应用系统的安全策略,并对应用系统的变化有很大的伸缩性;在操作上,权限分配直观、容易理解,便于使用;分级权限适合分层的用户级形式;重用性强。
评论