基于权限配置的数据访问控制的方法与流程

文档序号:23729185发布日期:2021-01-26 19:23阅读:69来源:国知局
基于权限配置的数据访问控制的方法与流程

[0001]
本发明涉及信息安全技术领域,特别是一种基于权限配置的数据访问控制的方法。


背景技术:

[0002]
在许多应用开发中都会涉及到权限管理,权限管理主要分两部分,即功能权限和数据访问权限;针对功能权限的控制,已经有很成熟的方案。
[0003]
数据作为重要的信息载体在服务的前端与服务端进行交互,出于信息安全的考虑,角色划分越来越明确,不同的角色对数据的访问权限不同,在访问同一份数据时,结果可能是不同的。
[0004]
现在的业务系统开发中,关于数据权限的控制一般都是在代码开发时在业务层对用户角色进行判定调用不同的数据获取语句,或者对访问数据库数据的sql语句添加涉及数据权限控制的where或者case when条件来实现。
[0005]
这样做的弊端就是在开发时就要详细分析哪些数据需要加入权限控制,并且这些关于数据权限控制的代码散布到整个应用中。一旦需要调整时就要对许多的sql语句进行修改,很是耗费精力,修改后还需要重新打包上线,繁琐而且滞后。


技术实现要素:

[0006]
为解决现有技术中存在的问题,本发明的目的是提供一种基于权限配置的数据访问控制的方法,本发明通过配置角色对数据权限规则并加以解析利用的方式,解决传统方案中角色的权限或者数据字段发生变化后,因无法实时更新权限判断逻辑而导致数据访问控制失效的问题。
[0007]
为实现上述目的,本发明采用的技术方案是:一种基于权限配置的数据访问控制的方法,包括以下步骤:
[0008]
步骤1、对需要进行权限控制的数据字段定义访问权限规则策略:
[0009]
定义字段所需权限级别和定义角色权限级别,不同的登录角色对应不同的权限级别,对应能访问到不同级别的数据;根据日志系统配置日志输出规则,先配置数据根级别的权限级别,及root级规则,再配置属性字段的细化权限级别;
[0010]
步骤2、实现策略解析模块:
[0011]
编写解析规则策略,并把规则策略放入内存中,开启定时功能,定期获取配置文件并加载,以触发规则策略更新后,同步到内存中;
[0012]
步骤3、实现数据拦截模块:
[0013]
编写自定义注解及其实现和拦截器中使用注解生效,当请求的业务接口访问数据时,通过拦截器去判断请求的返回信息中是否包含数据权限控制注解,保证最终通过的数据是已经经过权限控制的数据或者不需要控制的数据;
[0014]
步骤4、实现规则匹配模块:
[0015]
在拦截器对数据进行拦截后,先判断属性字段的权限,再判断上层规则,即root级规则。
[0016]
本发明的有益效果是:
[0017]
本发明做到低代码侵入度,在应用开发过程中,不需要太多关注数据访问权限控制,只需要指定该数据会受到控制;在应用开发即将完成时,通过对数据字段访问权限和角色所属权限绑定控制规则策略;数据访问控制需要调整时,只需要修改配置的权限规则策略即可。
附图说明
[0018]
图1为本发明实施例中数据访问权限控制流程图。
具体实施方式
[0019]
下面结合附图对本发明的实施例进行详细说明。
[0020]
实施例1
[0021]
一种基于权限配置的数据访问控制的方法,包括以下步骤:
[0022]
步骤1、对需要进行权限控制的数据字段定义访问权限规则策略:
[0023]
数据访问控制的主要目的是控制什么权限能访问哪些数据。定义数据字段的访问权限规则策略,实际上就是定义字段所需权限级别和定义角色权限级别,不同的登录角色对应不同的权限级别,对应能访问到不同级别的数据。借鉴于日志系统配置日志输出规则,先配置数据root(根级别)的权限级别,再配置以下属性字段的细化权限级别。
[0024]
步骤2、实现策略解析模块:
[0025]
编写解析规则策略的方法,把策略放入内存中,以免频繁读取配置文件重新解析,严重影响效率。开启定时功能,定期获取配置文件并加载,以触发规则策略更新后,同步到内存中。
[0026]
步骤3、实现数据拦截模块:
[0027]
数据拦截模块,包括编写自定义注解及其实现和拦截器中使用注解生效。当请求的业务接口访问数据时,通过使用拦截器去判断请求的返回信息中是否包含数据权限控制注解,保证最终通过的数据是已经经过权限控制的数据或者不需要控制的数据。注解信息无需包含多余的属性信息,只需要注解本身即可,当数据经过过滤后,再去除注解标识。
[0028]
步骤4、实现规则匹配模块:
[0029]
在拦截器对数据进行拦截后,与解析规则顺序相反,先判断更精确匹配的规则,即属性字段的权限,再判断上层规则,即root级规则。受到访问控制的数据将被清除值内容,保证数据的可见性受到控制,但不影响业务逻辑,不影响业务的正常运行。
[0030]
为降低代码侵入度,判断规则时,采用aop拦截器的方式,在拦截器中实现规则对数据的过滤。为实现权限规则的及时生效,本发明在解析规则时,使用异步定时任务定时读取配置,当检测到权限配置更新后,获取新的配置信息,并在下次规则判断时,使用新的规则配置。在拦截器中过滤超出权限的属性字段,最终达到控制数据访问权限的目的。
[0031]
把应用的数据权限控制独立出来,就像切面编程一样降低代码的侵入,通过配置的方式灵活方便的处理数据权限控制;在响应数据中通过注解的方式注入权限控制,在数
据返回之前,系统实时读取新的配置,通过解析注解配置的权限规则并修改数据,即可达到数据访问控制的目的。
[0032]
本实施例的基于权限配置的数据访问控制的方法,一是实现方式简单,在实现对配置的解析后,只需要对配置信息做相应的新增或修改,降低代码侵入,二是权限查看也阅读方便直观,配置信息可以写入数据库表或者xml配置文件,三是配置改动生效快速,当服务重新读取到配置即可获取新的配置规则信息即可生效,且数据的请求访问对权限访问控制过程无感知,即不影响业务的正常运行。
[0033]
实施例2
[0034]
本章实施例中,角色权限等级以1,2,3,4为例,规定为数字越大,则权限越大。当配置一个数据的访问权限时,如name:2,则表示name字段需要的最低权限为2,权限等级为2,3,4的用户角色,都可以访问此数据。
[0035]
数据以一个机构和一篇文章的基本信息为例,
[0036]
机构(org)的基本信息包括:id(编号),name(机构名称),desc(描述),address(地址),locate(地理经纬度),code(内部编码),payaccout(支付信息),paykey(支付密钥)等。
[0037]
文章(article)基本信息包括:id(编号),title(名称),content(),createtime(),comment(评论)等。
[0038]
权限配置信息可编写为多种格式,下面以yml格式配置文件为例:
[0039][0040]
实现策略解析模块:
[0041]
此模块主要功能是解析配置文件,并保持在内存中。
[0042]
以java语言为例,其解析方法如下:
[0043][0044]
为实现定时更新配置信息,可在方法getauthinfo()上添加使用@scheduled相关注解,以达到定时更新的目的。
[0045]
实现数据拦截模块:
[0046]
如图1所示,在业务处理模块产生数据之后,会返回到接口控制层。在项目开发中,可自定义注解@authdata,添加到接口控制层的方法上。把使用aop工具类,绑定此方法,当请求接口时,所有数据会由拦截模块拦截获取,以便后续规则模块处理。
[0047]
实现规则匹配模块:
[0048]
在拦截模块拦截到业务数据的同时,也会获取请求线程信息中的用户信息,包含用户的权限等级。
[0049]
在此模块中,当业务数据为article时,获取auth中的article部分权限信息。再遍历业务数据的权限信息,依次判断用户的权限和数据的权限等级。
[0050]
如果用户权限高于article字段的权限,则对业务数据不做更改。
[0051]
如果用户权限低于article字段的权限,如用户权限为1,则处理数据article中的comment信息为空,即评论不予展示。
[0052]
机构(org)信息的处理方式同理。
[0053]
经过此模块处理后,data1转换为了data2返回给接口请求端。
[0054]
以上所述实施例仅表达了本发明的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1