1、基于 RBAC 模型的通用权限管理系统的分析与设计【摘要】本文依据 RBAC 权限管理模型理论,主要介绍了权限管理系统的研究与设计。基于角色的权限控制模型(RBAC)是目前主流的权限控制模型,它比传统的自主访问控制(DAC)和强制访问控制(MAC)更优越,同时也提供了更高的灵活性和扩展性。本文通过对现有的权限管理模型进行分析与改进,从内部实现与外部接口调用两方面来分析权限和设计权限管理系统,并从授权方式的易用性与高效性考虑,对权限管理系统予以实现。 【关键词】权限控制;RBAC;权限管理系统 1 引言 软件开发企业竞争激烈,如何降低成本,特别是劳动力成本,避免重复工作量都在各企业发展策略考虑的
2、内容之内。要避免重复劳动力,相同模块重复开发,构建一个能在不同业务系统中复用的权限管理系统可以大大减少软件重复开发,降低软件成本,提高软件产品竞争力,是企业资源中的重要一部分。 长久以来,做为企业级框架最为重要的环节之一,权限的设计一直是架构师和开发设计人员最头疼的问题,如今,这已经远远大于对于 ORM数据访问持久层的重视程度。权限框架的重要性主要体现在: (1)它是其他业务模块的基础。任何有多成员参与的应用系统,必须涉及到成员之间的资源分享问题,这就需要一个灵活的权限系统为其做好资源授权。好的授权模型能大大减化业务设计的复杂程序。企业应用中的工作流管理,报表管理都是建立在它的基础上的。 (2
3、)它是系统性能的关键。应用系统中最耗资源的不是业务逻辑本身,而是业务逻辑中所涉及的各种资源的调配机制,有一个好的权限系统来合理分配资源的使用,能大大减轻业务逻辑运行的系统消耗。 (3)它的复用性,可配置性,减少在各系统中重复开发,能大大减轻系统开发成本。 所以,权限管理系统是企业开发框架的内核,也是各种个性化的应用系统开发的奠基石。要想开发一个高效稳定的应用系统,必须有一个高效稳定的权限管理系统作为前提。 2 RBAC 模型分析 权限控制模型,又称访问控制模型(Access Control Model)或者说授权模型(Authorization Model) ,简单来说就是关注“who can
4、 do what” 。目前,应用系统中主流发展的权限模型是基于角色控制的访问控制模型,即 RBAC 模型。 角色访问控制(RBAC)引入了 Role 的概念,其目的是为了隔离User(即动作主体,Subject)与 Privilege(权限,表示对 Resource 的一个操作,即 Operation+Resource) 。Role 作为一个用户(User)与权限(Privilege)的代理层,解耦了权限和用户的关系,所有的授权应该给予 Role 而不是直接给 User 或 Group。Privilege 是权限颗粒,由Operation 和 Resource 组成,表示对 Resource
5、的一个 Operation。 根据 RBAC 模型的权限设计思想,建立权限管理系统的核心对象模型。对象模型中包含的基本元素主要有:用户(Users) 、用户组(Group) 、角色(Role) 、目标(Objects) 、访问模式(Access Mode) 、操作(Operator) 。主要的关系有:分配角色权限 PA(Permission Assignment) 、分配用户角色 UA(Users Assignmen 描述如下: (1)控制对象:是系统所要保护的资源(Resource) ,可以被访问的对象。资源的定义需要注意两个问题:资源具有层次关系和包含关系。例如,网页是资源,网页上的按钮、
6、文本框等对象也是资源,是网页节点的子节点,如可以访问按钮,则必须能够访问页面。 这里提及的资源概念是指资源的类别(Resource Class) ,不是某个特定资源的实例(Resource Instance) 。 (2)权限:对受保护的资源操作的访问许可(Access Permission) ,是绑定在特定的资源实例上的。对应地,访问策略(Access Strategy)和资源类别相关,不同的资源类别可能采用不同的访问模式(Access Mode) 。例如,页面具有能打开、不能打开的访问模式,按钮具有可用、不可用的访问模式,文本编辑框具有可编辑、不可编辑的访问模式。同一资源的访问策略可能存在排
7、斥和包含关系。例如,某个数据集的可修改访问模式就包含了可查询访问模式。 (3)用户:是权限的拥有者或主体。用户和权限实现分离,通过授权管理进行绑定。 (4)用户组:一组用户的集合。在业务逻辑的判断中,可以实现基于个人身份或组的身份进行判断。系统弱化了用户组的概念,主要实现用户(个人的身份)的方式。 (5)角色:权限分配的单位与载体。角色通过继承关系支持分级的权限实现。例如,科长角色同时具有科长角色、科内不同业务人员角色。(6)操作:完成资源的类别和访问策略之间的绑定。 (7)角色权限 PA:实现操作和角色之间的关联关系映射。 (8)用户角色 UA:实现用户和角色之间的关联关系映射。 3 通用权
8、限管理系统的设计 3.1 需求分析 权限管理系统的功能主要是基于 RBAC 模型,建立对用户、角色、权限的维护管理,主要包括组织管理、角色管理、权限管理、对外接口、日志管理五大功能模块,下面将对各功能模块的用例进行分析: 组织管理功能将权限管理系统中的用户之间关系,以组织机构形式予以体现,主要包括机构、部门、岗位、机构岗位、人员、用户、工作组七大实体对象,组织机构管理就是对这七大实体对象进行关系的维护。角色管理功能模块主要进行角色的维护,角色与组织的关系维护以及角色授权,其主要系统用例分析如下:维护角色,维护角色的增加、删除、修改、角色权限查询等。角色授权,把角色授予给组织。微调人员角色,调整
9、人员拥有的角色信息。角色权限分配,对角色进行权限分配管理。 权限管理功能模块主要就操作权限和数据权限两部分进行维护与管理,具体系统用例分析如下:1.维护功能的访问权限,维将对功能的操作权限进行授权。2.设置对数据集的访问权限,控制对数据的查询。 另外,对外接口主要包括功能接口和数据接口两大类,功能接口主要用于外部系统对权限的查询调用,数据接口主要用于外部系统对组织、人员等数据集的查询导出。而日志管理主要用于记录系统操作记录与异常记录。 3.2 分层架构 系统采用普通的分层架构,为了考虑到服务层针对 Winform 类型表示层项目的远程调用支持,表示层和服务逻辑层中间加了服务工厂对象层,用于不同
10、类型的(主要是本地调用,远程 Remoting,远程调用)服务对象实例的创建。 表示层:人机用户界面设计层。 服务对象工厂层:用于创建服务逻辑对象实例,和服务逻辑层统简称为服务层。支持本地模式,远程对象调用模式。 服务逻辑层:业务逻辑的接口和逻辑的实现,供界面层调用。 数据持久层:业务对象持久化到数据库的操作层。 数据实体层:数据实体对象层,供以上各个层次间传递使用。 3.3 技术架构 考虑到平台的稳定性,兼容性,项目风险管理,企业信息化桌面应用软件的普及程度等因素,平台采用.NET 4.0 的 winform(桌面应用开发)和 webform(ASP.NET)开发技术实现,其中表示层和业务逻
11、辑层之间的通讯采用 Remoting 远程对象调用技术实现而不是本地对象的引用。 需要详细说明的有以下几点: ASP.NET WebForm 不直接调用服务层业务逻辑组件,采用远程对象调用的统一和客户端 Winform 一样调用远程对象。主要是为了便于搭建统一服务逻辑中心,方便客户端(WebForm 和 Winform)进行服务逻辑统一调用。 ASP.NET WebForm 采用 CodeBehind 方式进行页面开发。主要是方便页面间模块化和界面逻辑间的解耦,并利用 ASP.NET 本身特性方便实现web 页面插件化(热插拔) 。远程对象服务中心是个插件化的容器,将服务组件以插件的方式进行部
12、署。 4 总结 在竞争激烈的社会环境中,一个软件企业要更好的生存发展必须让自己的产品具有社会竞争力,这其中节约成品是其中关键一环,而有一个通用的框架积累能大大节省开发的重复量,而权限系统又是这个通用框架的关键一环,这就促使本文的产生,即分析设计一个可复用,可扩展的企业通用权限系统。 本文在此目标下,着重分析了通用权限系统一开始就面临的两大问题,对数据权限的支持和与具体业务代码的关注点分离,并提出基于RBAC 模型的权限模型实现权限系统与具体业务系统的解耦,并给出设计方案,为企业通用权限系统的搭建提供了理论和实际设计上的支持。 基金项目: 浙江广厦建设职业技术学院 2013 年院级课题基于 RBAC 模型的通用权限管理系统的设计与实现成果。