一种通用权限管理方案的设计方案
基于RBAC的通用权限管理系统

基于RBAC的通用权限管理系统作者:何鼎权胡辉严家成来源:《电脑知识与技术》2020年第33期摘要:权限管理功能是信息管理系统的主要功能之一,是系统功能的不可或缺的部分,任何一个信息管理系统都涉及权限管理的核心功能。
通用安全的权限管理系统,保证管理信息系统的安全性是特别重要的。
基于角色的访问控制( Role-Base Access Control.RBAC)模型,以满足不同系统的建设需求,其优势在于角色与权限之间的变化比用户与权限之间的变化更加稳定,拥有较高的安全机制保护系统安全和有效提高系统开发效率。
关键词:权限管理功能;权限控制;RBAC中图分类号:TP311 文献标识码:A文章编号:1009-3044(2020)33-0097-02开放科学(资源服务)标识码(OSID):1 基于角色的访问控制传统的权限管理功能设计具有固定不变的特点,然而不同的系统之间资源具有差异性,一个权限系统无法在其他系统中通用,所以传统无法保留快速灵活地响应企业或机构中影响要素的变化,权限控制部分需要进行重新设计,以满足不同系统的需求,因此造成时间和资源的浪费[1]。
采用基于角色的访问控制方法(RBAC)相对于强制或自主访问控制方法,其优势在于角色与权限之间的变化比用户与权限之间的变化更加稳定,减少了授权的复杂性,降低了出錯的概率,并且RBAC能够根据需求的变动,拥有较高的安全机制保护系统安全。
2 RBAC模型RBAC模型使用户和权限分离,用户被赋予相应的角色而获得角色的权限,从而减少了权限管理的复杂度[2]。
在RBAC之中,用户和角色之间可以是多对多的关系,即一个用户在不同场景下是可以有不同的角色。
包含用户、角色、目标、操作、权限五个基本数据元素,用户和权限被分离独立开来,使得权限的授权认证更加灵活[3]。
3 系统分析与设计方案3.1身份认证当用户没有先执行登录操作,无法使用权限管理系统,会被Shiro安全模块阻止访问一切资源,待身份验证成功后,才可以使用权限管理系统,Shiro安全模块接收到用户的用户名和密码后,与数据库中的用户账号和密码相对应的做比对,若验证成功则进入管理系统主页面,否则给出错误信息并返回登录界面反馈给登录用户。
数据库权限设计方案

数据库权限设计方案概述数据库是一个关键的信息系统组成部分,对于保护数据的机密性、完整性和可用性至关重要。
在现代应用中,数据库的权限控制是确保只有授权用户可以访问和操作数据的重要方面之一。
本文档旨在提供一个数据库权限设计方案,以确保只有合适的用户能够访问和操作数据库。
目标和原则目标•限制对数据库的非授权访问•分配合适的权限给授权用户•简化权限管理和维护流程原则•最小权限原则:给予用户的权限应尽可能少,只包含其工作所需的最小权限。
这样可以减少意外数据泄露或不当操作的风险。
•隔离原则:将用户分组并给予特定组的权限,从而限制一组用户对其他组用户的访问。
•审计原则:记录和监控用户对数据库的访问和操作,以便及时发现和处理异常行为。
•合理性原则:按照工作职能和数据需求来分配用户的权限,确保权限的合理使用和高效管理。
权限设计数据库角色在权限设计中,可以使用角色来管理和分配权限。
数据库角色是一个逻辑组,可以包含一组权限和用户。
这样用户只需要分配到适当的角色即可获得相应的权限。
常见的数据库角色包括:•超级用户角色:拥有完全的数据库操作权限,包括创建、删除、修改和查询数据库对象、用户和角色等。
•管理员角色:负责管理数据库的日常操作,包括备份和恢复、性能优化等。
•开发者角色:负责开发和维护数据库应用程序,具有对数据库对象和数据进行查询和修改的权限。
•数据分析师角色:负责对数据库中的数据进行分析和报告,具有读取和汇总数据的权限。
根据实际需求,可以创建更多的角色,并根据角色的权限需求分配相应的权限。
权限分配在数据库中,权限可以分为两种类型:对象级权限和系统级权限。
对象级权限对象级权限控制用户对特定数据库对象(如表、视图、存储过程等)的访问和操作权限。
常见的对象级权限包括:•SELECT:允许用户查询数据。
•INSERT:允许用户向表中插入新数据。
•UPDATE:允许用户修改表中的现有数据。
•DELETE:允许用户删除表中的数据。
权限设计方案

