CN103049684A - 一种基于rbac模型扩展的数据权限控制方法和系统 - Google Patents
一种基于rbac模型扩展的数据权限控制方法和系统 Download PDFInfo
- Publication number
- CN103049684A CN103049684A CN2012105633618A CN201210563361A CN103049684A CN 103049684 A CN103049684 A CN 103049684A CN 2012105633618 A CN2012105633618 A CN 2012105633618A CN 201210563361 A CN201210563361 A CN 201210563361A CN 103049684 A CN103049684 A CN 103049684A
- Authority
- CN
- China
- Prior art keywords
- resources
- type
- attribute information
- tangent plane
- user object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明提供了基于RBAC模型扩展的数据权限控制方法和系统,涉及计算机技术领域。所述方法包括:配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,基于上述配置,数据权限的控制过程包括:当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;所述资源类根据所述第一对象中的属性信息从数据库中获取数据结果集。本发明针对资源的业务逻辑完全与对数据权限相分离,提高了系统针对数据权限控制的灵活性,扩展性强,且代码冗余量低,节省空间。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种基于RBAC模型扩展的数据权限控制方法和系统。
背景技术
企业应用系统建设都涉及权限管理:一种是功能操作权限,一种是数据操作权限。其中,功能权限可以理解为:能做什么的问题,如增加销售订单。数据权限可以理解为:能在哪里干什么的问题,如察看北京分公司海淀销售部张三的销售订单。
对于权限控制,现在基本上均基于RBAC(ROLE-BASED ACCESSCONTROL,基于角色访问控制)模型构建权限控制系统。参照图1,其为RBAC的核心模型。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来被指派相应的角色,用户可以很容易地从一个角色被指派到另一个角色。
现有技术中,基于RBAC模型的权限控制系统已经实现功能操作方面的权限控制,而对于数据操作权限没有控制或者采用硬编码方式,局限性比较大,灵活度不够。比如对于电信行业、广电行业等行业的运营商的在对客户资料信息、敏感的财务数据等信息的数据权限访问控制方面,运营商已经不仅仅局限于功能操作权限的访问控制,更多的数据权限的访问控制。
比如,现有技术中,由于针对一资源的数据权限是根据具体的业务定制的,即由业务人员确定哪些用户对应哪些角色,这些角色拥有哪些数据权限,然后业务人员将其针对所述资源的上述需求告诉开发人员进行编码,开发人员即根据需求在针对所述资源的访问类中,将验证逻辑及需求的属性硬编码在该类中,那么该种思路及操作过程,针对所述资源的业务类型变更,则需要业务人员提供数据权限的需求关系给开发人员重新进行编码,导致代码冗余量大,并且系统局限也比较大,不能灵活的适应各种不断变化的业务需求。
发明内容
本发明所要解决的技术问题是提供一种基于RBAC模型扩展的数据权限控制方法和系统,解决现有技术中在原系统架构情况下,变更数据权限时代码冗余量大,并且数据权限控制不灵活,系统局限也比较大,不能灵活的适应各种不断变化的业务需求的问题。
为了解决上述问题,本发明公开了一种基于RBAC模型扩展的数据权限控制方法,包括:
配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求;
基于上述配置,数据权限的控制过程包括:
当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;
所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;
所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
优选的,所述切面类根据所述资对应的属性信息,提取用户对象的属性信息赋值给资源类的第一对象包括:
所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的SESSION中是否存在所述属性信息;
如果存在,则从所述SESSION中提取用户对象的属性信息赋值给资源类的第一对象;
如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION中将所述需求的属性信息赋值给资源类的对象。
优选的,所述配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求包括:
在SPRING框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
和/或,
采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
优选的,所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集包括:
所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件并进行查询。
优选的,所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句时还包括:
将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进行标记;
进一步的,所述执行并生成所述用户对象的数据结果集之后还包括:
当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端;
当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得的;如果是,则生成所述用户对象没有相应权限的提示信息返回给所述用户对象所在终端。
相应的,本发明还公开了一种基于RBAC模型扩展的数据权限控制系统,包括:
配置模块,用于配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求;
拦截模块,用于当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;
赋值模块,用于所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;
数据获取模块,用于所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
优选的,所述赋值模块包括:
判断模块,用于所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的SESSION中是否存在所述属性信息;
第一赋值模块,用于如果存在,则从所述SESSION中提取用户对象的属性信息赋值给资源类的第一对象;
第二赋值模块,用于如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION中将所述需求的属性信息赋值给资源类的对象。
优选的,所述配置模块包括:
第一配置模块,用于在SPRING框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
和/或,
第二配置模块,用于采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
优选的,所述数据获取模块包括:
第一数据获取模块,用于所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件并进行查询。
优选的,在所述数据获取模块还包括:
标记模块,用于将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进行标记;
进一步的,所述数据获取模块之后还包括:
第一返回模块,用于当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端;
第二返回模块,用于当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得的;如果是则生成所述用户对象没有相应权限的提示信息返回给所述用户对象所在终端。
与现有技术相比,本发明包括以下优点:
本发明将采用开源SPRING框架的AOP面向切面编程,将执行具体业务逻辑设置于资源类,将进行数据鉴权的逻辑设置于切面类,将业务逻辑与数据权限鉴权进行分离、解耦,在资源的整体框架不变的情况下,针对资源的业务逻辑完全与对资源的数据权限相分离,资源类无确切的、主动的知道需要获取何种属性信息,只需被动接收切面类传输的参数即可完成整个过程,因此,代码冗余量低,节省存储空间;另外,业务人员只需要关系其业务中各用户角色的数据权限,而不用需求技术人员根据业务人员的需求重新改编代码,提高了系统针对数据权限控制的灵活性,扩展性强。
附图说明
图1是RBAC基本模型示意图;
图2是本发明一种基于RBAC模型扩展的数据权限控制方法的流程示意图;
图3是本发明的一种基于RBAC模型扩展后的系统模型示意图;
图4是本发明一种基于RBAC模型扩展的数据权限控制系统的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图2,示出了本发明一种基于RBAC模型扩展的数据权限控制方法,具体可以包括:
步骤100,配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
为了更清楚的说明本发明的应用环境,在此首先介绍本发明基于图1的RBAC模型扩展后的模型结构,参照图3,基于RBAC模型扩展后的模型结构示意图:
其中对于本模型来说:
1、本模型包含了RBAC模型中的核心模型RBAC0、角色间继承RBAC1模型、责任分离关RBAC2模型;
2、基于RBAC模型进行扩展,增加了数据权限约束配置,主要包括资源属性、资源操作条件、ACTOR属性等信息;
3、RBAC0区域中的针对ACTOR进行扩展,将员工、组织机构、岗位、虚拟团队、系统都作为ACTOR。
对于图中各个实体,具体为:
1、资源规格实体:定义资源种类,包括业务数据、共享服务等;
2、资源实例实体:指的是资源规格的实例化;例如业务数据实例化:客户视图查询、客户资料管理等,共享服务实例化客户积分查询、客户缴费查询等;
3、资源属性实体:定义某个资源实例的属性信息,并建立资源属性与ACTOR属性的对应关系;例如:登陆的员工编码、所属分公司等;
4、操作:定义操作的基础数据,例如:查询、修改、删除等;
5、资源操作:定义资源的各种可控制的操作信息;例如:客户资料查询、客户资料修改、客户资料删除等;
6、资源操作条件:定义资源操作的约束条件信息;例如:客户经理只能查询其名下的客户信息、修改其名下的客户资料信息等;
7、角色:定义人、系统在信息化应用软件系统中扮演的角色;例如:系统管理员、客户经理等
8、角色继承:描述A、B两个角色的继承关系,如果A继承B角色,则A角色享受B角色的所有权限;
9、角色继承约束:描述A角色继承B角色享受B角色的权限同时,进行一些权限的约束限制;
10、ACTOR:定义数据权限的作用对象,包括用户、员工、组织机构、虚拟团队、系统等;
11、ACTOR属性:定义ACTOR的属性信息;例如登陆系统的ACTOR所属本地网、服务区、营维中心等;
12、ACTOR特权:描述除授予ACTOR角色权限范围之外的一些特殊权限;
13、ACTOR约束:描述授予ACTOR的一些约束权限,包括约束限制授予ACTOR角色的部分权限。
其中,对于权限配置实现思路为:
1、建立资源规格:维护资源规格对应的业务实体等信息;
2、配置资源操作:针对每一种资源规格配置其资源实例,配置资源操作信息,定义数据操作信息;
3、配置资源属性:设置资源的属性、属性限制条件;通过属性限制条件设置,建立资源属性与登录系统的ACTOR属性的关系实现数据权限访问控制;
4、配置资源操作条件:设置访问资源操作限制条件,限制条件为资源属性的子集;
5、创建角色:建立角色信息;
6、角色授权:给予角色分配对应的资源的据操作权限,此处要求,针对某一个资源,首先分配的功能操作权限,其次基于已分配的功能操作权限再分配其数据权限;
7、ACTOR分配角色:针对具体的ACTOR分配对应的角色;
8、ACTOR授权:针对具体的ACTOR直接分配其角色外资源访问的特权与约束;
9、ACTOR属性配置:配置ACTOR属性信息,该属性与属性限制条件存在内在的关系,且是其子集;
10、角色继承配置:包括配置角色继承关系、角色继承约束;A角色继承B角色后,A角色也享受B角色所有的权限;角色继承约束,主要是针对A角色的一些约束限制,约束其只能享有B角色的部分权限。
在步骤100中,所述用户对象即为前述ACTOR,如前所述配置资源属性:设置资源的属性、属性限制条件;通过属性限制条件设置,建立资源属性与登录系统的ACTOR属性的关系实现数据权限访问控制;与ACTOR属性配置:配置ACTOR属性信息,该属性与属性限制条件存在内在的关系,且是其子集;即配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系。
比如“客户视图”资源类,需要员工编码、员工所属分公司编码、员工职位编码、特殊权限标识等等。对于可访问客户视图的一用户对象(ACTOR),可设置其属性信息与其员工编码、员工所属分公司编码、员工职位编码对应。在本实施例中配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系可由具体设计数据权限的业务人员进行配置。
其中,配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求,可采用开源SPRING框架的AOP面向切面编程,将业务逻辑与数据权限鉴权进行分离、解耦,本方法以数据权限鉴权作为横切面,实现数据权限的访问控制。其中,资源类为实现业务系统具体的业务逻辑,无需通过set语句将所需的Actor属性值信息Set到对应的对象中;切面类可以理解为,负责完成从Session中将ACTOR的属性信息Set到对应的资源属性实体表中配置的对应的VO(value object,值对象)等对象中。该配置可由技术人员进行配置。
所述配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求包括:
步骤S101,在spring框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
WEB服务器配置Spring(Spring也表示是一个开源框架,是为了解决企业应用程序开发复杂性由Rod Johnson创建的)AOP的拦截器;最后在Spring的XML的Extensible Markup Language,可扩展标记语言)配置文件中完成切面配置,即建立切面类与资源类的对应关系,定义当程序执行资源类之前要完成切面类的执行。
和/或,步骤S102,采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
可以采用数据库表结构方式,建立普通类与切面类的对应关系完成切面配置,即建立切面类与资源类的对应关系,定义当程序执行资源类之前要完成切面类的执行。
基于上述配置,数据权限的控制过程包括:
步骤110,当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;
在本发明实施中,对于用户以某一id登陆后,系统会将其与actor(用户对象)对应,首先进行功能权限校验,比如actor具有查看“客户视图”的功能校验通过,那么在用户的显示界面可显示相应的功能界面和按钮,以接受用户进行后续的数据操作,比如查看具体数据等。
那么在本实施例中,假如“张三”是海口分公司客户经理,查询“客户视图”时,只能查询海口分公司、且其名下客户的客户资料等信息。那么用户以“张三”登陆系统时,系统首先将“张三”与对应的actor对应,然后验证具有查询“客户视图“的功能,么在用户的终端界面展现“客户视图”功能界面。
当用户访问“查询视图”的具体数据时,即访问“查询视图”资源类时,比如点击“查询视图”功能界面的查询按钮时,那么根据资源类与切面类的对应关系,系统调用所述切面类拦截所述访问请求。
步骤120,所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;
切面类拦截了所述访问请求后,即提取访问请求的目的资源类对应需求的属性信息,也即资源类对应的属性信息,然后根据资源类需求的属性信息去提取actor的相应属性信息赋值给资源类的对象。
其中,所述切面类根据所述资对应的属性信息,提取用户对象的属性信息赋值给资源类的第一对象包括:
步骤S121,所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的session中是否存在所述属性信息;
在用户登陆时,服务器会针对用户对象维护一个session(会话)以进行通信。
比如“客户视图”资源类需要的属性包括:员工编码,部门编码,职位编码。那么对于前述“张三”对应的actor,本步骤首先去session中查询是否存在张三的员工编码、部门编码、职位编码,如果没有,则进入步骤S123。如果有则进入步骤S122。从数据表中获取张三的员工编码、部门编码、职位编码,比如员工编码1001、海口分部门编码4601、客户经理编码CM46011001信息。
步骤S122,如果存在,则从所述session中提取用户对象的属性信息赋值给资源类的第一对象;
如果存在,则获取张三的员工编码、部门编码、职位编码,比如员工编码1001、海口分部门编码4601、客户经理编码CM46011001信息,然后将张三的员工编码1001、海口分公司编码4601、客户经理编码CM46011001的值Set到客户视图的普通类中的VO对象custViewMVO对应的属性staffId、regionId、custManager中。
本步骤session中存在相应属性信息可能是因为,张三本在次操作之前,可能访问其他某个资源类,而该资源类第一次也用到上述信息,如果是第一次使用,则通过步骤S123获取相应属性信息写入session。
步骤S123,如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述session中,再从session中将所述需求的属性信息赋值给资源类的对象。
另外,当session信息中不存在资源类所需求的属性信息,或者session中缺少资源类所需求的属性信息中的一个或者多个,那么则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述session中,再从session中将所述需求的属性信息赋值给资源类的对象。
比如对于前述“张三”例子,如果缺少“客户视图”所述的全部属性信息,那么本步骤从对应所述用户对象的属性信息表中提取张三的员工编码1001、海口分部门编码4601、客户经理编码CM46011001信息写入session中,然后张三的员工编码1001、海口分公司编码4601、客户经理编码CM46011001的值Set到客户视图的普通类中的VO对象custViewMVO对应的属性staffId、regionId、custManager中。
对于缺少部分资源类所需的属性信息,其操作过程类似,在此不加以限制。
步骤130,所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
切面类将资源类所需的actor的属性信息赋值给资源类的对象后,则放弃拦截,通知资源类执行其逻辑,根据所述对象中的属性信息,从数据库中获取数据结果集。
其中,所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集包括:
步骤S130,所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件并进行查询。
资源类的VO等对象获得属性信息后,则获取VO对象的属性值信息,传入普通类中的动态SQL语句中执行生成Actor的数据权限范围的数据结果集,比如将regionId=4601且custManager=CM46011001做为SQL语句的查询条件筛选出张三权限范围内的客户列表。
在本发明中,对于资源类的动态SQL语句查询获得的结果集,如果结果集不为空,则可直接返回结果集给用户对象所在终端;如果结果集为空,则说明可能数据库存在对应相应功能权限的数据,但是用户没有相应数据权限,或者数据库中对应相应功能权限根本就没有数据,那么可提示用户对象所在终端“没有查询到相应的数据或者用户数据权限不足”。
另外,所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句时还包括:
步骤A130将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进行标记;
即标记所述动态SQL语句中的查询条件是否是对应用户对象的数据权限。
从数据库中获取数据结果集之后还包括:
步骤A131,当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端;
步骤A132,当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得的;如果是,则生成所述用户对象没有相应权限的提示信息返回给所述用户对象所在终端。
在步骤A130至A132实施例中,资源类将相应切面类传入的参数(资源类需求的actor的属性信息),作为查询数据库的查询条件进行搜索,那么对于数据库来说,其检索结果可能因为是数据库中根本不存在相应功能权限的数据而导致得到空集,或者是因为数据库中存在相应功能权限的数据但是该用户对象没有数据权限而导致的空集,为了使用户明确知道其是没有相应数据权限,那么当检索结果为空集时,则可根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得,如果是可返回当前用户对象没有相应数据权限的提示信息给用户对象所在终端,如果不是则可返回当前不存在实际数据内容的提示给用户对象所在终端;避免使用者认为服务器没响应,而一直重复发送请求,导致服务器资源浪费。
本发明将采用开源Spring框架的AOP面向切面编程,将执行具体业务逻辑设置于资源类,将进行数据鉴权的逻辑设置于切面类,将业务逻辑与数据权限鉴权进行分离、解耦,在资源的整体框架不变的情况下,针对资源的业务逻辑完全与对资源的数据权限相分离,资源类无确切的、主动的知道需要获取何种属性信息,只需被动接收切面类传输的参数即可完成整个过程,因此,代码冗余量低,节省存储空间;另外,业务人员只需要关系其业务中各用户角色的数据权限,而不用需求技术人员根据业务人员的需求重新改编代码,提高了系统针对数据权限控制的灵活性,扩展性强。
参照图4,其示出了本发明一种基于RBAC模型扩展的数据权限控制系统,包括:
配置模块200,用于配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求;
拦截模块210,用于当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;
赋值模块220,用于所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;
数据获取模块230,用于所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
其中,所述赋值模块包括:
判断模块,用于所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的session中是否存在所述属性信息;
第一赋值模块,用于如果存在,则从所述session中提取用户对象的属性信息赋值给资源类的第一对象;
第二赋值模块,用于如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION中将所述需求的属性信息赋值给资源类的对象。
其中,所述配置模块包括:
第一配置模块,用于在spring框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
和/或,第二配置模块,用于采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
其中,所述数据获取模块包括:
第一数据获取模块,用于所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件并进行查询。
在所述数据获取模块还包括:
标记模块,用于将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进行标记;
进一步的,所述数据获取模块之后还包括:
第一返回模块,用于当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端;
第二返回模块,用于当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得的;如果是则生成所述用户对象没有相应权限的提示信息返回给所述用户对象所在终端。
需要说明的是,对于上述方法实施例而言,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
对于系统或系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本发明可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上对本发明所提供的一种基于RBAC模型扩展的数据权限控制方法和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于RBAC模型扩展的数据权限控制方法,其特征在于,包括:
配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求;
基于上述配置,数据权限的控制过程包括:
当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;
所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;
所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
2.根据权利要求1所述的方法,其特征在于,所述切面类根据所述资对应的属性信息,提取用户对象的属性信息赋值给资源类的第一对象包括:
所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的SESSION中是否存在所述属性信息;
如果存在,则从所述SESSION中提取用户对象的属性信息赋值给资源类的第一对象;
如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION中将所述需求的属性信息赋值给资源类的对象。
3.根据权利要求1所述的方法,其特征在于,所述配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求包括:
在SPRING框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
和/或,采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
4.根据权利要求1所述的方法,其特征在于,所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集包括:
所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件并进行查询。
5.根据权利要求4所述的方法,其特征在于,所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句时还包括:
将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进行标记;
进一步的,所述执行并生成所述用户对象的数据结果集之后还包括:
当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端;
当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得的;如果是,则生成所述用户对象没有相应权限的提示信息返回给所述用户对象所在终端。
6.一种基于RBAC模型扩展的数据权限控制系统,其特征在于,包括:
配置模块,用于配置用户对象与各属性之间的对应关系,各属性与各资源类之间的对应关系;配置各资源类与各切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求;
拦截模块,用于当一登录系统的用户对象发送访问请求以请求访问一资源类时,通过资源类对应的切面类拦截所述访问请求;
赋值模块,用于所述切面类根据所述资源类对应需求的属性信息,提取用户对象的属性信息赋值给资源类的第一对象;
数据获取模块,用于所述资源类根据所述第一对象中的属性信息,从数据库中获取数据结果集。
7.根据权利要求6所述的系统,其特征在于,所述赋值模块包括:
判断模块,用于所述切面类根据所述资源类对应需求的属性信息,判断对应用户对象的SESSION中是否存在所述属性信息;
第一赋值模块,用于如果存在,则从所述SESSION中提取用户对象的属性信息赋值给资源类的第一对象;
第二赋值模块,用于如果不存在或者不全部存在,则从对应所述用户对象的属性信息表中,提取所述需求的属性信息中缺少的属性信息写入所述SESSION中,再从SESSION中将所述需求的属性信息赋值给资源类的对象。
8.根据权利要求6所述的系统,其特征在于,所述配置模块包括:
第一配置模块,用于在SPRING框架的XML配置文件中定义各资源类与相应切面类的对应关系;所述切面类用于拦截访问所述资源类的访问请求;
和/或,第二配置模块,用于采用数据库表结构建立各资源类与相应切面类的对应关系,所述切面类用于拦截访问所述资源类的访问请求。
9.根据权利要求6所述的系统,其特征在于,所述数据获取模块包括:
第一数据获取模块,用于所述资源类获取所述对象中的各属性信息,传入所述资源类中的动态SQL语句执行并生成所述用户对象的数据结果集;所述动态SQL语句用于根据属性信息确定查询条件并进行查询。
10.根据权利要求9所述的系统,其特征在于,在所述数据获取模块还包括:
标记模块,用于将所述第一对象中的属性信息,对当前属于用户对象的数据权限的各属性信息进行标记;
进一步的,所述数据获取模块之后还包括:
第一返回模块,用于当所述数据结果集不为空时,直接将数据结果集返回给所述用户对象所在终端;
第二返回模块,用于当所述数据结果集为空时,则根据各属性信息的标记,判断数据结果集是否根据属于所述用户对象的数据权限获得的;如果是则生成所述用户对象没有相应权限的提示信息返回给所述用户对象所在终端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210563361.8A CN103049684B (zh) | 2012-12-21 | 2012-12-21 | 一种基于rbac模型扩展的数据权限控制方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210563361.8A CN103049684B (zh) | 2012-12-21 | 2012-12-21 | 一种基于rbac模型扩展的数据权限控制方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103049684A true CN103049684A (zh) | 2013-04-17 |
CN103049684B CN103049684B (zh) | 2015-08-12 |
Family
ID=48062318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210563361.8A Active CN103049684B (zh) | 2012-12-21 | 2012-12-21 | 一种基于rbac模型扩展的数据权限控制方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103049684B (zh) |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179126A (zh) * | 2013-03-26 | 2013-06-26 | 山东中创软件商用中间件股份有限公司 | 一种访问控制方法及装置 |
CN103412766A (zh) * | 2013-09-05 | 2013-11-27 | 曙光云计算技术有限公司 | 基于用户权限的数据访问方法和装置 |
CN104052747A (zh) * | 2014-06-23 | 2014-09-17 | 桂林长海科技有限责任公司 | 一种基于rbac的权限管理系统 |
CN104217146A (zh) * | 2014-09-04 | 2014-12-17 | 浪潮通用软件有限公司 | 一种基于abac和rbac的权限控制方法 |
CN104504343A (zh) * | 2014-12-05 | 2015-04-08 | 国云科技股份有限公司 | 一种基于资源粒度的权限控制方法 |
CN105653910A (zh) * | 2015-12-28 | 2016-06-08 | 芜湖美智空调设备有限公司 | 用户访问系统的控制方法和装置 |
CN105912949A (zh) * | 2016-04-13 | 2016-08-31 | 北京京东尚科信息技术有限公司 | 数据权限管理方法、数据权限管理系统以及业务管理系统 |
CN106529229A (zh) * | 2015-09-10 | 2017-03-22 | 北京国双科技有限公司 | 权限数据的处理方法和装置 |
CN106657147A (zh) * | 2017-01-24 | 2017-05-10 | 柳州得实科技有限公司 | 一种基于rbac的权限管理系统 |
CN107465653A (zh) * | 2016-06-02 | 2017-12-12 | 北京京东尚科信息技术有限公司 | 权限管理系统及方法 |
CN108170407A (zh) * | 2016-12-05 | 2018-06-15 | 中国移动通信有限公司研究院 | 一种获取目标数据的方法及装置 |
CN109976914A (zh) * | 2019-04-01 | 2019-07-05 | 北京百度网讯科技有限公司 | 用于控制资源访问的方法和装置 |
CN110348183A (zh) * | 2019-05-28 | 2019-10-18 | 石化盈科信息技术有限责任公司 | 基于rbac的可快速配置的权限配置系统、方法和存储介质 |
CN110348184A (zh) * | 2019-05-28 | 2019-10-18 | 石化盈科信息技术有限责任公司 | 基于工业云的权限资源配置方法、系统和存储介质 |
CN110363012A (zh) * | 2019-05-28 | 2019-10-22 | 石化盈科信息技术有限责任公司 | 对权限资源进行权限配置的方法、权限系统和存储介质 |
CN110390008A (zh) * | 2019-07-25 | 2019-10-29 | 东莞市盟大塑化科技有限公司 | 报表推送方法、装置、计算机设备和存储介质 |
CN111343172A (zh) * | 2020-02-20 | 2020-06-26 | 中国建设银行股份有限公司 | 网络访问权限动态处理方法及装置 |
CN111339507A (zh) * | 2020-02-24 | 2020-06-26 | 杭州数梦工场科技有限公司 | 一种访问请求处理的方法、系统、设备及可读存储介质 |
CN111625782A (zh) * | 2020-05-25 | 2020-09-04 | 杭州安恒信息技术股份有限公司 | 源码的访问权限控制方法、装置、计算机设备和存储介质 |
CN112069541A (zh) * | 2020-09-08 | 2020-12-11 | 北京百度网讯科技有限公司 | 权限管理、查询方法和装置 |
CN112580105A (zh) * | 2021-01-14 | 2021-03-30 | 黄杰 | 基于交互类与非交互类的数据权限防护方法及系统 |
CN112883390A (zh) * | 2021-02-18 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 一种权限控制方法、装置及存储介质 |
CN113722733A (zh) * | 2021-08-27 | 2021-11-30 | 北京航天云路有限公司 | 一种基于Java注解实现的数据访问权限控制方法 |
CN113780789A (zh) * | 2021-09-02 | 2021-12-10 | 科大国创云网科技有限公司 | 一种统一数据访问服务型的细粒度权限控制方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1967560A (zh) * | 2006-11-09 | 2007-05-23 | 华为技术有限公司 | 业务操作权限控制方法、关系数据库的生成方法 |
CN101547117A (zh) * | 2009-05-07 | 2009-09-30 | 山东中创软件商用中间件股份有限公司 | 充分体现“分级分权”的安全框架 |
CN101587439A (zh) * | 2009-06-24 | 2009-11-25 | 用友软件股份有限公司 | 业务系统、权限系统和用于业务系统的数据权限控制方法 |
US20100211989A1 (en) * | 2009-02-17 | 2010-08-19 | International Business Machines Corporation | Method and apparatus for automated assignment of access permissions to users |
CN102130894A (zh) * | 2010-01-12 | 2011-07-20 | 大唐移动通信设备有限公司 | 鉴权和认证方法及系统 |
-
2012
- 2012-12-21 CN CN201210563361.8A patent/CN103049684B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1967560A (zh) * | 2006-11-09 | 2007-05-23 | 华为技术有限公司 | 业务操作权限控制方法、关系数据库的生成方法 |
US20100211989A1 (en) * | 2009-02-17 | 2010-08-19 | International Business Machines Corporation | Method and apparatus for automated assignment of access permissions to users |
CN101547117A (zh) * | 2009-05-07 | 2009-09-30 | 山东中创软件商用中间件股份有限公司 | 充分体现“分级分权”的安全框架 |
CN101587439A (zh) * | 2009-06-24 | 2009-11-25 | 用友软件股份有限公司 | 业务系统、权限系统和用于业务系统的数据权限控制方法 |
CN102130894A (zh) * | 2010-01-12 | 2011-07-20 | 大唐移动通信设备有限公司 | 鉴权和认证方法及系统 |
Non-Patent Citations (2)
Title |
---|
唐灿: "基于AOP自由粒度的柔性权限管理系统设计与实现", 《天津工业大学学报》 * |
张磊等: "利用AOP实现Web应用中的用户权限管理", 《科技广场》 * |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103179126A (zh) * | 2013-03-26 | 2013-06-26 | 山东中创软件商用中间件股份有限公司 | 一种访问控制方法及装置 |
CN103412766A (zh) * | 2013-09-05 | 2013-11-27 | 曙光云计算技术有限公司 | 基于用户权限的数据访问方法和装置 |
CN104052747A (zh) * | 2014-06-23 | 2014-09-17 | 桂林长海科技有限责任公司 | 一种基于rbac的权限管理系统 |
CN104217146B (zh) * | 2014-09-04 | 2017-02-15 | 浪潮通用软件有限公司 | 一种基于abac和rbac的权限控制方法 |
CN104217146A (zh) * | 2014-09-04 | 2014-12-17 | 浪潮通用软件有限公司 | 一种基于abac和rbac的权限控制方法 |
CN104504343A (zh) * | 2014-12-05 | 2015-04-08 | 国云科技股份有限公司 | 一种基于资源粒度的权限控制方法 |
CN106529229A (zh) * | 2015-09-10 | 2017-03-22 | 北京国双科技有限公司 | 权限数据的处理方法和装置 |
CN106529229B (zh) * | 2015-09-10 | 2019-06-18 | 北京国双科技有限公司 | 权限数据的处理方法和装置 |
CN105653910A (zh) * | 2015-12-28 | 2016-06-08 | 芜湖美智空调设备有限公司 | 用户访问系统的控制方法和装置 |
CN105912949A (zh) * | 2016-04-13 | 2016-08-31 | 北京京东尚科信息技术有限公司 | 数据权限管理方法、数据权限管理系统以及业务管理系统 |
CN105912949B (zh) * | 2016-04-13 | 2019-11-05 | 北京京东尚科信息技术有限公司 | 数据权限管理方法、数据权限管理系统以及业务管理系统 |
CN107465653A (zh) * | 2016-06-02 | 2017-12-12 | 北京京东尚科信息技术有限公司 | 权限管理系统及方法 |
CN107465653B (zh) * | 2016-06-02 | 2021-03-30 | 北京京东尚科信息技术有限公司 | 权限管理系统、装置及方法、计算机可读存储介质 |
CN108170407A (zh) * | 2016-12-05 | 2018-06-15 | 中国移动通信有限公司研究院 | 一种获取目标数据的方法及装置 |
CN108170407B (zh) * | 2016-12-05 | 2020-12-29 | 中国移动通信有限公司研究院 | 一种获取目标数据的方法及装置 |
CN106657147A (zh) * | 2017-01-24 | 2017-05-10 | 柳州得实科技有限公司 | 一种基于rbac的权限管理系统 |
CN109976914A (zh) * | 2019-04-01 | 2019-07-05 | 北京百度网讯科技有限公司 | 用于控制资源访问的方法和装置 |
CN110363012A (zh) * | 2019-05-28 | 2019-10-22 | 石化盈科信息技术有限责任公司 | 对权限资源进行权限配置的方法、权限系统和存储介质 |
CN110363012B (zh) * | 2019-05-28 | 2021-09-14 | 石化盈科信息技术有限责任公司 | 对权限资源进行权限配置的方法、权限系统和存储介质 |
CN110348183B (zh) * | 2019-05-28 | 2021-07-20 | 石化盈科信息技术有限责任公司 | 基于rbac的可快速配置的权限配置系统、方法和存储介质 |
CN110348184B (zh) * | 2019-05-28 | 2021-04-06 | 石化盈科信息技术有限责任公司 | 基于工业云的权限资源配置方法、系统和存储介质 |
CN110348183A (zh) * | 2019-05-28 | 2019-10-18 | 石化盈科信息技术有限责任公司 | 基于rbac的可快速配置的权限配置系统、方法和存储介质 |
CN110348184A (zh) * | 2019-05-28 | 2019-10-18 | 石化盈科信息技术有限责任公司 | 基于工业云的权限资源配置方法、系统和存储介质 |
CN110390008A (zh) * | 2019-07-25 | 2019-10-29 | 东莞市盟大塑化科技有限公司 | 报表推送方法、装置、计算机设备和存储介质 |
CN111343172A (zh) * | 2020-02-20 | 2020-06-26 | 中国建设银行股份有限公司 | 网络访问权限动态处理方法及装置 |
CN111339507A (zh) * | 2020-02-24 | 2020-06-26 | 杭州数梦工场科技有限公司 | 一种访问请求处理的方法、系统、设备及可读存储介质 |
CN111625782A (zh) * | 2020-05-25 | 2020-09-04 | 杭州安恒信息技术股份有限公司 | 源码的访问权限控制方法、装置、计算机设备和存储介质 |
CN111625782B (zh) * | 2020-05-25 | 2023-09-19 | 杭州安恒信息技术股份有限公司 | 源码的访问权限控制方法、装置、计算机设备和存储介质 |
CN112069541A (zh) * | 2020-09-08 | 2020-12-11 | 北京百度网讯科技有限公司 | 权限管理、查询方法和装置 |
CN112069541B (zh) * | 2020-09-08 | 2024-05-07 | 北京百度网讯科技有限公司 | 权限管理、查询方法和装置 |
CN112580105A (zh) * | 2021-01-14 | 2021-03-30 | 黄杰 | 基于交互类与非交互类的数据权限防护方法及系统 |
CN112580105B (zh) * | 2021-01-14 | 2021-08-17 | 杭银消费金融股份有限公司 | 基于交互类与非交互类的数据权限防护方法及系统 |
CN112883390A (zh) * | 2021-02-18 | 2021-06-01 | 腾讯科技(深圳)有限公司 | 一种权限控制方法、装置及存储介质 |
CN113722733A (zh) * | 2021-08-27 | 2021-11-30 | 北京航天云路有限公司 | 一种基于Java注解实现的数据访问权限控制方法 |
CN113780789A (zh) * | 2021-09-02 | 2021-12-10 | 科大国创云网科技有限公司 | 一种统一数据访问服务型的细粒度权限控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103049684B (zh) | 2015-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103049684B (zh) | 一种基于rbac模型扩展的数据权限控制方法和系统 | |
US8065682B2 (en) | Enforcing system resource usage limits on query requests based on grouping query requests into workgroups and assigning workload groups to resource pools | |
US8326874B2 (en) | Model-based implied authorization | |
US20130103640A1 (en) | Entitlement management in an on-demand system | |
CN103632082A (zh) | 一种通用权限管理系统及方法 | |
US20170257379A1 (en) | Policy management, enforcement, and audit for data security | |
CN103530568A (zh) | 权限控制方法、装置及系统 | |
CN102724221A (zh) | 云计算企业信息系统及该系统的用户权限设定方法 | |
US11539707B2 (en) | Dynamic security policy consolidation | |
US8763095B2 (en) | Authorization sharing | |
CN108681674B (zh) | 报表模块创建方法、装置、计算机装置及存储介质 | |
CN109951530A (zh) | 一种多租户模式的技术实现方法 | |
CN103763369A (zh) | 一种基于san存储系统的多重权限分配方法 | |
CN114817901A (zh) | 权限管理方法、相关装置和介质 | |
US9760734B2 (en) | Catalog-based user authorization to access to multiple applications | |
Shermin | An access control model for nosql databases | |
CN105740996A (zh) | 一种汇总纳税申报管理系统及方法 | |
CN113255000A (zh) | 数据访问控制方法、装置、电子设备及可读存储介质 | |
US11379416B1 (en) | Systems and methods for common data ingestion | |
WO2020220881A1 (zh) | 操作代码的审计方法、装置、设备及计算机可读存储介质 | |
CN110992005A (zh) | 大数据应用中实现数据权限控制处理的方法及其系统 | |
US20230224304A1 (en) | Resource access control in cloud environments | |
CN116383804A (zh) | 一种权限管理方法、装置、设备、介质及程序产品 | |
CN107124429B (zh) | 一种基于双数据表设计的网络业务安全保护方法及系统 | |
US11436349B2 (en) | Method and system for implementing a cloud machine learning environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |