基于组织架构的数据权限模型OBAC设计与实现
企业级数据模型设计和实现

企业级数据模型设计和实现数据模型是一个企业所面临的最重要的设计问题之一。
它是用于描述一个系统、应用程序或业务流程中使用的数据的集合。
数据模型的主要任务是将不同的元素与其相互关系捕捉到,以便能够准确地描述业务过程以及系统/应用程序的结构和功能。
在企业级应用程序开发中,数据模型被认为是整个系统的核心结构,因此,合理设计和实现数据模型可以有效提升企业应用程序的质量和效率。
如何设计一个优秀的数据模型为了设计一个优秀的数据模型,首先需要确定公司交易框架的结构和应用程序的需求。
然后,可以采用以下步骤:1. 数据建模:建立概念模型和物理模型,将概念模型转换为物理模型。
2. 识别实体:将所有业务对象和事件识别为实体,如供应商、客户、订单等。
3. 确定属性:为每个实体确定属性,描述实体的特征,如客户的姓名、地址、电话等。
4. 建立关系:在实体之间建立关系,如客户和订单之间的关系。
5. 确定主键:为每个实体确定主键,并将这些主键链接到相关实体。
6. 规范化:对关系数据进行规范化,以消除重复数据并用合适的方式存储数据。
7. 验证模型:使用业务流程测试数据验证模型是否能够准确地描述业务过程。
如何实现一个有效的数据模型实现企业级数据模型的关键在于在设计阶段了解要处理的数据类型。
一旦数据类型和数据来源被确定,就可以使用以下最佳实践来实现数据模型:1. 建立正确的表结构和字段:表结构必须与需求和规范相一致,字段必须具有完整性检查。
2. 使用合理的数据类型:不要使用不必要的数据类型,例如,将数字值存储为字符型可能会导致存储空间和性能问题。
3. 创建正确的索引:可以根据需求创建唯一性索引、重复索引和复合索引。
4. 使用存储过程和触发器:存储过程和触发器可以实现高级功能,如自动关联、插入前检查和自动维护。
5. 优化查询:优化查询可以提高搜索效率并减少服务器负载。
通过以上最佳实践,可以有效实现企业级数据模型,进而提升企业应用程序的性能和可靠性。
基于RBAC模型权限管理的设计与实现

基于RBAC模型权限管理的设计与实现【摘要】对RBAC模型分析和研究的基础上,对RBAC模型进行了改进,设计了可以同时对角色和用户进行授权的更灵活的权限管理模型,满足了企业多样化的授权管理需要。
【关键词】RBAC;权限;角色RBAC(Role—Base Access Control)模型[1—2]是目前最为广泛接受和使用最广泛的权限模型,该模型是基于角色进行授权的,虽然授权的机制很好,但有时候却不太符合国内的实际情况,特别是某些企业的管理不太规范的情况下。
在实际项目中,不仅仅对角色授权,还要支持直接对用户单独授权。
当然对用户的授权可以通过创建一个不存在的角色通过对角色的授权来实现,但用户往往不太赞同,同时会造成角色迅速膨胀,就出现了针对用户进行授权的需求,在实际操作宗也往往采用直接对用户进行授权。
这样一来,就需要对RBAC再次进行扩展来满足需要。
在本系统的开发中,就采用了针对角色授权和针对用户授权相结合的方式来进行。
该模型既不是特别简单也不特别复杂,忽略了很多概念也创建了很多概念,它能比较灵活的实现授权的灵活度,能够适应不太规范的企业,克服了RBAC模型只能对角色进行授权的缺点。
1.权限管理的设计1.1对象及权限定义利用基于角色的访问控制进行用户权限设定时,首先要进行的就是确定系统对象及对对象的访问权限,实际上就是对系统资源的访问权限。
这里的对象指系统中各种功能模块、数据、操作等等,是主体能访问的各种对象。
由于对象的机密情况及所属单位的不同,能对他们操作的用户也不相同。
1.2角色定义与权限分配(1)角色定义基于角色的访问控制方法就是用角色来充当用户行使权限的中介,对角色进行授权,为用户分配角色,就等于把角色的权限分配给用户,这样,用户与角色之间以及角色与权限之间就形成了两个多对多的关系[3],即一个用户可以拥有多个角色,一个角色也可以供多个用户使用。
即如果某个用户拥有角色M的同时还拥有N的角色,即双重甚至多重角色,那么在默认的情况下,系统会为该用户分配角色M和角色N拥有的所有权限,它的权限为两个角色的权限的合集。
基于pbac的统一权限管理平台设计与实现

一尧背景和需求为了进一步提高院系管理信息化程度袁更好地实现野院为实体冶的理念袁为学校野双一流冶建设提供有力支撑袁上海交通大学网络信息中心为校内业务系统提供接入上海交通大学统一身份认证服务渊以下简称野jAccount服务冶冤袁允许校内新开发业务系统通过jAccount进行身份认证遥当前各个业务系统为了实现对登录用户的访问控制袁各自开发独立的访问控制模块袁这带来了以下两个问题院访问控制是业务系统的基本组成之一袁且校内各业务系统用户访问权限需求存在共性袁是可以作为公共逻辑模块使用的遥而且由于各个开发团队经验差异袁访问控制模块开发安全性没有保障遥这不但增加了业务系统开发成本袁也增加了校内安全小组监控风险遥各个业务使用独立的访问控制模块袁则无法共享一些用户的访问权限遥而各个院系作为交大的组成部分袁用户权限关联性是全校性的袁重复配置增加了管理成本遥同时袁分散的访问权限管理袁让在全校范围管理一个用户访问权限无法实现遥随着院系信息化的继续推进袁上述问题越发突出袁已经成为校内信息化安全问题主要隐患遥为了解决上述问题袁加快推进院系信息化袁设计和实现一个高性能尧高可用的统一权限管理平台势在必行遥二尧设计与实现为了增强各个业务系统用户访问权限管理的安全性袁提高用户权限管理效率和降低业务系统开发成本袁本文提出了构建校内统一权限管理平台袁为校内各个业务系统提供权限管理服务支持遥遥jAccount是上海交通大学网络信息中心开发的用户认证体系遥通过就Account认证体系袁可以在Web应用中实现单点登陆袁同时也可以为校内第三方应用提供统一身份认证和单点登陆服务[1]高校业务系统常用的授权系统是基于角色的权限访问控制渊Role-Based Access Control冤袁简称RBAC遥在RBAC中袁权限与角色相关联袁用户通过成为适当角色的成员而得到这些角色的权限遥但是在实际应用中袁仅仅对可以执行的操作进行限制是不够的袁比如在校级系统/应用中袁不同院系的用户袁同一个操作可操作的对象是有不同的袁而这种限制往往是基于用户所处的院系部门的不同而存在差异的遥RBAC访问控制体系是无法满足此需求的遥因此本方案采用了基于PBAC体系的权限架构袁使用院系部门渊以下简称部门冤作为权限的策略袁限制权限可以访问的数据范围遥郭甜莉1袁谢晶1袁龙海辉2淤渊1.上海交通大学网络信息中心袁上海200240曰2.上海交通大学电子信息与电气工程学院仪器系袁上海200240冤摘要院为了解决高校院系信息化过程中出现的问题袁文章基于RBAC的权限控制体系袁提出了PBAC 的设计理念袁引入岗位和部门概念袁给出了一整套权限管理解决方案遥文章阐述了授权系统总体架构和详细设计袁同时将授权功能细化袁建设统一授权系统和分级授权系统遥用户可以从两条路径获取应用系统的操作权限袁通过为应用和岗位设置管理岗袁实现了岗位和角色的再分级遥关键词院角色曰岗位曰部门曰统一权限管理曰分级授权中图分类号院TP311.1文献标志码院A文章编号院1673-8454渊2020冤09-0040-04淤龙海辉为本文通讯作者遥渊1冤术语定义淤权限渊Rights冤权限管理的最小单位袁定义了业务系统/应用的最小需要管理的操作集合袁比如删除信息操作袁指定菜单查看权限等[2]遥于角色渊Roles冤权限的集合袁是权限分配的最小单位[2]遥比如系统管理员遥角色是系统/应用隔离的袁即本系统/应用的角色仅本系统内可用遥盂岗位渊Posts冤跨系统/应用的角色袁即允许多个系统/应用共用一个岗位配置遥在我们的实践中袁野岗位冶和现实高校中实际的岗位概念通常也是对应的袁比如袁我们可以定义一个野岗位冶为野教务员冶或者野设备管理员冶等[3]遥目前岗位的常用应用场景为野一门式冶流程平台中各类流程应用的审批人配置遥榆部门渊Department冤权限管理采用部门限制策略袁以实现权限可以操作的数据范围限定遥部门是树形层级关系袁限定数据最小范围依赖于部门树叶子节点遥虞全局角色渊GlobalRoles冤[3]岗位往往是有部门限制的袁本文将岗位尧组织机构的二维映射关系称为全局角色遥当组织机构为空时袁二维的全局角色退化为一维的岗位袁在实际情况中袁表示为不属于任何组织机构的全局性岗位[3]遥愚用户渊User冤业务系统的用户遥通过给用户分配角色/岗位来实现用户的访问权限配置遥渊2冤权限管理设计本文提出的权限管理框架采用角色尧部门尧用户三元组结构来管理权限遥如图1所示袁岗位和部门的关系称为全局角色袁是二元组关系渊岗位袁部门冤曰角色和全局角色的关系称为角色的全局角色袁是三元组关系渊角色袁岗位袁部门冤曰我们通过给用户设置岗位袁即设置渊用户袁岗位袁部门冤三元组关系袁从而使用户拥有相关角色遥Spring Boot开源框架可以简化Spring开发框架的开发尧配置尧调试尧部署工作袁同时在项目内集成了大量易于使用且实用的基础框架[4-5]遥授权系统后端基于Spring Boot和Spring Data JPA框架来实现袁前端使用了Vue.js袁采用前后端分离的开发模式遥后端系统包括应用层尧服务层尧持久层和公共服务类等遥应用层包括控制器和视图模型等内容袁服务层包括服务接口和实现类袁持久层包括Dao接口和实现类遥除此之外袁还有统一登录尧权限检查尧统一异常处理尧日志服务尧拦截器尧工具包等公共类遥授权系统代码保管到git仓库袁可以多人同时开发系统袁方便检查代码质量和控制项目版本遥测试环境和生产环境采用Jenkins持续部署袁简化发布流程遥授权系统选择SqlServer数据库遥如图2所示袁数据库表主要包括两类院一类是基础资源表袁有用户表尧组织机构表尧岗位表尧应用表尧权限表尧角色表等袁主要是保存资源的基本信息曰一类是关系表袁保存资源之间的关系遥在做删除操作的时候袁要注意级联删除关系表的数据袁以保持数据的一致性遥图1权限尧角色尧岗位关系图图2系统数据库结构渊2冤权限管理实现淤用户权限设置用户对业务系统的访问权限有两个来源袁一是来源于角色袁二是来源于岗位袁如图3所示遥从用户到权限有两条配置的路径袁给用户直接设置角色更为简单袁但是没法限制岗位和部门信息曰给用户设置三元组关系的方法更为复杂袁但是更为细致了限制了用户的全局角色袁保障了权限不被过度使用遥以院系信息化平台为例袁管理员需要给每个学院的人事干事设置院系人事管理角色袁不同学院的人事干事拥有的权限类似袁但是可以访问的数据范围是不同的袁每个人只能访问到自己学院的人事信息遥基于这个需求袁管理员选择通过第二条路径来给用户授权遥具体实现的步骤如图4所示遥第一步袁建立人事干事角色袁设置角色的权限袁同时将角色与全局角色做映射曰第二步袁建立院系人事管理岗位袁将岗位与部门做映射袁即设置全局角色遥在此基础之上袁为用户设置岗位袁指定可以管理的院系袁即为用户设置全局角色遥于应用管理模块权限系统为每个信任应用提供应用权限管理功能袁主要结构见图5遥用户通过应用信息管理模块维护应用基本信息袁权限管理模块维护应用的权限定义遥权限按照功能可以分为操作型权限和菜单型权限遥操作型权限定义应用的一个原子操作袁常用于定义按钮权限遥菜单型权限用于定义应用菜单袁支持菜单路径袁菜单顺序等属性设置遥角色管理用于定义应用角色袁定义的角色将通过分级授权模块授权给应用运维人员袁以维护角色内用户的调整遥全局角色映射管理模块用于管理岗位与角色的关联关系袁允许指定岗位用户共享指定角色权限遥盂岗位管理模块岗位在授权系统中主要有两个作用院一是通过岗位来管理应用系统的权限袁实现角色的分级授权曰二是通过设置岗位的管理关系袁实现岗位的分级授权遥除此之外袁岗位在其他的业务系统中也起到非常重要的作用遥因此在授权系统中设计了查询岗位详情的功能遥如图6所示袁授权系统从不同维度列出了和岗位相关联的业务内容遥渊3冤授权功能细化前面章节提到袁需要从整体上控制所有应用的授权袁本文把负责这个过程的管理员称为一级管理员遥如果把上述所有资源的维护和关系的建立都交给一级管理员负责袁可以预见工作量之大和维护的困难遥因此在实际构建系统时袁将授权系统细化为两个应用院统一授权系统和分级授权系统遥统一授权系统集中管理岗位尧应用尧组织机构等基础资源袁同时可以设置岗位的管理岗尧应用的管理岗遥分级授权系统负责管理应用的权限和角色袁为用户赋予角色尧分配岗位袁管理员通过指派管理岗来给用户授权袁岗位和角色都可以再分级遥本文将分级授权系统的管理员称为二级管理员遥淤统一授权系统如图7所示袁统一授权系统由五个功能模块组成遥组织机构管理包括组织机构同步和修改信息等功能曰岗图3用户访问权限设计图4用户访问权限配置实例图5应用管理模块结构图6岗位理模块结构图9分级授权实例位管理包括设置岗位和岗位分类尧设置全局角色尧设置管理岗等功能曰应用管理包括应用系统同步尧设置管理岗等功能曰用户查询包括查询用户两个权限来源信息尧查询用户已设置岗位和岗位详情等功能曰日志查询则是查询管理员对基础资源的操作记录遥于分级授权系统分级授权系统设计了四个模块的功能袁如图8所示遥权限管理包括权限的新增尧删除尧修改尧查询等操作曰角色管理包括角色的新增尧删除尧修改尧查询等操作曰赋予角色包括为用户赋予角色和为角色分配用户等功能曰指派岗位包括为用户指派岗位尧为岗位分配用户和查询岗位详情等功能遥其中赋予角色模块袁为用户赋予角色功能适用于为一个用户同时赋予多个角色的场景曰为角色分配用户则适用于为一个角色分配多个用户的场景遥指派岗位的两个功能设计与此类似袁不再赘述遥盂分级授权实例二级管理员登录分级授权系统之后袁系统会根据当前登陆用户拥有的岗位权限来判断可以管理的应用和可以指派的岗位遥图9展示了二级管理员管理权限的获取过程院一级管理员为应用A 设置管理岗1袁同时设置管理岗1可以管理业务岗1和业务岗2遥之后袁一级管理员为二级管理员指派管理岗1袁指定可以管理所有院系遥那么袁此二级管理员就可以在分级授权系统中管理应用A 的权限和角色袁可以对角色和可以管理的岗位实现再分级遥三尧结束语本文阐述的授权系统采用了基于PBAC 体系的权限架构袁使用院系部门作为权限的策略袁限制权限可以访问的数据范围遥同时将授权功能细化袁建设统一授权系统和分级授权系统遥其中前者集中管理岗位尧应用等基础资源袁后者管理应用的权限和角色袁同时实现了岗位和角色的再分级遥我们引入管理岗的概念袁通过建设应用的管理岗和岗位的管理岗将两个系统紧密联系在一起遥统一授权系统和分级授权系统联合使用袁可以很好地解决应用系统权限管理问题遥希望本文的内容袁可以给其他高校和企业的权限管理带来一定的启发和帮助遥参考文献院[1]白雪松,茅维华.身份与权限体系关键技术的总体设计与实践[J].中山大学学报(自然科学版),2009,48(S1):260-263.[2]Ramzi A.Haraty,Mirna Naous.Role-Based Access Control modeling and validation[C].2013IEEE Symposium on Computers and Communications (ISCC).[3]白雪松,蒋磊宏,茅维华.全局角色在统一授权体系中的应用[J].实验技术与管理,2011,28(6):116-118,141.[4]王永和,张劲松,邓安明等.Spring Boot 研究和应用[J].信息通信,2016(10):91-94.[5]Phillip Webb,Dave Syer,Josh Long et al.Spring Boot Reference Guide [DB/OL].https://docs.spring.io/spring-boot/docs/2.1.3.RELEASE/reference/html/.渊编辑院王晓明冤图7统一授权系统模块结构图8分级授权系统模块结构。
PBAC方案

