`
Jatula
  • 浏览: 276822 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

系统权限设计概述

阅读更多

   因为我在上一个的项目中负责有关权限控制这一块,所以Linkin把权限系统方面的设计工作交给我了。但是,我不想沿用以前我们设计的权限系统,因为我们以前的权限系统有一些缺陷。并且在做以前的权限系统的时候也积累了一些我的想法,希望能在这次的系统中把我以前的一些想法应用上去,设计出一个更好的权限系统,因为这个权限系统是为大中型企业应用框架服务的,所以会比较全面,但是又绝对不会像某些变态的ERP系统对数据表中的每个字段都作CRUD权限控制。我设计的原则是“够用,好用”。权限系统只负责粗粒度上的控制,细粒度的权限控制,交与子业务系统自己负责。

 说到权限控制,从应用系统诞生那天起,他就跟随着出现了。说白了所谓权限控制就是你只能访问和操作特定的系统资源。就像正常情况下你只能从银行里取出属于你自己的钱一样。同样你也只能查询你自己的帐户里面的余额。似乎是老生常谈了,那就让我们直奔主题吧。

 如何在我们自己的系统中设计一套安全,易用,能够适应以后企业级应用扩展的权限控制机制。经过权衡和我们自己以往的经验,认为基于角色的访问控制方法(RBAC)。是目前公认的解决大型企业的统一资源访问控制的有效方法。其显著的两大特征是:
   1.减小授权管理的复杂性,降低管理开销。
   2.灵活地支持企业的安全策略,并对企业的变化有很大的伸缩性。

首先让我们来认识一下,在角色(Role)控制访问中需要用到的几个概念:
   1.User(用户)。一个具有系统唯一标识(一般是账号Account)的纯粹用户,他和Role和Group有关联。本身他的权限是被分离出去的,User也不能与任何权限有任何的联系。他的权限通过Role去关联。

   2.Role(角色)。角色的作用就是和众多的权限相连,然后一个User或是一个Group必须和一个Role关联,才具有与该Role相连的所有的权限。呵呵不知道,我表达清楚了没有。举一个例子,比如系统中有一个“招聘信息发布员”角色,一个账号“MyAccount”。这个“招聘信息发布员”的角色具有“添加”、“编辑”、“删除”招聘信息的权限。我就只需要把“MyAccount”这个账号加入到“招聘信息发布员”的角色中去,“MyAccount”就具有了相应的权限。如果到后面还有“MyAccount2”“MyAccount3”.也需要同样的权限,和前面一样。我们把他们加入到“招聘信息发布员”角色中去就好了。大大降低了授权管理的复杂度。(在我的想法里,还有一种特殊的Role,这种Role可以和机构有所联系,可以为加入该Role的User指定相应的业务机构,比如“招聘管理员”这个角色,很有可能出现总公司的招聘人员负责几家子公司的招聘工作,那么有了这样的Role,我们那个把招聘人员加入的同时,指定他所管理的机构就可以达到目的。类似的还有一个文秘管理几个公司的情况。这种Role为业务系统的扩展提供了很大的便利。)

   再进一步,我们试着想象如果角色之间可以继承权限,那么权限的设置是不是就更加的简单了呢。角色A只要继承角色B,角色A的权限就是角色A和角色B的权限的合集。这我们这个医疗信息系统中,我决定尝试一下角色可单继承的权限控制。尽可能的简化授权操作。

   3.Group(用户组),似乎这个概念和Role和有雷同之处,感觉都是一些个用户的组合。从本质上说两者确实都是对某些特定用户的抽象和提取。比如说Role(角色)就是对User的操作权限共性的提取。举个例子上面我们提到的“招聘信息发布员”,他理所当然的具有管理本部门招聘信息的权限,这是系统中所有招聘管理员的权限共性。所以就产生了“招聘信息发布员”这个角色。区别于Role,Group提取更多的是User的部门共性和职位共性,Group中的User可以是一个部门中的所有员工,也可以是公司中所有的文秘,甚至可以就是几个人的组合。当然在我们的系统中绝大多数的组都是和机构一一对应的,并且这样的组通过所属机构的层次关系表现出包含关系,子机构的组必然包含于父机构的组。我把这种组称为“Organ Group”——机构组。同时可以添加一些自定义的组,把你想归纳的User加入到该组中,这样的组我把它叫做“User defined Group”——自定义组。 为什么要这么设计呢?把人员划成这么多组。这里有几个优点
    (1)可以简化授权。直接把一个组里面的人员全部加入一个角色,省的一个一个的去加。
    (2)方便的资源管理。在现实的环境中,个个业务部门所属的资源是不一样的。比如一个文件发布的功能,需要选定浏览范围,这样只要把公文赋给几个特定的组就可以了。这几个组里面的人自动获得了浏览该公文的权限。
    (3)业务的灵活体现。因为有自定义组的存在,当出现新的业务,比如有一个临时项目组,需要拉几个人,只需要新建一个自定义组,便可以对其进行各种业务操作。

   4.Permission(权限许可)。在这里先要说说Resource(资源)和 Operation(操作)的概念。Resource就是系统里面可用的功能模块,比如“人员信息管理”。而操作就是在管理模块里的添加,删除和修改等等。Permission就是(Resource + Operation),而Permission就是和Role紧密相连的权限了。Administrator也就是将这些Permission赋给Role,那么Role中的User便具有相应的权限了。

   5.Organ(机构)。这个倒是无需多言。机构是整个信息系统的骨架,最直接的Organ Group就是建立在机构之上的。

   6.Position(职务)。这个概念好像离权限系统的设计有点远,我也一直在犹豫要不要把这个和人事系统更有血缘关系的东东弄到权限系统中来,来回思考了我们框架的目标——“一个高可扩展性,高可靠性,支持快速构建业务的企业级应用基础框架”,并且现在企业数据都希望能够“大集中”、“大统一”,未来的人事系统可以完全的构建在我们的框架之上,作为一个子系统而存在。所以我最终还是决定,将这个概念引到我们的权限系统中来,并且成为不可或缺一部分,任何User必须具有在某个Organ下的Position才能进入到系统。

    Linkin这里指出这样做似乎有过度设计之嫌,不符合XP的精神。我也有这么一点点感觉,因为我感到现在的设计已经基本能解决所有的权限问题了,甚至考虑到了未来的业务系统的权限实现方式。同时,这个权限设计确实有点趋于复杂(当然还不至于变态),会对今后系统管理员的素质提出更高的要求。有点不好把握,还是大家讨论讨论吧。

 

已发表 2005年9月24日 23:25 作者 windtower
3
4
分享到:
评论
2 楼 mengz 2008-08-21  
Permission = Resource + Operation
这句说的真好。
1 楼 playfish 2008-04-16  
关于权限设计,RBAC确实应该是一个很好的模型了。引入用户组还有其他级别其实主要依赖于需求。liferay(www.liferay.com)它的权限系统做得很不错。它的级别更复杂,有企业-组织 ,用户组,角色,社区。建议你参考一下。只要官方上去下个包,开源的,解压就能用。

相关推荐

    用户权限系统设计概述

    权限系统的核心由以下三部分构成:1.创造权限,2.分配权限,3.使用权限,然后,系统各部分的主要参与者对照如下:1.创造权限 - Creator创造,2.分配权限 - Administrator 分配,3.使用权限 - User:

    软件架构--系统设计概述

    本文将深入探讨“软件架构--系统设计概述”这一主题,旨在为学习者提供一个全面的理解,帮助他们从宏观层面把握软件开发的核心。 系统设计是软件架构的重要组成部分,它关注的是如何将业务需求转化为技术实现。在这...

    系统架构设计课件 系统设计概述+系统表示层设计

    本课件主要关注两个核心方面:系统设计概述和系统表示层设计。 首先,我们来探讨系统设计概述。系统设计是将业务需求转化为技术解决方案的过程,它包括了对系统的整体规划、模块划分、接口设计以及数据结构和算法的...

    客户信息管理系统总体设计概述.docx

    "客户信息管理系统总体设计概述" 本客户信息管理系统总体设计概述是基于《客户信息管理系统总体设计》和《客户信息管理系统需求报告》的依据,旨在明确程序具体实现功能、指导编程人员以后的编程工作。该系统的主要...

    ASP.NET系统用户权限设计与实现

    ASP.NET 系统用户权限设计与实现 ASP.NET 系统用户权限设计与实现是指在 ASP.NET 系统中设计和实现用户权限控制的机制,以满足电子商务系统对安全性的要求。该机制基于 RBAC(Role-Based Access Control,基于角色...

    基于微信小程序的学生活动管理系统设计概述.pdf

    《基于微信小程序的学生活动管理系统设计概述》这一文献,详细介绍了如何利用微信小程序技术,设计并实现一个高效的学生活动管理系统,以满足现代教育的需求。 ### 微信小程序与学生活动管理系统的结合 微信小程序...

    通用数据权限管理系统设计

    ### 通用数据权限管理系统设计详解 #### 一、引言 在现代企业的信息化管理中,权限管理成为确保数据安全和合理使用的关键环节。一个高效、灵活的通用数据权限管理系统不仅能够提升企业的运营效率,还能更好地保护...

    客房信息管理系统包括需求概述 系统模块 数据流图

    《客房信息管理系统:需求概述与系统模块解析》 在当今信息化时代,酒店业为了提升服务质量与效率,纷纷采用客房信息管理系统。这样的系统旨在通过计算机技术整合旅客信息、客房信息及各类资源,以优化运营,降低...

    权限系统概要-权限系统概要

    ### 权限系统概要分析 #### 权限系统概要理解 权限系统是现代软件系统中的关键组成部分,主要用于管理...通过对权限模型、权限元素以及权限实现方式的深入了解,我们可以更好地设计和实现符合实际需求的权限系统。

    权限管理概述

    良好的权限设计不仅可以提升系统的安全性,还能提高工作效率,减少因权限问题带来的潜在风险。 #### 一、什么是权限管理 权限管理是指通过定义、分配和管理一系列规则来控制用户对系统中的资源或功能的操作权限的...

    图书馆管理系统项目概述

    ### 图书馆管理系统项目概述 #### 一、项目背景与意义 随着信息技术的快速发展,图书馆作为重要的信息资源中心,面临着巨大的挑战与机遇。为了提高图书流通效率,改善服务质量,图书馆管理系统成为了不可或缺的一...

    图书管理系统数据库概述

    系统概述 - **需求分析**:图书管理系统的核心功能在于管理图书和读者的信息,支持图书的借阅、归还、查询等功能。 - **概念设计**:此环节主要是确定系统中的实体及其属性,建立实体之间的联系。例如,图书实体...

    图书管理系统数据库概述.docx

    本文档对图书管理系统数据库的设计进行了详细的概述。整个系统的设计过程分为几个阶段,包括需求分析、概念设计、逻辑设计和物理设计。 在需求分析阶段,系统的目的和功能被定义了。图书管理系统是一个基于集中统一...

    权限设计 打包(5个文档、教程)

    这份说明书可能是对一个特定的Java权限管理系统的设计概述。它可能包括系统架构,设计原则,数据库模型,接口设计,以及权限管理模块的详细功能描述。对于开发者来说,这是理解系统设计和实现的重要参考资料。 5. ...

    基于部门和角色的权限管理系统的设计与实现

    ### 基于部门和角色的权限管理系统的设计与实现 #### 概述 在现代企业的信息化建设中,权限管理作为保障信息安全、规范操作流程的重要环节,其重要性日益凸显。传统的权限管理方式往往依赖于静态的角色分配,缺乏...

    教务管理系统概要设计和详细设计说明书

    6. 安全性设计:考虑数据保护,如用户权限控制、数据加密等,以防止非法访问和操作。 在软件工程实践中,教务管理系统概要设计和详细设计说明书是项目开发的重要指导文档,它们为开发团队提供了清晰的开发路线图,...

    企业人事管理系统概述课件.pptx

    【企业人事管理系统概述】 企业人事管理系统是现代企业管理中不可或缺的一部分,尤其在当今快速发展的商业环境中,市场竞争日益激烈,企业必须高效、科学地管理人力资源以获取竞争优势。人事信息管理系统旨在帮助...

    学生管理系统理论概述

    通过合理设计登录与权限设置功能,可以在确保数据安全的同时,提高系统的可用性和灵活性。此外,随着信息技术的发展,未来的学生管理系统还可以引入更多智能化的功能,如自动统计分析、智能推荐等,进一步提升教育...

Global site tag (gtag.js) - Google Analytics