<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_逐迹</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/35196/rss</id><updated>2011-04-01T15:20:42Z</updated><author><name>aspxnuke</name><uri>http://www.cnblogs.com/aspxnuke/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/aspxnuke/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/35196/rss"/><entry><id>http://www.cnblogs.com/aspxnuke/articles/2002772.html</id><title type="text">基于RBAC模型的通用企业权限管理系统</title><summary type="text">1. 为什么我们需要基于RBAC模型的通用企业权限管理系统管理信息系统是一个复杂的人机交互系统，其中每个具体环节都可能受到安全威胁。构建强健的权限管理系统，保证管理信息系统的安全性是十分重要的。权限管理系统是管理信息系统中代码重用性最高的模块之一。任何多用户的系统都不可避免的涉及到相同的权限需求，都需要解决实体鉴别、数据保密性、数据完整性、抗否认和访问控制等安全服务(据ISO7498-2)。例如，访问控制服务要求系统根据操作者已经设定的操作权限，控制操作者可以访问哪些资源，以及确定对资源如何进行操作。目前，权限管理系统也是重复开发率最高的模块之一。在企业中，不同的应用系统都拥有一套独立的权限管</summary><published>2011-04-01T15:04:00Z</published><updated>2011-04-01T15:04:00Z</updated><author><name>aspxnuke</name><uri>http://www.cnblogs.com/aspxnuke/</uri></author><link rel="alternate" href="http://www.cnblogs.com/aspxnuke/articles/2002772.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/aspxnuke/articles/2002772.html"/><content type="html">&lt;p&gt;&lt;strong&gt;1. 为什么我们需要基于RBAC模型的通用企业权限管理系统&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;管理信息系统是一个复杂的人机交互系统，其中每个具体环节都可能受到安全威胁。构建强健的权限管理系统，保证管理信息系统的安全性是十分重要的。权限管理系统是管理信息系统中代码重用性最高的模块之一。任何多用户的系统都不可避免的涉及到相同的权限需求，都需要解决实体鉴别、数据保密性、数据完整性、抗否认和访问控制等安全服务(据ISO7498-2)。例如，访问控制服务要求系统根据操作者已经设定的操作权限，控制操作者可以访问哪些资源，以及确定对资源如何进行操作。&lt;/p&gt;&#xD;
&lt;p&gt;目前，权限管理系统也是重复开发率最高的模块之一。在企业中，不同的应用系统都拥有一套独立的权限管理系统。每套权限管理系统只满足自身系统的权限管理需要，无论在数据存储、权限访问和权限控制机制等方面都可能不一样，这种不一致存在如下弊端：&lt;/p&gt;&#xD;
&lt;p&gt;l 系统管理员需要维护多套权限管理系统，重复劳动。&lt;/p&gt;&#xD;
&lt;p&gt;l 用户管理、组织机构等数据重复维护，数据一致性、完整性得不到保证。&lt;/p&gt;&#xD;
&lt;p&gt;l 由于权限管理系统的设计不同，概念解释不同，采用的技术有差异，权限管理系统之间的集成存在问题，实现单点登录难度十分大，也给企业构建企业门户带来困难。&lt;/p&gt;&#xD;
&lt;p&gt;采用统一的安全管理设计思想，规范化设计和先进的技术架构体系，构建一个通用的、完善的、安全的、易于管理的、有良好的可移植性和扩展性的权限管理系统，使得权限管理系统真正成为权限控制的核心，在维护系统安全方面发挥重要的作用，是十分必要的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2. 我们需要了解哪些知识点&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.1. RBAC模型&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;标准RBAC模型由4个部件模型组成，这4个部件模型分别是基本模型RBAC0（Core RBAC）、角色分级模型RBAC1（Hierarchal RBAC）、角色限制模型RBAC2（Constraint RBAC）和统一模型RBAC3（Combines RBAC）&lt;/p&gt;&#xD;
&lt;p&gt;a. RBAC0定义了能构成一个RBAC控制系统的最小的元素集合。在RBAC之中,包含用户users(USERS)、角色roles(ROLES)、目标objects(OBS)、操作operations(OPS)、许可权permissions(PRMS)五个基本数据元素，权限被赋予角色,而不是用户，当一个角色被指定给一个用户时，此用户就拥有了该角色所包含的权限。会话sessions是用户与激活的角色集合之间的映射。RBAC0与传统访问控制的差别在于增加一层间接性带来了灵活性，RBAC1、RBAC2、RBAC3都是先后在RBAC0上的扩展。 &lt;/p&gt;&#xD;
&lt;p&gt;b. RBAC1引入角色间的继承关系，角色间的继承关系可分为一般继承关系和受限继承关系。一般继承关系仅要求角色继承关系是一个绝对偏序关系，允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构。 &lt;/p&gt;&#xD;
&lt;p&gt;c. RBAC2模型中添加了责任分离关系。RBAC2的约束规定了权限被赋予角色时,或角色被赋予用户时,以及当用户在某一时刻激活一个角色时所应遵循的强制性规则。责任分离包括静态责任分离和动态责任分离。约束与用户-角色-权限关系一起决定了RBAC2模型中用户的访问许可。 &lt;/p&gt;&#xD;
&lt;p&gt;d. RBAC3包含了RBAC1和RBAC2，既提供了角色间的继承关系，又提供了责任分离关系。 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;2.2. 组织机构&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;企业组织架构包含三个方面的内容：单位、部门和岗位。 一个单位可以设置多个部门，部门是组成单位的部分。一个部门可以设置多个岗位，岗位是职工职务、工作任务和责任、权限的统一。一个部门只能设定一个部门主管岗位，一个岗位可以由多个员工担任，员工是指机构中各种用工形式的人员。&lt;/p&gt;&#xD;
&lt;p&gt;相关术语&lt;/p&gt;&#xD;
&lt;p&gt;l 任务 是为了达到某一特定目标或者完成领导交待的工作而进行的一项活动。&lt;/p&gt;&#xD;
&lt;p&gt;l 职务 指对职工所应承担事务的规定。它与职位的不同点在于强调所承担的任务内容，而不是指任务的地点。&lt;/p&gt;&#xD;
&lt;p&gt;l 责任 指份内应做的事。即职工在职务规定的范围内应尽责尽职、保质保量地完成任务。&lt;/p&gt;&#xD;
&lt;p&gt;l 职责 职务和责任的统一。专指须有一名职工担负的各项任务组成的工作活动。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;3. 我们怎么设计基于RBAC模型的通用企业权限管理系统&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;根据RBAC模型的权限设计思想，建立权限管理系统的核心对象模型。对象模型中包含的基本元素主要有：组织机构（Organization）、部门（Department）、岗位（Post）、用户（User）、角色（Role）、系统功能（Function）、权限（Permission）。主要的关系有：分配角色权限PA（Permission Assignment）、分配用户角色UA（User Assignmen），具体描述如下：&lt;/p&gt;&#xD;
&lt;p&gt;a. 组织机构：使用系统的主体。&lt;/p&gt;&#xD;
&lt;p&gt;b. 部门：是组成单位的部分。&lt;/p&gt;&#xD;
&lt;p&gt;c. 岗位：是职工职务、工作任务和责任、权限的统一。&lt;/p&gt;&#xD;
&lt;p&gt;d. 用户：是权限的拥有者或主体。用户和权限实现分离，通过授权管理进行绑定。&lt;/p&gt;&#xD;
&lt;p&gt;e. 角色：权限分配的单位与载体。角色通过继承关系支持分级的权限实现。例如，科长角色同时具有科长角色、科内不同业务人员角色。&lt;/p&gt;&#xD;
&lt;p&gt;f. 系统功能：是系统所要保护的资源（Resource），可以被访问的对象。&lt;/p&gt;&#xD;
&lt;p&gt;g. 权限：对受保护的资源操作的访问许可(Access Permission)，是绑定在特定的资源实例上的。&lt;/p&gt;&#xD;
&lt;p&gt;h. 分配角色权限PA：实现操作和角色之间的关联关系映射。&lt;/p&gt;&#xD;
&lt;p&gt;i. 分配用户角色UA：实现用户和角色之间的关联关系映射。&lt;/p&gt;&#xD;
&lt;p&gt;我们对元素之间的关系作如下限制：&lt;/p&gt;&#xD;
&lt;p&gt;a. 一个单位可以设置多个部门&lt;/p&gt;&#xD;
&lt;p&gt;b. 一个部门可以设置多个岗位&lt;/p&gt;&#xD;
&lt;p&gt;c. 一个部门只能设定一个部门主管岗位&lt;/p&gt;&#xD;
&lt;p&gt;d. 一个岗位可以由多个员工担任&lt;/p&gt;&#xD;
&lt;p&gt;e. 一人员工担任多个岗位&lt;/p&gt;&#xD;
&lt;p&gt;f. 一个用户可以拥有多个角色&lt;/p&gt;&#xD;
&lt;p&gt;g. 一个角色可以由多个用户拥有&lt;/p&gt;&#xD;
&lt;p&gt;h. 系统功能与角色之间设置权限访问许可&lt;/p&gt;&#xD;
&lt;p&gt;i. 系统功能通过资源来限制访问&lt;/p&gt;&#xD;
&lt;p&gt;对象模型图如下：&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/aspxnuke/201104/201104012304112915.gif"&gt;&lt;img style="border-right-width: 0px; width: 397px; display: inline; border-top-width: 0px; border-bottom-width: 0px; height: 387px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://images.cnblogs.com/cnblogs_com/aspxnuke/201104/201104012304112915.gif" width="397" height="387" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4. 优缺点&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;4.1. 缺点&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;具体授权的方法必须通过不同的资源方法来实现控制，相对通用性比较差。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/aspxnuke/aggbug/2002772.html?type=2" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/aspxnuke/articles/2002772.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