PBAC方案1. 引言PBAC(Policy-Based Access Control)是一种基于策略的访问控制模型,它允许管理员通过定义策略来控制用户对资源的访问权限。
PBAC方案包括了策略定义、策略评估和策略执行等关键步骤,能够提供灵活、细粒度的权限控制。
本文档将介绍PBAC方案的基本原理、主要组成部分以及实施步骤。
2. 基本原理PBAC方案的基本原理是通过三个要素来完成权限控制:主体(Subject)、客体(Object)和行动(Action)。
•主体(Subject):主体可以是用户、角色、组织等,代表了具有权限需求的实体。
•客体(Object):客体可以是文件、数据库、应用程序等,代表了被保护的资源。
•行动(Action):行动指的是主体对客体的操作,例如读取、写入、删除等。
通过在策略中定义主体、客体和行动之间的关系,PBAC方案可以在客体的访问控制过程中提供细粒度的控制。
3. PBAC方案组成部分PBAC方案由以下几个主要组成部分组成:3.1 策略定义策略定义是PBAC方案的核心。
在策略定义中,管理员可以根据实际需求,为不同的主体、客体和行动定义相应的权限。
主体和客体的关系可以是一对一、一对多或多对多的形式。
策略定义可以使用特定的语法规则来描述权限关系,例如使用ACL(Access Control List)或ABAC(Attribute-Based Access Control)。
3.2 策略评估策略评估是PBAC方案的关键步骤,用于根据策略定义来评估用户的权限。
在策略评估中,系统会通过匹配用户的权限需求与策略定义中的权限关系,来确定用户是否具有访问特定资源的权限。
策略评估可以通过使用策略引擎来实现,策略引擎通常会采用相应的算法来进行匹配和计算。
3.3 策略执行策略执行是PBAC方案的最后一步,用于根据策略评估的结果来进行相应的权限控制。
如果策略评估确定用户具有访问资源的权限,那么系统可以允许用户进行相应操作;如果策略评估确定用户没有权限,那么系统会拒绝用户的访问请求。
基于RBAC的通用权限管理设计与实现

