一种通用权限管理方案的设计方案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档