权限管理设计一•博客分类:•设计设计模式数据结构应用程序权限设计我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。
1.基于角色的权限设计这种方案是最常见也是比较简单的方案,不过通常有这种设计已经够了,所以微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述2.基于操作的权限设计这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:但是如果直接使用上面的设计,会导致数据库中的UserAction这张表数据量非常大,所以我们需要进一步设计提高效率,请看方案33.基于角色和操作的权限设计如上图所示,我们在添加了Role,和RoleAction表,这样子就可以减少UserAction中的记录,并且使设计更灵活一点。
但是这种方案在用户需求的考验之下也可能显得不够灵活够用,例如当用户要求临时给某位普通员工某操作权限时,我们就需要新增加一种新的用户角色,但是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色,我们需要设计一种更合适的结构来满足用户对权限设置的要求。
4.2,3组合的权限设计,其结构如下:我们可以看到在上图中添加了UserAction表,使用此表来添加特殊用户的权限,改表中有一个字段HasPermission可以决定用户是否有某种操作的权限,改表中记录的权限的优先级要高于UserRole中记录的用户权限。
这样在应用程序中我们就需要通过UserRole 和UserAction两张表中的记录判断权限。
到这儿呢并不算完,有可能用户还会给出这样的需求:对于某一种action所操作的对象某一些记录会有权限,而对于其他的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有修改的权限,而对于另外一些频道没有修改的权限,这时候我们需要设计更复杂的权限机制。
用户权限管理设计方案

用户权限管理设计方案用户权限管理是一种重要的信息安全控制手段,能够确保系统中的用户只能访问其所需的数据和功能,防止未授权的操作和数据泄露。
本文将从用户权限的概念、设计原则、权限管理模型以及权限管理方案的实施等方面进行详细讨论。
一、用户权限的概念用户权限是指用户在系统中所具备的操作和访问资源的能力。
它涵盖了用户能够进行的操作类型、访问的资源范围以及操作的具体权限。
通过用户权限,系统可以灵活地控制用户在系统中的行为和操作,确保用户只能进行其所需的操作,从而提高系统的安全性。
二、用户权限管理的设计原则1.最小权限原则:用户应该被授予执行其工作所需的最小权限,以降低潜在的风险。
只有在确实需要的情况下,才应该授予更高级别的权限。
2.分级管理原则:根据用户的角色和职责将用户划分为不同的权限组,每个权限组仅拥有其所需的操作和资源访问权限。
3.统一权限管理原则:用户权限应该经过集中管理,避免出现分散和重复的权限设置,以减少管理成本和提高管理效率。
三、权限管理模型1. 自顶向下授权模型(Top-Down Authorization Model):该模型将权限从高层次向低层次授权,通过角色定义和角色授权的方式,将用户划分为不同的角色,每个角色拥有其所需的权限。
2. 基于角色的访问控制模型(Role-Based Access Control Model):该模型根据用户的角色将权限分配给用户,通过角色的添加、修改和删除来变更用户的权限。
3. 基于目录的访问控制模型(Directory-Based Access Control Model):该模型根据用户所在的组织结构进行权限管理,通过目录结构的设定和权限的继承来实现权限的控制和管理。
四、权限管理方案的实施1.确定用户的角色和职责:根据不同用户的角色和职责,将用户划分为不同的权限组。
同时,定义每个角色所需的操作和资源访问权限。
2.设计权限继承关系:通过权限的继承,将上层角色的权限传递给下层角色,以减少权限设置的重复。
php权限设计方案

php权限设计方案PHP权限设计方案在开发一个Web应用程序时,权限管理是非常重要的一项工作。
合理的权限设计可以保证应用程序的安全性和稳定性。
下面我将提出一个基于角色的权限设计方案。
一、用户角色的划分根据应用程序的特点和需求,将用户划分为不同的角色,比如普通用户、管理员、超级管理员等。
每个角色具备不同的权限。
二、权限的管理1. 权限表:创建一个权限表,用于存储系统中的所有权限。
表的字段包括权限ID、权限名称、权限描述等。
可以使用面向对象的方式来封装权限相关的操作。
2. 角色表:创建一个角色表,用于存储系统中的所有角色。
表的字段包括角色ID、角色名称、角色描述等。
可以使用面向对象的方式来封装角色相关的操作。
3. 用户角色关联表:创建一个用户角色关联表,用于存储用户和角色之间的关系。
表的字段包括用户ID、角色ID等。
可以使用面向对象的方式来封装用户角色关联相关的操作。
三、权限校验的实现在每个需要权限校验的页面或操作中,根据当前用户的角色,判断其是否具备访问或操作的权限。
1. 登录检测:在每个需要权限校验的页面或操作中,先检测用户是否登录,如果未登录则跳转至登录页面。
2. 权限校验:根据当前用户的角色,通过查询用户角色关联表,获取用户所具备的权限。
然后比对所需的权限,如果用户具备该权限,则允许访问或操作,否则提示无权限。
四、页面展示的控制根据用户的不同角色,控制页面上的权限展示。
比如普通用户登录后,只能看到部分页面,而管理员和超级管理员登录后可以看到所有页面。
可以通过在页面上进行相应的判断和控制来实现。
五、权限的维护1. 权限的添加、编辑和删除:可以在后台管理系统中加入权限的添加、编辑和删除功能,允许管理员对权限进行维护。
2. 角色的权限分配:可以在后台管理系统中加入角色的权限分配功能,允许管理员对角色的权限进行分配。
3. 用户的角色分配:可以在后台管理系统中加入用户的角色分配功能,允许管理员对用户的角色进行分配。
权限设计方案范本