基于RBAC的通用权限管理设计与实现
一.引言
RBAC(Role-Based Access Control)是一种基于角色的访问控制模型,它试图通过将用户分配到不同的角色来简化系统管理员的工作,提高系统
安全性、可用性、可维护性等。
目前,RBAC已经成为最重要的安全管理
技术之一,在企业级应用系统中使用得越来越多。
本文将介绍基于RBAC的通用权限管理设计与实现,专注于实现RBAC
模型的原理和实现方式,并结合实际应用,分析实现过程中可能遇到的问
题与解决方案,从而为设计RBAC权限管理系统提供参考。
二.RBAC原理
RBAC模型的核心思想是,将用户分配到不同的角色,通过对角色进
行权限的分配和控制来控制用户的访问权限。
关于RBAC的实现有以下几个步骤:
1、划分角色:首先,要把用户划分成不同的角色,每一个角色都有
一系列可以被执行的操作,这些操作可以是其中一种操作,也可以是一系
列的操作。
2、分配权限:然后,将每个角色对应的操作权限分配给角色,这些
权限可以是可执行的操作,也可以是可读写的操作,可以是可访问的文件,也可以是其中一种权限。
3、赋予用户角色:接下来,将角色分配给具体的用户,这样就可以
实现用户与角色之间的关联,也实现了对不同的用户可以访问不同的权限。
利用RBAC模型实现一个通用的权限管理系统

