(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模型的权限管理系统具有以下优势:由于角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,减小了授权管理的复杂性,降低管理开销;而且能够灵活地支持应用系统的安全策略,并对应用系统的变化有很大的伸缩性;在操作上,权限分配直观、容易理解,便于使用;分级权限适合分层的用户级形式;重用性强。