一种基于权限域结构树进行数据权限管理的方法与流程

文档序号:17539230发布日期:2019-04-29 14:22阅读:387来源:国知局
一种基于权限域结构树进行数据权限管理的方法与流程

本发明涉及计算机应用技术领域,涉及一种数据权限管理方法,具体涉及一种基于权限域结构树进行数据权限管理的方法。



背景技术:

在现有各类软件应用系统研发中,系统权限控制是基础必备功能。权限控制分为功能权限控制和数据权限控制两类。其中,功能权限控制是指允许或拒绝系统用户使用系统的特定功能,数据权限控制是允许或拒绝系统用户针对某些数据执行特定业务操作。

目前,很多开源框架中都已经提供了完备、通用的功能权限控制解决方案,而数据权限由于涉及到目标数据存储结构、业务应用特点、系统开发架构等多种因素影响,目前业内普遍采用的数据权限控制方法是通过在代码开发过程中,通过硬编码的方式,对数据源查询语句添加额外的过滤查询条件实现。

上述方法存在诸多缺点:第一、权限控制逻辑和业务处理逻辑混合在一起,即:权限控制逻辑侵入到常规业务处理逻辑中,有违软件设计基本原则且不利于后期代码维护;第二、通过在开发过程中硬编码的方式实现数据权限控制,当权限访问需求发生变更时,需要代码开发人员进行修改,对于已经上线运行的应用系统而言,还需要后续打包部署等环节配合才能完成,上述过程中还会涉及应用系统停止服务、重新启动,极大增加了系统运维成本并降低了系统可用性;第三、由于涉及到具体编码开发,上述方法仅可针对特定的数据源类型(数据库类型)才能生效,不具有普遍性,无法成为通用解决方案;第四、上述方法设置数据权限过程不直观,对于没有软件开发技术基础的系统运维人员而言过于复杂,并且数据权限设置结果无法可视化。



技术实现要素:

技术问题:为解决现有技术的不足,本发明提供了一种基于权限域结构树进行数据权限管理的方法。

技术方案:一种基于权限域结构树进行数据权限管理的方法,包括以下步骤:

(1)构建权限域结构树,并基于所述权限域结构树配置、定义数据权限访问规则,完成后进入步骤(2);

(2)针对所述权限域结构树执行权限计算,完成后进入步骤(3);

(3)将针对所述权限域树执行权限计算的计算结果进行保存,完成后进入步骤(4);

(4)应用权限计算结果进行数据权限控制。

进一步地,步骤(1)所述权限域结构树包括一个树形结构,其中每个树节点称为权限域节点。

进一步地,步骤(1)中基于权限域结构树配置、定义数据权限访问规则时,在每一个权限域节点下,配置、定义应用系统中特定角色对特定数据所拥有的特定操作权限。

进一步地,步骤(1)中的数据权限访问规则,包括以下步骤:

(11)设置数据查询条件,通过数据查询条件限定数据对象;

(12)设置角色,表示所述权限域下针对哪些角色进行授权;

(13)设置允许和拒绝的操作类型,表示所述权限域下,对数据对象允许执行和拒绝执行的操作集合。

进一步地,基于所述权限域结构树设置、定义数据权限访问规则时,在一个权限域节点下能定义多条数据权限访问规则。

进一步地,基于所述权限域节点下可定义多条数据权限访问规则,能设置所述多条数据权限访问规则优先级。

进一步地,结构树上下级节点构成父子关系,子节点对应权限域继承父节点权限域所限定的数据查询条件。

进一步地,权限域树中各权限域节点具有不同的计算优先级,计算优先级顺序是父子节点,父节点优先计算;兄弟节点,兄节点优先。

进一步地,步骤(11)中设置数据查询条件,由于权限域结构树能被精确计算,因此所述数据查询条件无需明确限定,能通过直接指定sql语句、引用查询脚本语言、指定数据查询服务类、指定数据查询外部服务接口中的任意一种形式实现,能够适配多种数据库类型、多种缓存类型、多种存储类型。

进一步地,步骤(13)中设置允许和拒绝的操作类型时,能设置允许和拒绝的多种操作类型。

进一步地,步骤(3)中使用具备高性能读取特点的存储结构或存储介质保存权限计算结果。

有益效果:本发明公开的一种基于权限域结构树进行数据权限管理的方法具有以下有益效果:

1、通过配置手段设置数据权限访问控制规则,实现业务逻辑与权限控制逻辑分离;

2、基于权限域树形结构,可实现数据权限访问控制规则可视化;

3、基于权限域结构树严谨的计算规则,在设置数据权限访问控制规则时,可不限定具体的数据查询条件,可支持多种异构数据存储介质,包括但不限于多种关系型数据库、多种缓存数据库、多种搜索引擎以及其他数据存储介质;

4、权限域节点下可定义多条数据权限访问规则,并可设置多条数据权限访问规则优先级,从而实现细粒度的数据权限访问控制。

附图说明

图1为本发明公开的基于权限域结构树进行数据权限管理的方法的前三个步骤的流程示意图。

图2为本发明公开的应用权限域计算结果进行数据权限控制的流程图。

图3为本发明示例性实施例的数据权限管理配置界面的示意图。

图4为本发明示例性实施例的权限域计算顺序的说明图。

图5为本发明示例性实施例的权限计算结果数据的存储结构的示意图。

具体实施方式:

以下结合附图,对本发明实施例提供的技术方案进行清楚、完整地描述。显然,以下所描述实施例仅仅是本发明一部分实施例,而不是全部实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1和2所示,一种基于权限域结构树进行数据权限管理的方法,包括以下步骤:

(1)构建权限域结构树,并基于所述权限域结构树配置、定义数据权限访问规则,完成后进入步骤(2);

(2)针对所述权限域结构树执行权限计算,完成后进入步骤(3);

(3)将针对所述权限域树执行权限计算的计算结果进行保存,完成后进入步骤(4);

(4)应用权限计算结果进行数据权限控制。

进一步地,步骤(1)所述权限域结构树包括一个树形结构,其中每个树节点称为权限域节点。所述权限域除了名称和相关描述信息外,还包括三方面内容:1、数据查询条件,通过数据查询条件限定当前权限域下所指定的数据对象,即限定授权资源客体;2、角色,表示当前权限域下针对哪些角色进行授权,即限定授权主体;3、操作类型,表示当前权限域下针对资源客体的操作集合,即操作。

进一步地,步骤(1)中基于权限域结构树配置、定义数据权限访问规则时,在每一个权限域节点下,配置、定义应用系统中特定角色对特定数据所拥有的特定操作权限。

进一步地,步骤(1)中的数据权限访问规则,包括以下步骤:

(11)设置数据查询条件,通过数据查询条件限定数据对象;

(12)设置角色,表示所述权限域下针对哪些角色进行授权;

(13)设置允许和拒绝的操作类型,表示所述权限域下,对数据对象允许执行和拒绝执行的操作集合。

进一步地,基于所述权限域结构树设置、定义数据权限访问规则时,在一个权限域节点下能定义多条数据权限访问规则。

更进一步地,基于所述权限域节点下可定义多条数据权限访问规则,能设置所述多条数据权限访问规则优先级。

进一步地,结构树上下级节点构成父子关系,子节点对应权限域继承父节点权限域所限定的数据查询条件。

进一步地,权限域树中各权限域节点具有不同的计算优先级,计算优先级顺序是父子节点,父节点优先计算;兄弟节点,兄节点优先。

更进一步地,步骤(11)中设置数据查询条件,由于权限域结构树能被精确计算,因此所述数据查询条件无需明确限定,能通过直接指定sql语句、引用查询脚本语言、指定数据查询服务类、指定数据查询外部服务接口中的任意一种形式实现,能够适配多种数据库类型、多种缓存类型、多种存储类型。

更进一步地,步骤(13)中设置允许和拒绝的操作类型时,能设置允许和拒绝的多种操作类型。

进一步地,步骤(3)中使用具备高性能读取特点的存储结构或存储介质保存权限计算结果。

在本发明实施例中,构建权限域结构树通过图3所示界面完成。如图3所示,数据权限配置管理界面主要包括四个区域,分别为权限域树导航显示区(位于界面左侧)、权限域树节点维护区(位于界面右侧上部)、权限域节点数据查询条件维护区(位于界面右侧中部)、权限域权限规则设置区(位于界面右侧下部)。

其中,所述权限域树导航显示区用于展示构建完成的权限域树结构并起到导航作用,当点击权限域节点(树节点)时,位于界面右侧的权限域节点数据查询条件维护区显示所选节点对应的数据查询条件和其继承的父权限域节点的数据查询条件;

其中,所述权限域树节点维护区包括“添加子域”、“编辑子域”和“删除子域”三个操作按钮,用户使用所述三个按钮可维护修改左侧权限域树结构;

其中,所述权限域节点数据查询条件维护区包括上部和下部两个区域,上部区域用于表示当前权限域节点已经继承自父权限域的数据查询条件,下部区域用于编辑设置当前权限域自身所需的数据查询条件(由于权限域结构树是可精确计算的,因此具体数据查询条件无需限定,可包括:直接指定sql语句、引用查询脚本语言、指定数据查询服务类、指定数据查询外部服务接口等多种形式,从而可适配多种数据库类型、多种缓存类型、多种存储类型,极大提升本方法的普适性)。通过点击“添加条件”新增一条数据查询条件,在列表中选中已经存在的查询条件,并点击“删除条件”即可删除相应的数据查询条件。

其中,所述权限域权限规则设置区用于设置当前权限域对应的权限规则。用户通过点击“添加规则”按钮可新增一条权限规则记录,点击设置角色图标(图中角色单元格中铅笔图标)可为当前权限规则设置角色信息,点击设置允许操作类型图标(图中允许操作类型单元格中铅笔图标)可为当前权限规则设置允许的操作类型,点击设置拒绝操作类型图标(图中拒绝操作类型单元格中铅笔图标)可为当前权限规则设置拒绝的操作类型。此外,在列表中选中特定权限规则记录,然后点击“向上移动”或“向下移动”按钮可更改当前权限规则的优先级(序号越小计算优先级越高)。

用户按照上述实施例所述可完成应用系统中数据权限设置。在本实施例中,名称为“一级权限域_01”的权限域节点所表达的数据权限访问规则为:

“角色1”针对“数据查询条件一”、“数据查询条件二”、“数据查询条件三”、“数据查询条件四”、“数据查询条件五”所限定的数据可以执行“操作一”、“操作二”,不允许执行“操作三”;

“角色2”针对“数据查询条件一”、“数据查询条件二”、“数据查询条件三”、“数据查询条件四”、“数据查询条件五”所限定的数据可以执行“操作一”、“操作三”,不允许执行“操作二”。

权限域结构树可以清晰、全面表达出数据权限访问控制规则,可实现数据权限访问控制规则的可视化。

当应用系统数据权限控制需求发生变化时,仅需系统运维或实施人员在上述数据权限管理配置界面,调整权限域结构树即可完成,无需开发人员介入。

在完成权限域结构树设置后,点击“计算权限域”按钮,系统针对权限域树各节点设置的数据权限规则进行计算,在本实施例中,根据本发明方法所述的“父子节点,子优先”、“兄弟节点、兄优先”计算方法,图4所示权限域树的计算顺序为:

第一、“二级权限域_01”

第二、“二级权限域_02”

第三、“一级权限域_01”

第四、“一级权限域_02”

第五、“一级权限域_03”

第六、“根权限域”

在本实施例中,上述计算完成后,可采用如图5所示hash表存储数据权限计算结果。在本实施例中,针对每一个操作类型计算结果采用独立的hash表进行存储。

在本实施例中,当应用系统的数据权限需求发生变化时,运维或实施人员首先调整权限域结构树,然后点击“计算权限域”按钮执行计算,计算完成后新的数据权限控制规则即可生效,无需重新启动应用系统。

在本实施例中,当系统用户登录成功并对相关数据执行特定操作时,通过aop拦截器拦截到用户操作请求,在拦截器处理逻辑中获得当前用户所拥有的角色信息,获得待执行的操作类型信息,获得目标数据信息。

根据获取到的上述内容,结合在图5所示数据存储结构中已经保存的数据权限计算结果数据,计算判断出当前用户是否具备针对目标数据的操作权限(针对当前操作类型)。如果具有操作权限,拦截器直接返回,继续执行业务处理逻辑(对于“查看”操作,业务处理逻辑合并当前用户待查看的数据和当前用户具有查看权限的数据,即:对两个数据集执行交集操作);如果不具备操作权限,则返回结果信息和状态码至前端界面并通知给当前系统用户。

综上所示,应用权限域结构树进行数据权限管理的方法,包括如下步骤:

(1),由应用系统运维人员或实施人员根据实际业务应用特点和实际使用场景,构建并配置设定权限域结构树,即:通过构建权限域结构树来定义应用系统的数据权限访问控制规则;

(2),权限域结构树构建完成后,应用系统运维人员启动权限计算,即:根据权限域结构树表达的数据权限控制规则进行数据权限计算。

权限域树中各个权限域节点具有不同的计算优先级,总体优先级顺序是父子节点,父优先;兄弟节点,兄优先。对于同一个角色,如果在不同的权限域中所定义的数据权限存在冲突,则以高优先级权限域下计算结果为准。

基于上述计算优先级原则可对权限域结构树所定义的数据权限访问控制规则进行精确计算,从而在权限域节点设置数据查询条件时,无需限定具体的数据查询条件表现形式,可包括:直接指定sql语句、引用查询脚本语言、指定数据查询服务类、指定数据查询外部服务接口等多种形式,可适配多种数据库类型、多种缓存类型、多种存储类型。

(3),数据权限计算完成后,将权限计算结果进行保存,通常可保存到系统内存、缓存中间件或搜索引擎中间件等可提供高性能读取途径的存储介质中,推荐将计算结果存储数据结构为key-valuehash表结构,其中,key为应用系统角色id,value为当前角色可操作数据对象id集合,更具体地,针对每一种操作类型均使用一个独立hash表进行存储;

(4)、当应用系统登录用户操作相关数据对象时,通过面向切面编程(aop)技术,可以在不侵入干扰业务处理逻辑的前提下拦截到用户对数据的操作请求(实现权限控制逻辑与业务处理逻辑分离),此时在aop拦截器中根据当前用户所属角色信息,结合步骤(3)计算完成的权限计算结果判断当前用户是否具备对目标数据的操作权限,并将实际计算结果返回。

上面对本发明的实施方式做了详细说明。但是本发明并不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1