利⽤RBAC模型实现⼀个通⽤的权限管理系统本⽂主要描述⼀个通⽤的权限系统实现思路与过程。
也是对此次制作权限管理模块的总结。
制作此系统的初衷是为了让这个权限系统得以“通⽤”。
就是⽣产⼀个web系统通过调⽤这个权限系统(⽣成的dll⽂件),就可以实现权限管理。
这个权限系统会管理已⽣产系统的所有⽤户,菜单,操作项,⾓⾊分配,权限分配,⽇志等内容。
实现此功能从正常访问和⾮法访问两个⽅⾯⼊⼿。
正常访问即⽤户登录系统后只能看到或操作⾃⼰拥有的菜单;⾮法访问即通过拼写url等途径访问系统的某个功能;所以程序除了实现⽤户登录后获取⽤户拥有的菜单权限,更要挡住⽤户的⾮法请求。
两者缺⼀不可。
⼀.概念 实现这个功能主要利⽤RBAC权限设计模型,英⽂(Role-Based Access Control)译为基于⾓⾊的权限管理⼜叫基于⾓⾊的访问控制。
⼆.数据库设计1.系统表:因为要达到"通⽤",所以这个表会记录各个系统。
其他⽤户、菜单、操作、权限表每条记录都会对应系统代码。
字段说明:Code —> 系统标识代码SysName —> 系统名称2.菜单表:记录菜单。
每个功能当成⼀个菜单,菜单有url属性,⽤户通过点击菜单来访问对应功能;字段说明:ID —> 主键,⾃增标识MenuName —> 菜单名称 PageUrl —> 菜单对应url PId —> 菜单⽗级Id Lv —> 菜单等级,分⼀级菜单和⼆级菜单ControllerAction —> 菜单唯⼀标识,⽤来做权限控制SystemCode —> 系统标识代码3.操作表:此表主要是为了判断⽤户是否有来操作某个具体功能,如常⽤的【删除】功能等操作都放在这个表⾥;字段说明:ID —> 主键,⾃增标识OprateName —> 操作名称 OperateCode —> 操作标识代码SystemCode —> 系统标识代码4.⽤户表:记录所有系统的使⽤⽤户。
基于组织结构的RBAC 扩展模型及应用