权限设计方案权限管理设计一•博客分类:•设计设计模式数据结构应用程序权限设计我们在开发系统的时候,经常会遇到系统需要权限控制,而权限的控制程度不同有不同的设计方案。
1. 基于角色的权限设计这种方案是最常见也是比较简单的方案,不过一般有这种设计已经够了,因此微软就设计出这种方案的通用做法,这种方案对于每一个操作不做控制,只是在程序中根据角色对是否具有操作的权限进行控制;这里我们就不做详述2. 基于操作的权限设计这种模式下每一个操作都在数据库中有记录,用户是否拥有该操作的权限也在数据库中有记录,结构如下:可是如果直接使用上面的设计,会导致数据库中的UserAction 这张表数据量非常大,因此我们需要进一步设计提高效率,请看方案33. 基于角色和操作的权限设计如上图所示,我们在添加了Role,和RoleAction表,这样子就能够减少UserAction中的记录,而且使设计更灵活一点。
可是这种方案在用户需求的考验之下也可能显得不够灵活够用,例如当用户要求临时给某位普通员工某操作权限时,我们就需要新增加一种新的用户角色,可是这种用户角色是不必要的,因为它只是一种临时的角色,如果添加一种角色还需要在收回此普通员工权限时删除此角色,我们需要设计一种更合适的结构来满足用户对权限设置的要求。
4. 2,3组合的权限设计,其结构如下:我们能够看到在上图中添加了UserAction表,使用此表来添加特殊用户的权限,改表中有一个字段HasPermission能够决定用户是否有某种操作的权限,改表中记录的权限的优先级要高于UserRole中记录的用户权限。
这样在应用程序中我们就需要经过UserRole和UserAction两张表中的记录判断权限。
到这儿呢并不算完,有可能用户还会给出这样的需求:对于某一种action所操作的对象某一些记录会有权限,而对于其它的记录没有权限,比如说一个内容管理系统,对于某一些频道某个用户有修改的权限,而对于另外一些频道没有修改的权限,这时候我们需要设计更复杂的权限机制。
权限体系设计方案

权限体系设计方案权限体系设计方案是指在一个系统中,对不同用户设置不同的权限,以保证用户只能访问其具备权限的功能和数据,从而确保系统的安全性和稳定性。
1. 了解业务需求:首先,需要清楚了解系统的业务需求,包括哪些功能和数据需要设置权限,哪些用户需要访问哪些功能和数据等。
2. 确定权限层级:根据业务需求,将权限分为不同的层级,例如管理员、普通用户、访客等。
不同层级拥有不同的权限,管理员拥有最高的权限,可以访问和管理所有功能和数据,访客只能访问系统的部分功能或数据。
3. 设计权限分组:将相似权限的功能归类为一个权限分组,例如用户管理、数据管理、报表查询等。
每个权限分组可以设置哪些用户属于该分组,以及每个用户在该分组中的具体权限。
4. 分配权限:根据用户的角色和业务需求,将权限分配给不同的用户。
可以采用角色权限分配的方式,即给用户分配特定的角色,角色再拥有特定的权限;也可以采用直接分配权限的方式,即直接给用户分配具体的权限。
5. 权限控制:在系统中加入权限控制的逻辑,即在用户访问功能和数据之前,对用户进行权限验证。
可以在系统的某个公共入口处进行验证,也可以在每个功能模块中进行验证。
6. 权限管理:在系统中提供权限管理功能,让管理员可以方便地管理用户的权限。
管理员可以添加新用户、分配角色或权限、修改用户的角色或权限、删除用户等操作。
7. 日志记录:在系统中记录用户的操作日志,包括用户的登录、注销、角色或权限的变更、访问功能和数据的记录等。
这样可以方便管理员查看用户的行为,及时发现异常或不合规的操作。
8. 定期审核:定期对权限体系进行审核和更新,包括检查用户的角色和权限是否合理、是否存在冗余或过度的权限、是否存在错误或安全隐患等。
及时发现并修复问题,保证权限的有效性和安全性。
总结:权限体系设计是系统安全性的重要组成部分,一个合理和严密的权限体系可以保护系统的核心功能和数据,提高系统的安全性和稳定性。
通过以上的步骤和方案,可以实现一个适应业务需求的权限体系,并有效管理和控制用户的权限。
(完整版)权限管理设计