基于组织结构的RBAC 扩展模型及应用摘要:针对传统的基于角色的访问控制模型所存在的问题,提出了一种基于组织结构的rbac扩展模型,该模型引入组织结构和用户组,有效地解决了目前rbac权限管理存在的问题,满足大型企业对权限管理的精细化管理要求。
关键词:基于角色的访问控制;组织结构;访问控制模型;角色;用户组中图分类号:tp311 文献标识码:a 文章编号:1009-3044(2013)03-0497-03在信息系统安全机制中,主流的访问控制策略有自主访问控制dac、强制访问控制mac和基于角色的访问控制rbac。
目前,基于rbac的访问控制策略一直是信息系统安全机制的研究热点[1],也得到了很好的应用[2-3]。
rbac将用户与角色联系起来,简化了权限管理。
中国石油兰州石化公司是中国西部重要的炼化生产基地,近年来,兰州石化信息化建设和应用取得了良好的成效,随着企业规模的日益扩大和信息化建设水平的提高,信息系统和用户数量不断增长,对信息安全管理提出了新的挑战,现有的系统访问控制策略在部分功能上并不能完全满足公司对于信息安全的精细化管理要求。
传统的nist标准rbac模型由4个部件模型组成,其核心对象模型设计由用户、角色等构成,但在大型企业应用中存在角色授权复杂、授权工作量大等问题。
国内外学者对此都有相关的研究。
本文提出一种基于组织结构的rbac扩展模型,并介绍该模型在兰州石化公司信息系统中的应用情况。
1 相关研究1.1 pmi角色模型华中科技大学的徐兰芳研究了用权限管理基础设施pmi的角色模型实现基于角色的访问控制的相关问题,提出了一种改进pmi角色模型[4]。
pmi角色模型实质上仍然是基于rbac的思想,与传统的rbac模型相比,简化了对用户的管理,用xml文件表达策略,能够解决rbac中的约束问题,通过远程和本地证书库,提高了健壮性和证书查询效率。
1.2 基于角色和用户组的扩展访问控制模型中南大学邢汉发等人针对传统的rbac所存在的问题[5],提出了基于角色和用户组的扩展访问控制模型,改进后的扩展模型e-rbac 应用在某信息管理系统中的访问控制模块,并使用模拟数据进行了验证。
基于MVC架构的网站RBAC访问控制框架设计与实现设计

基于MVC架构的网站RBAC访问控制框架设计与实现设计基于MVC架构的网站RBAC访问控制框架设计与实现毕业设计论文摘要一个实际的商务网站系统除了需要关注于功能需求之外,还需要考虑很多非功能性需求,安全性就是其中一个非常重要的方面。
访问控制是几乎所有的应用系统都不可缺少的一部分。
本文从MVC架构商务管理系统的需求出发,首先分析了几种访问控制的优缺点,在此基础上提出了利用RBAC模型来进行系统的访问控制。
并将其用于某一具体的商务系统中,给出了实现过程。
关键词:MVC、RBAC、访问控制、角色、权限。
AbstractWhen functional requirements are chiefly paid attention to by people in a commercial application system, many nonfunctional requirements are also taken into account. Security is one of the most important aspects of the nonfunctional requirements. Access control almost is a necessary part in all application systems. This paper analyses the requirements of comprehensive commercial information management system based on MVC. It analyses the merits and demerits among the common access controls, and proposes process access control based on RBAC model. Finally, it describes how to realize the model in a material commercial system.Key words:MVC,RBAC,Access Control,Role,Permission.目录引言 (1)第一章课题背景 (2)1.1MVC概述 (2)1.2RBAC模型概述 (3)1.2.1 RBAC原理简介 (3)1.2.2 RBAC适用性分析 (5)1.3RBAC在MVC中的应用现状 (6)第二章系统框架分析与设计 (9)2.1基于MVC架构的W EB系统 (9)2.2RBAC模型的建立 (11)2.3RBAC模型在MVC网站中的应用 (12)第三章设计实现 (14)3.1RBAC框架实现 (14)3.2RBAC模型在系统中的实现 (17)3.2.1 系统功能模块的实现 (17)3.2.2 系统权限模块的实现 (21)3.2.3 系统角色模块的实现 (23)3.2.4 为用户设置角色 (25)3.2.5 用户权限功能树的生成 (26)第四章系统测试 (29)4.1系统测试 (29)4.1.1 测试环境 (29)4.1.2 测试方案 (29)4.2总结与展望 (32)4.3致谢 (33)参考文献 (34)附录A:英文原文 (35)附录B:中文翻译 (41)引言本此毕业设计将基于角色访问控制(Role-Based Access Control,RBAC)作为研究课题,来实现一个企业内部管理系统中的权限管理部分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于组织架构的数据权限模型 OBAC设计与实现摘要:本文针对基于角色的功能权限管理模型RBAC控制粒度粗,不足以满足现代MIS系统复杂、精细的数据权限管理需求,而参考其设计思想设计出一种基于组织架构的权限管理模型策略OBAC(Organization-Based Access Control)。
该策略创新性地引入组织架构数据信息,配合传统RBAC权限管理策略,实现了功能权限加数据权限的双重管理和过滤,达到了数据精细化管理要求,能够满足复杂环境下企业对敏感信息数据权限的管理要求,能够提高系统数据的安全性和灵活性。
本文给出了该模型的设计和实现方法,对于具有多层次数据权限管理需求的系统软件权限管理的设计和开发具有参考价值。
1.前言随着我国信息化产业的高速发展,信息系统覆盖的领域广泛,涉及到各行各业。
同时信息系统的功能愈加复杂,使用的客户群愈加庞大,客户需求愈加复杂,随之而来的问题就是针对系统数据安全的管理愈加困难和复杂。
因此,信息系统引入访问控制功能将是一个不可或缺的步骤,尤其是在金融、国防、能源、民生等行业,保证信息系统的安全将是首要考虑的问题,利用访问控制极大降低了系统的安全风险,同时监管对敏感信息的访问以及防止非法用户的入侵[1]。
目前信息系统主要是通过用户、角色、资源三方面来实现系统的访问控制。
具体来说,就是赋予用户某个角色,角色能访问及操作不同范围的资源。
通过建立角色系统,将用户和资源进行分离,以保证权限分配的实施。
根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自己被授权的资源。
从控制类型来看,可以将权限管理分为两大类:功能级权限管理与数据级权限管理。
功能级权限与数据级权限协同才能实现完整、精细的权限管理功能。
目前功能级权限有多种成熟方案可供选择,但数据级权限管理方面,一直没有统一的技术方案。
本文将介绍一种数据权限实现技术方案,并且通过在多个信息系统上的应用得到论证。
2.访问控制系统与RBAC简介访问控制(RAM)是信息系统提供的管理用户身份与资源访问权限的服务,信息系统可以创建并管理多个身份,并允许给单个身份或一组身份分配不同的权限,从而实现不同用户拥有不同资源访问权限的目的。
要实现访问控制,需要有主体,客体,还有一定的策略或者叫机制。
主体:访问的发起者,可以是访问系统的某个用户也可以是调用系统的外部服务。
客体:可供访问的各种软硬件资源,如文件、数据库数据、服务资源等。
策略:定义了主体对于客体的访问权限策略,不同的策略模型下有不同的访问控制管理模式。
常见策略有自主访问控制(DAC)、强制访问控制(MAC)、基于角色的访问控制(RBAC)。
DAC允许合法用户以用户或用户组的身份访问策略规定的客体,同时组织非授权用户访问客体,某些用户还可以把自己拥有的客体的访问权限授予其他用户;MAC按照系统级策略限制主体对客体的访问。
用户所创建的资源,也拒绝用户的完全控制。
系统的安全策略完全取决于权限,权限由管理员设置[2]。
RBAC是将权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。
这就极大地简化了权限的管理。
这样管理都是层级相互依赖的,权限赋予给角色,而把角色又赋予用户,这样的权限设计很清楚,管理起来很方便,因而信息系统大多使用RBAC模式作为功能级权限实现策略[3]。
图1 RBAC设计模式RBAC设计模式如图1所示,每个用户关联一个或多个角色,每个角色关联一个或多个权限,从而可以实现非常灵活的权限管理。
角色可以根据实际业务需求灵活创建,这样就省去了每新增一个用户就要关联一遍所有权限的麻烦。
简单来说RBAC就是:用户关联角色,角色关联权限。
RBAC的缺点也比较明显:RBAC只关心在用户和权限之间的关系设计,并没有考虑到用户和权限之间的判断,恰恰这种情况在在实际的MIS系统中非常常见,比如在销售领域华东区域经理无权查看华北区域销售数据虽然都是区域经理角色,其只拥有查看本地区销售数据权限,又比如在管道信息化系统中各个油气场站只能查看各自场站的生产数据,无权查看其它场站生产数据,虽然其都是场站角色。
图2 完整权限集合完整的权限集合示意图如图2所示,应当包含对象、操作和数据三类权限。
对象访问权限:MIS系统中是指拥有菜单的权限;操作权限:MIS系统中是指菜单的操作,例如某菜单下的新增、编辑、删除等操作权限;数据可视权限:MIS系统中是指菜单的数据权限,不同的数据权限客体进入某个菜单后看到的数据范围不同。
可以看到,RBAC是只涉及了对象和操作权限,没有涉及到数据可视权限。
3.数据权限OBAC模型介绍数据权限管理主要控制某条数据记录对用户是否可见,结合功能权限可以更灵活的配置业务过程中用户的功能操作权限及数据可见范围。
目前,并没有统一的数据权限策略模型,通常有下列做法:(1)硬编码,也就是将这种逻辑以if/else等形式与业务代码耦合在一起,这种情况居多;(2)使用第三方专业软件或开源中间件;其中,硬编码形式弊端是非常显然的,耦合性强、测试困难、系统组件复用率低、系统后期改动代价大,牵一发而动全身;第三方专业软件则无法定制化,并不适合通用应用系统且通常价格昂贵,学习成本高。
本方法中将企业组织与数据权限规则进行结合,实现隶属不同组织下的用户主体访问同一个权限对象后看到的数据范围不一样,既实现了数据权限管理功能又与RBAC的功能权限解耦合相互独立,互不影响,做到真正意义上的可插拔设计,动态组合。
把组织信息与数据权限规则进行关联,用户主体加入组织后,就会自动获得该组织定义的数据规则,解析规则后过滤出该规则下的数据。
规则解析是模型的重点,规则解析是将数据权限规则翻译为数据库执行语句的过程,规则解析是在应用程序利用JDBC连接数据执行QUERY语句前,拦截原始SQL语句,将规则解析后的SQL片段语句织入原始SQL中并执行,利用动态修改SQL执行语句方式实现数据规则过滤。
组织:企业职能部门,如市场部、软件部、工程部等等,是企业MIS信息系统的基本要素。
数据权限规则:定义可访问或不可访问数据范围。
本方法规定了四种范围:本人、本部门、指定部门、所有部门。
不同的范围能看到的数据不一样,通过解析规则,获取或过滤特定标签的数据。
数据标签:标识数据隶属于某部门的信息。
规则解析:翻译数据权限规则,生成SQL片段,最终将SQL片段织入原始SQL中并执行。
图3 OBAC设计模式OBAC设计模式如图3所示,用户主体关联部门信息,部门信息关联数据权限规则集,规则集过滤数据集特定标签数据。
3.1数据标签数据标签标识了数据源信息,只有具备标签,该条数据才可能被规则集中规则匹配,信息系统中不应该出现没有标签的数据条目,也可以设定虚拟标签标识不能被清晰标定的数据条目。
标签使用两个信息即可满足:隶属人、隶属部门。
隶属人标签可以被规则集中“本人”规则解析,隶属部门标签可以被规则集中“本部门”、“指定部门”规则解析,两个标签均可被“全部”规则解析。
图4 数据标签关联关系图数据标签关联关系图如图4所示。
通常,MIS系统中“用户”实体与“部门”实体有关联关系,例如一对一关系,因而通过用户能获取到用户所属部门信息,从而标签“隶属人”与“隶属部门”原则上可以简化为“隶属人”标签,但是现实情况下经常出现人员在部门间的变动问题,如果仅仅使用“隶属人”标签,则会导致该条数据在人员部门变动前后规则过滤不一致的现象。
为了保证数据的前后一致性,需要冗余存储“隶属部门”标签。
3.2数据权限规则数据权限规则是对组织机构下拥有何种数据可视权限的定义,在本方法中一共定义了四种规则,分别是本人权限、本部门权限、其他部门权限、所有权限。
本人权限仅能查看带有本人数据标签数据,本部门权限能查看带有与本人同部门组织的数据标签数据,指定部门权限能查看带有配置中选定的一个或多个部门组织数据标签数据,所有权限则不带限制条件,无视数据标签。
实现数据规则逻辑定义后还需要实现其物理定义,即将规则编码到存储系统中,并可以被读取解析。
本文采用关系型数据库将规则存储到数据库系统中,数据表结构设计规则定义表如表1所示,规则定义表附表如表2所示。
表1 规则定义表表2 规则定义表附表其中,规则定义表用于定义组织(部门)的数据规则信息,指定组织(用organize_id标识)所拥有的数据权限范围(用rule_type标识),一对多关系。
定义表附表是针对数据权限范围为指定部门规则时的扩展表,存储指定的部门主键集合。
如此,针对四种规则有四种查询方式。
当规则为本人时,直接获取用户信息的主键;规则为本部门时,直接获取用户信息表中的部门字段;规则为指定部门时,需要关联查询规则定义表附表中的数据,获取部门主键集合;规则为所有时,不用作任何处理。
3.3规则解析本模型最终是将规则解析为一个SQL片段,然后动态地织入原始查询SQL的WHERE子句中,利用WHERE子句提取那些满足指定条件的记录。
根据数据库方言不同,解析的SQL片段也就不同,这里以MySQL关系型数据库为例,分别介绍四种规则的解析过程。
根据上文信息,假定信息系统拥有如下数据表:用户表user(id,username,organize_id)、组织表organize(id,organize_name)、规则定义表rule (id, organize_id, rule_type)、规则定义附属表rule_addition(id、rule_id,organize_id)以及目标数据信息表data(id、belong_user_id,belong_organize_id、其它信息字段略)。
当前登录用户id用current_user_id标识,当前登录用户组织部门id用current_user_organize_id标识,原始查询data表数据SQL语句为:select * from data。
(1)根据规则定义表,如果是本人数据规则,即查询语句select typefrom rule where organize_id = current_user_organize_id结果为type=1时,解析的SQL片段为belong_user_id = current_user_id,织入原始sql的WHERE子句后为:select * from data where belong_user_id = current_user_id。
(2)根据规则定义表,如果是本人数据规则,即查询语句select typefrom rule where organize_id = current_user_organize_id结果为type=2时,解析的SQL片段为belong_organize_id = current_user_organize_id,织入原始sql的WHERE子句后为:select * from data where belong_organize_id = current_user_organize_id。