对EMS权限管理模块设计1.权限设计概述1.1引言随着Web 服务的复杂度增加以及用户数量和种类的增多,安全问题在理论及工程上都是一个必须考虑的问题,而权限管理是安全问题中一个很重要的方面。
因此本文针对权限做了一个分析。
权限可简单表述为这样的逻辑表达式:判断“Who对What(Which)进行How的操作”的逻辑表达式是否为真。
1.2意义❖用户管理及权限管理一直是应用系统中不可缺少的一个部分❖系统用户很多,系统功能也很多❖不同用户对系统功能的需求不同❖出于安全等考虑,关键的、重要的系统功能需限制部分用户的使用❖出于方便性考虑,系统功能需要根据不同的用户而定制1.3目标直观,因为系统最终会由最终用户来维护,权限分配的直观和容易理解,显得比较重要,除了功能的必须,更主要的就是因为它足够直观。
简单,包括概念数量上的简单和意义上的简单还有功能上的简单。
想用一个权限系统解决所有的权限问题是不现实的。
设计中将变化的“定制”特点比较强的部分判断为业务逻辑,而将相同的“通用”特点比较强的部分判断为权限逻辑就是基于这样的思路。
扩展,采用可继承的方式解决了权限在扩展上的困难。
引进Group概念在支持权限以组方式定义的同时有效避免了权限的重复定义。
2.基于角色的权限管理设计(Role-Based AccessControl ,RBAC)2.1权限管理用例图2.2用例图描述超级管理员:系统中默认的角色,它是系统中拥有最高权限的角色,它不仅能够管理其他的管理员和用户,而且还可以对系统中每个模块的任一功能进行操作、维护。
普通管理员:它是由超级管理员创建的,并授予权限,它能够管理系统中大部分的功能,它可以查看所有普通管理员、普通用户的信息,它只能对由它自己创建的用户进行编辑、删除操作,和管理拥有权限的模块。
普通用户:它是系统中最低权限的角色,它只能对自己拥有的权限进行操作,一般情况下,它的权限是对信息的浏览和对自己信息的录入,修改。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一种通用权限管理方案的设计方案
分析了权限管理的概念和一些与权限管理容易混淆的概念。
提出了一种目前可以应用到绝大多数与权限有关的系统设计中的通用权限管理方案。
该方案以角色对用户进行分组,通过用户数据库、角色数据库、权限数据库、用户-权限数据库以及角色-权限数据库来实现权限的分层管理。
该设计方案能够由管理员方便的对权限进行设置。
通过对角色的权限设置可以达到快速设置权限。
通过对用户的权限设置可以达到权限的精确控制。
文章最后以某项目为基础对该权限设计方案进行了实现。
通过测试,该方案能够很好的对用户权限进行控制,从而提高整个系统的安全性。
标签:权限系统角色数据库
1 权限管理的概念
权限管理是软件系统中最常见的功能之一。
所谓权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源,不多不少。
权限管理几乎出现在任何系统里面,只要有用户和密码的系统。
尤其是在B/S机构的系统中,由于没有专门的客户端软件系统,所以权限管理就显的尤为重要。
如果一个B/S系统的权限管理设计的不好,那么一个“非法用户”就可以轻而易举的获取整个系统的所有本能,包括超级管理员的功能。
那么这样的系统还有谁敢使用。
很多人,常将“用户身份认证”、“密码加密”、“系统管理”等概念与权限管理概念混淆。
用户身份认证,根本就不属于权限管理范畴。
用户身份认证,是要解决这样的问题:用户告诉系统“我是谁”,系统就问用户凭什么证明你就是“谁”呢?对于采用用户名、密码验证的系统,那么就是出示密码。
当用户名和密码匹配,则证明当前用户是谁;对于采用指纹等系统,则出示指纹;对于硬件Key 等刷卡系统,则需要刷卡。
密码加密,是隶属用户身份认证领域,不属于权限管理范畴。
2 权限管理的设计
2.1 权限管理的对象在一般的系统设计中,权限管理的参于对象包括用户对象、角色(或分组)对象、功能模块对象。
角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色。
功能模块则对不同的系统来说各不相同,一般在系统设计中最终将其以图形界元素的形式表现出来(比如软件界面上的各个功能按钮)。
2.2 权限管理举例下面我们举例说明2.1中提到的用户、角色、功能三个对象在权限管理中具体应用。
表1中列出了某文档管理项目中权限管理的一部分设计表。
从中我们可以清晰的区别出这三个对象以及它们的各自作用。
2.3 权限管理解决方案根据2.2中的举例就可以看出要实现这种分层的权限管理,需要将用户数据、角色数据、权限数据进行保存。
在一般的系统,为了方便的管理这些数据及其之间的关系,都是采用數据库的方式进行管理。
对简单的、固定的权限管理也可采用xml文件或配置文件的方式来管理权限。
为此可以设计以下几张关键的数据表:
①用户表:记录用户的相关信息,id作为唯一的用户标识;②角色表:记录角色的相关信息,id作为唯一的角色标识;③模块及功能表:记录模块相关信息及模块的相关功能。
这种三层的用户权限管理为一种最基本的权限管理模式,在有的系统中还可以以此为基础进行扩展。
比如在某文档管理系统还会多此一个目录表。
不同的角色的权限同时取决于在那个文档目录下,也就是说不同的角色的权限在不同的目录中不是固定不变的。
这种情况下可以再加上一个相应的数据表。
3 权限管理的实现
3.1 数据库的设计实现根据2.3中的讨论,我们建立以下几数据库来分别表示2.1中的权限管理各个对象。
3.1.1 员工组织结构表(staff_structure) 包含以下几个字段:id:编号,自动增长。
name:组织结构名称。
path:组织结构目录,以/分开,如/销售部/第一小组。
根据这个可以很方便的将结构组织成树型结构,并进行删除插入修改等操作。
depth:结构所在层数。
以便构成组织结构树。
3.1.2 员工表(staff) username:唯一标识用户的用户名。
id_struct:外键,保存员工组织结构表(staff_structure)中的主键id,表明员工的组织结构。
password:员工登录密码。
real_name:员工真实姓名。
image:员工照片路径。
3.1.3 文档目录结构(directory) 包含以下几个字段:id:主键,唯一性编号。
name:目录名称。
path:存放父目录id路径(用/隔开)。
date:目录创建时间。
depth:目录所在层数。
3.1.4 权限表(permissions) 包含以下几个字段:id:为编号:自动增长。
其余字段分别对应了系统的具体权限。
如果要扩展权限可以对该表进行扩展。
利如在某文档管理项目中有十个权限分别为创建子目录、删除子目录、上传文件、删除文件、下载文件、在线阅读、在线比较、根据模板创建文件、上传模板、删除模板。
3.1.5 目录权限表(permissions) 包含以下几个字段:id:主键,唯一性编号。
id_permissions:外键,与permissions表相关,表示目录权限。
id_directory:外键,与directory表相关,表示是那个目录的权限。
username:外键,与staff表相关,表示该权限为哪个用户分配。
3.2 权限表的初始化3.1中的权限表permissions中有十个分别对应该系统具体权限的字段。
这些字段的数据类型为bit型。
即每种权限只有打开和关闭两种状态。
所以对应十种具体权限的系统。
所有权限的组合的最大数目为即1024种。
所以权限表的一种设计方法为:系统初始化的时候使用程序把所有的权限组合都初始化好。
以后在设置权限的时候只需要在这个表中查找相应的权限组合。
还有一种设计方法为:权限表在初始化的时候不存任何权限。
而在以后设置权限的时候对每一种组合先在数据库中搜索。
如果搜索到了则取出其编号。
如果没有搜索到就将新的权限组合插入到权限表中,然后再取出其编号。
参考文献:
[1]David F.Ferraiolo,D.Richard Kuhn and Ramaswamy ChanDramouli.《Role-Based Access Control》[M].Artech House,2003.134-136
[2]代文龙.《权限系统概要》[EB/OL]./jivejdon/thre
ad/7309.html,2003.06.
[3]宋维平,曾一,涂争光等.B/S模式下OA系统的权限控制设计与实现.计算机工程与应用,2004(35):199-201.
[4]张晓辉.大型信息系统用户权限管理.计算机应用,2000,20(11):35-39.
项目名称:大规模虚拟试验中网络互联问题研究、运用信息技术手段构建网络教研新模式研究。
项目编号:11YKZ017、SJHYBKT2011004-03。