CN113987541A - 数据访问控制方法、装置及电子设备 - Google Patents
数据访问控制方法、装置及电子设备 Download PDFInfo
- Publication number
- CN113987541A CN113987541A CN202111276857.2A CN202111276857A CN113987541A CN 113987541 A CN113987541 A CN 113987541A CN 202111276857 A CN202111276857 A CN 202111276857A CN 113987541 A CN113987541 A CN 113987541A
- Authority
- CN
- China
- Prior art keywords
- data
- service
- information
- authority
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种数据访问控制方法、装置及电子设备。其中,方法包括预先根据业务***信息、微服务信息和数据库连接信息创建相应的业务数据源信息,同时通过获取各业务数据源信息的目标业务表的目标字段的设置值生成相应业务数据源的数据权限规则。当接收数据权限授权请求,获取各业务数据源的数据权限规则和角色树信息,并基于角色树信息生成角色树组件,同时在角色树组件中标识用户选定的目标数据权限规则的已授权角色;当检测到用户对角色树组件执行角色编辑操作,发送携带目标数据权限规则信息和目标角色信息的权限操作指令。本申请可以简单、有效且低成本实现数据级权限管理,更好地进行数据访问的控制。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据访问控制方法、装置及电子设备。
背景技术
通过对数据进行权限管理来控制数据访问,权限通俗的来讲,就是在某个组织中,某个用户或者某些用户,可以对某件事进行决策、执行的范围或者程度,如果这个用户具有这样的特征,可认为该用户具有这样的权限。由此及彼,权限管理,就是对权限进行管控,限制和分配不同的用户拥有不同的权限。对于企业而言,对公司员工进行权限分配,也是为了使公司的管理更加有序而高效:能够保证员工各司其职,每个员工所负责的内容不同,互不干扰,从而提高工作效率;每个员工负责的工作范围具体而明确,责任到人,权责分明,出了问题有据可查;不同员工负责的工作重要度有高有低,如机密或者重要决策能够只被少数员工知晓,能够保证隐私从而规避风险。
从控制力度来看,可以将权限管理分为两大类:功能级权限管理和数据级权限管理。功能权限管理技术,一般使用RBAC(Role-Based Access Control,基于角色的权限访问控制)模型,该模型将who、what、how进行了关联,解释了谁(who)对什么(what)做了怎么样操作(how)的问题。但是,对于数据级权限管理领域来说,大多数技术采使用硬编码方法,也就是将这种逻辑以if/else等形式与业务代码耦合在一起。但是,硬编码形式的耦合性强,难以测试;***组件复用率低;***后期改动代价非常大,牵一发而动全身,不利于实际应用。相关技术还采用使用规则引擎的方法,该方法将这种逻辑以规则形式提出来,并使用规则引擎解析规则。尽管使用规则引擎可以解决很多问题,学习难度尚可。但规则引擎并不是专业用于权限管理的,所以对于复杂一些的权限管理,就显得力不从心。相关技术还使用第三方专业软件,如开源中间件Ralasafe、开源框架Spring Security等。这些第三方专业软件对使用者要求较高,例如对于Ralasafe,使用者需要懂业务、懂数据、懂数据库SQL(Structured Query Language,结构化查询语言),还要和业务***对接用户、角色、部门等;对于开源框架Spring Security,需要业务***自己开发控制逻辑。此外,购买专业软件成本高,且需要业务***软件与专业软件进行代码对接账号、角色、部门等。数据访问若由专业软件完成,如果有多个业务***高并发访问数据则专业软件还必须支持高并发集群部署才行。
鉴于此,如何简单、有效且低成本实现数据级权限管理,更好地控制数据访问,是所属领域技术人员需要解决的技术问题。
发明内容
本申请提供了一种数据访问控制方法、装置及电子设备,可以简单、有效且低成本实现数据级权限管理,更好地进行数据访问的控制。
为解决上述技术问题,本发明实施例提供以下技术方案:
本发明实施例一方面提供了一种数据访问控制方法,包括:
预先根据业务***信息、微服务信息和数据库连接信息创建相应的业务数据源信息,同时通过获取各业务数据源信息的目标业务表的目标字段的设置值生成相应业务数据源的数据权限规则;
当接收数据权限授权请求,获取各业务数据源的数据权限规则和角色树信息,并基于所述角色树信息生成角色树组件,同时在所述角色树组件中标识用户选定的目标数据权限规则的已授权角色;
当检测到用户对所述角色树组件执行角色编辑操作,发送携带目标数据权限规则信息和目标角色信息的权限操作指令。
可选的,所述通过获取各业务数据源信息的目标业务表的目标字段的设置值生成相应业务数据源的数据权限规则,包括:
当检测到数据权限添加请求,展示数据权限操作界面,同时发送获取所有业务数据源的请求;
响应目标业务数据源选择请求,发送获取所述目标业务数据源的所有业务表名的请求;
响应目标业务表选择请求,发送获取所述目标业务表的所有字段名的请求;
响应字段设置请求,根据各字段对应的设置值生成所述目标业务表的数据权限规则;所述数据权限规则包括目标业务数据源id、目标业务表名、数据权限名称、数据权限编码、是否开启数据所属人限制、所属人字段、数据所属部门限制、所属部门字段、是否允许查询所有字段和返回字段。
可选的,所述根据业务***信息、微服务信息和数据库连接信息创建相应的业务数据源信息,包括:
当检测到目标业务数据源添加请求,展示数据源添加操作界面,同时发送获取所有业务***的请求;
响应目标业务***选择请求,发送获取所述目标业务***的所有微服务信息获取的请求;
获取用户选定的目标微服务;
通过解析数据库连接信息输入指令得到所述目标微服务对应的数据库连接信息;
根据所述目标业务***、所述目标微服务信息和所述数据库连接信息创建目标业务数据源信息。
可选的,所述当检测到用户对所述角色树组件执行角色编辑操作,发送携带目标数据权限规则信息和目标角色信息的权限操作指令的过程,包括:
当检测到用户在所述角色树组件中选择目标节点和选择授权标识,则根据所述目标数据权限规则信息和所述目标节点对应的角色信息生成请求保存授权指令并发送;
当检测到用户在所述角色树组件中选择目标节点和选择取消授权标识,则根据所述目标数据权限规则信息和所述目标节点对应的角色信息生成请求取消授权指令并发送。
本发明实施例另一方面提供了一种数据访问控制方法,包括:
预先存储业务数据源信息和相应的数据权限规则;所述业务数据源信息为根据业务***信息、微服务信息和数据库连接信息进行创建;所述数据权限规则通过获取各业务数据源信息的目标业务表的目标字段的设置值所生成;
当接收到业务权限获取请求,反馈各业务数据源的数据权限规则;
当接收到授权角色获取请求,反馈用户选定的目标数据权限规则的已授权角色;
当检测到权限操作指令,基于所述权限操作指令所携带的目标数据权限规则信息和目标角色信息更新所述目标数据权限规则中对应数据权限和角色之间的关系;
其中,所述权限操作指令为客户端在检测到用户对角色树组件执行角色编辑操作时下发;所述角色树组件为所述客户端基于角色树信息所生成角色树组件,且所述角色树组件中标识所述目标数据权限规则的已授权角色。
可选的,所述基于所述权限操作指令所携带的目标数据权限规则信息和目标角色信息更新所述目标数据权限规则中对应数据权限和角色之间的关系之后,还包括:
预先搭建业务***微服务,并在所述业务***微服务中引入权限认证工具包和配置基于注释开启鉴权的数据权限***;所述业务***微服务用于在接收到用户数据访问请求,调用所述数据权限***判定所述用户数据访问请求符合鉴权条件,发送携带用户标识信息、待查询业务表信息和相应的微服务信息的数据权限查询请求;
当接收到所述数据权限查询请求,根据所述微服务信息获取相应的匹配业务数据源信息,并根据所述用户标识信息获取相应用户的所有角色信息;
根据所述匹配业务数据源信息、所述待查询业务表信息和所述所有角色信息确定所述用户的匹配权限数据;
将所述匹配权限数据发送给所述业务***微服务,以使所述业务***微服务基于所述匹配权限数据执行数据查询操作。
可选的,所述根据所述匹配业务数据源信息、所述待查询业务表信息和所述所有角色信息确定所述用户的匹配权限数据,包括:
根据所述匹配业务数据源信息、所述待查询业务表信息和所述所有角色信息获取所述用户对待查询业务表的所有数据权限规则,并结合所述用户的所属关系和各字段设置值合并生成目标数据权限规则;
若所述目标数据权限规则中存在需要按照部门查询数据的权限规则,则获取所述用户的所有部门信息,并将所述目标数据权限规则和所述所有部门信息作为所述匹配权限数据;若所述目标数据权限规则中不存在需要按照部门查询数据的权限规则,则将所述目标数据权限规则作为所述匹配权限数据。
可选的,所述调用所述数据权限***判定所述用户数据访问请求符合鉴权条件的过程,包括:
获取数据查询语句和查询参数,通过解析所述数据查询语句得到数据查询条件;
若判定按照租户查询数据,则在所述数据查询条件中添加租户条件;
若判定按照数据权限查询数据,则获取待查询业务表名和对应的微服务名。
可选的,所述业务***微服务基于所述匹配权限数据执行数据查询操作的过程,包括:
所述数据权限***若基于所述匹配权限数据判定需要重构数据查询条件,则按照预设重构规则重构所述数据查询条件;并根据所述匹配权限数据中是否存在查询所有字段的允许信息确定所述数据查询条件的字段是否需要进行重构;同时当判定当前数据查询条件被重构,则利用重构后的数据查询条件更新替换所述当前数据查询条件;
所述业务***微服务基于所述当前数据查询条件执行数据查询操作,并将数据查询结果反馈至客户端。
本发明实施例另一方面提供了一种数据访问控制装置,包括客户端、数据权限服务模块、基础信息管理模块、业务***微服务模块和数据库;
所述客户端用于执行存储器存储的计算机程序时实现如前任一项所述的数据访问控制方法的步骤;
所述数据权限服务模块用于执行存储器存储的计算机程序时实现如前任一项所述的数据访问控制方法的步骤;
所述基础信息管理模块用于管理所述数据访问控制装置的基础信息并提供基础信息查询服务。基础信息包括用户信息、角色信息、部门信息、用户与角色关系、用户与部门关系、业务***信息、微服务信息、业务***与微服务关系。
本发明实施例还提供了一种电子设备,包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如前任一项所述数据访问控制方法的步骤。
本发明实施例最后还提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如前任一项所述数据访问控制方法的步骤。
本申请提供的技术方案的优点在于,使用微服务无需对接,自带水平扩展并支持高并发集群部署;可在线统一并灵活管理所有业务***的数据权限规则,用户还可基于需求随时操作数据权限,无需掌握特定的专业技能,操作简单,只需要定义数据权限规则即可,从而可简单、有效且低成本实现数据级权限管理,进而可有效控制用户的数据访问行为,有利于提升数据安全性。
此外,本发明实施例还针对数据访问控制方法提供了相应的实现装置和电子设备,进一步使得所述方法更具有实用性,所述装置和电子设备具有相应的优点。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本公开。
附图说明
为了更清楚的说明本发明实施例或相关技术的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据访问控制方法的流程示意图;
图2为本发明实施例提供的一种业务数据源添加流程示意图;
图3为本发明实施例提供的一种数据权限添加流程示意图;
图4为本发明实施例提供的一种数据权限授权流程示意图;
图5为本发明实施例提供的一种数据鉴权流程示意图;
图6为本发明实施例提供的一种业务***微服务的数据请求处理流程示意图;
图7为本发明实施例提供的数据访问控制装置的一种具体实施方式结构图;
图8为本发明实施例提供的电子设备的一种具体实施方式结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语““包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
在介绍了本发明实施例的技术方案后,下面详细的说明本申请的各种非限制性实施方式。
首先参见图1,图1为本发明实施例提供的一种数据访问控制方法的流程示意图,本发明实施例可包括以下内容:
S101:预先根据业务***信息、微服务信息和数据库连接信息创建相应的业务数据源信息,同时通过获取各业务数据源信息的目标业务表的目标字段的设置值生成相应业务数据源的数据权限规则。
本步骤除了用户操作的客户端和业务***之外,还会预先创建基础信息管理服务、数据权限服务和数据库,数据库包括但并不限制于mysql、oracle、sqlserver等。基础信息管理服务用于管理基础信息并提供基础信息查询服务,基础信息可包含用户信息、部门信息、岗位信息、角色信息、租户信息等,基础信息管理服务例如可为明厚天公司开发的基础信息管理服务lark-admin。数据权限服务用于统一管理业务数据的权限定义、授权操作等,例如其可为明厚天公司开发的统一管理业务***数据权限定义、授权操作的服务lark-auth-data。进一步的,还可安装权限认证工具包,其用于通过用户标识信息如token获取用户信息、验证用户对接口的访问权限、验证用户对数据的访问权限、记录操作日志等,权限认证工具包可为明厚天公司开发的lark-auth-client。本申请使用微服务体系账号、角色、部门自成一体无需对接,自带水平扩展支持高并发集群部署。lark-auth-data在线服务统一管理所有数据权限规则,通过独立服务管理规则来提供规则灵活性,lark-auth-client作为数据权限客户端可接入业务***微服务,从而解决现有技术中内置规则引擎解析规则的技术弊端,降低独立服务解析并获取数据的压力。本申请支持管理多个业务***的数据权限,可脱离某个具体业务点,统一管理所有业务的数据权限。
其中,业务***信息为标识当前业务***的相关信息,例如业务***id,微服务信息为标识当前微服务的相关信息,例如微服务名称,一个业务***由至少一个微服务组成,一个微服务只能属于一个业务***。数据库连接信息包括但并不限制于数据源名称、数据库类型、数据库IP、数据库端口、数据库服务名、数据库账号、数据库密码和JDBC地址。JDBC(Java Database Connectivity,java数据库连接)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。一个微服务最多只有一个数据库服务,对于数据库集群模式,逻辑上仍然还属于一个微服务对应一个数据库服务,一个数据库服务可以用于多个微服务。本申请的业务表结构不固定,可在线配置某人对某表的数据访问权限,还可支持查询控制行级、字段级。业务数据源信息包括但并不限制于业务***id、微服务名、数据源名称、JDBC地址、数据库账号、数据库密码、数据库类型、数据库IP、数据库端口、数据库服务名。在创建业务数据源信息之后,可将业务数据源信息发送给数据权限服务,并写入至数据库进行存储。本申请的一个数据库服务中有多张数据表,一张数据表可以设定多个数据权限规则,一个数据权限规则只对应一张表。一个数据权限规则可以授权给多个角色,一个角色可以有多个数据权限规则。一个用户可以有多个角色,一个角色也可以授予多个用户。
S102:当接收数据权限授权请求,获取各业务数据源的数据权限规则和角色树信息,并基于角色树信息生成角色树组件,同时在角色树组件中标识用户选定的目标数据权限规则的已授权角色。
在本步骤中,数据权限授权请求是用户要对某些数据进行授权的请求,角色树信息是指将从数据库查询得到的包含所有角色的角色列表例如按照parent_id组装为树结构,将树结构返回到客户端,客户端的浏览器接收到返回的角色树信息后,可使用JS将数据渲染为树组件显示,也即角色树组件。目标数据权限规则是指用户从所有数据权限规则中选择的一个数据权限规则,已授权角色是指目标数据权限规则中已授权的角色。
S103:当检测到用户对角色树组件执行角色编辑操作,发送携带目标数据权限规则信息和目标角色信息的权限操作指令。
可以理解的是角色树组件中的各节点对应一个角色,也即所有角色都显示在角色树组件上,用户通过在角色树组件通过点击节点实现对角色的选择,本步骤的角色编辑操作包括新增角色授权或者是取消原有授权角色的权限,相应的权限操作指令即为对目标角色信息对应的目标角色执行授权保存请求指令或对目标角色信息对应的目标角色执行取消授权请求指令。具体的,该步骤可为:当检测到用户在角色树组件中选择目标节点和选择授权标识,则根据目标数据权限规则信息和目标节点对应的角色信息生成请求保存授权指令并发送;当检测到用户在角色树组件中选择目标节点和选择取消授权标识,则根据目标数据权限规则信息和目标节点对应的角色信息生成请求取消授权指令并发送。
在本发明实施例提供的技术方案中,使用微服务无需对接,自带水平扩展并支持高并发集群部署;可在线统一并灵活管理所有业务***的数据权限规则,用户还可基于需求随时操作数据权限,无需掌握特定的专业技能,操作简单,只需要定义数据权限规则即可,从而可简单、有效且低成本实现数据级权限管理,进而可有效控制用户的数据访问行为,有利于提升数据安全性。
上述实施例的S101-S103是站在客户端角度上执行的数据授权方法,也就是说,上述实施例的执行主语是客户端,考虑到站在不同角度保护不同的技术方案,本申请还提供了以提供数据权限服务的处理器或者是服务器为执行主语的实施例,该执行主语执行数据授权的实现过程可为:
预先存储业务数据源信息和相应的数据权限规则;业务数据源信息为根据业务***信息、微服务信息和数据库连接信息进行创建;数据权限规则通过获取各业务数据源信息的目标业务表的目标字段的设置值所生成;
当接收到业务权限获取请求,反馈各业务数据源的数据权限规则;
当接收到授权角色获取请求,反馈用户选定的目标数据权限规则的已授权角色;
当检测到权限操作指令,基于权限操作指令所携带的目标数据权限规则信息和目标角色信息更新目标数据权限规则中对应数据权限和角色之间的关系;
其中,权限操作指令为客户端在检测到用户对角色树组件执行角色编辑操作时下发;角色树组件为客户端基于角色树信息所生成角色树组件,且角色树组件中标识目标数据权限规则的已授权角色。
由于本实施例与上述实施例只是执行主语不同,本实施例与上述实施例相同的步骤可参阅上述实施例所记载的技术方案,此处,便不再赘述。
在上述实施例中,对于如何执行步骤S101并不做限定,本实施例中一种可选的实施方式,可包括如下步骤:
其中,步骤根据业务***信息、微服务信息和数据库连接信息创建相应的业务数据源信息的实现过程可包括如下步骤:
当检测到目标业务数据源添加请求,展示数据源添加操作界面,同时发送获取所有业务***的请求;响应目标业务***选择请求,发送获取目标业务***的所有微服务信息获取的请求;获取用户选定的目标微服务,通过解析数据库连接信息输入指令得到目标微服务对应的数据库连接信息;根据目标业务***、目标微服务信息和数据库连接信息创建目标业务数据源信息。
步骤获取各业务数据源信息的目标业务表的目标字段的设置值生成相应业务数据源的数据权限规则的实现过程可包括如下步骤:
当检测到数据权限添加请求,展示数据权限操作界面,同时发送获取所有业务数据源的请求;响应目标业务数据源选择请求,发送获取目标业务数据源的所有业务表名的请求;响应目标业务表选择请求,发送获取目标业务表的所有字段名的请求;响应字段设置请求,根据各字段对应的设置值生成目标业务表的数据权限规则。在对数据进行授权时,本实施例可按照行级划分数据,具体地可按租户、按数据所属人、按所属部门、所有部门(不含下级)、所有部门(含下级)。数据所属人是指创建该条数据的用户,或者业务上数据属于该用户。所属部门是指用户直属的部门,一个用户只有一个所属部门。业务部门是指用户参与业务的部门,一个用户可以有多个业务部门。所有部门(不含下级)是指所属部门和业务部门。所有部门(含下级)是指所属部门和业务部门以及它们所有下级部门。相应的,数据权限规则可包括目标业务数据源id、目标业务表名、数据权限名称、数据权限编码、是否开启数据所属人限制、所属人字段、数据所属部门限制、所属部门字段、是否允许查询所有字段和返回字段。
为了使所属领域技术人员更加清楚明白本申请的技术方案,本申请结合图2及图3给出一个示意性例子,为了解决下述问题:学生只能看自己的数据。辅导员只能看自己管理的班级的学生数据。和辅导员自己的教师数据。院长只能看自己管理学院的学生和教师数据的。本申请基于上述技术方案给出解决上述技术弊端的师生一张表,学生、辅导员、院长可以看任何所需的数据,可包括下述内容:
A1:数据管理员通过客户端打开添加客户端浏览器的业务数据源页面,鉴于lark-admin提供业务***、微服务的管理功能,浏览器JS(JavaScript)在页面加载完成后自动发送请求到lark-admin获取所有业务***。
A2:lark-admin接收到请求后从数据库如图2中的业务***存储关系型数据库中读取已添加的所有业务***信息,以json集合形式返回到浏览器。
A3:浏览器接收到返回的所有业务***数据后,使用JS将业务***数据渲染为select下拉选择。等待数据管理员选择业务***。
A4:数据管理员选择业务***后,JS监听到select选择值改变自动发送请求到lark-admin获取业务***下微服务信息,携带参数业务***id。
A5:lark-admin接收到请求后根据业务***id从数据库中获取业务***下所有微服务信息,以json集合形式返回到浏览器。
A6:浏览器接收到返回的业务***下所有微服务数据后,使用JS将业务***数据渲染为select下拉选择。等待数据管理员选择微服务。
A7:数据管理员选择微服务后,输入微服务对应数据库的JDBC信息,包含数据源名称、JDBC地址、数据库账号、数据库密码。
A8:浏览器JS监听到JDBC地址值改变后,自动解析JDBC地址获取数据库类型、数据库IP、数据库端口、数据库服务名。
A9:数据管理员点击业务数据源页面中的“保存”按钮,JS将表单中的业务***id、微服务名、数据源名称、JDBC地址、数据库账号、数据库密码、数据库类型、数据库IP、数据库端口、数据库服务名等信息发送到lark-auth-data。
A9:lark-auth-data接收到请求后将业务数据源信息写入数据库保存。
A10:数据管理员打开添加数据权限页面。浏览器JS在页面加载完成后自动发送请求到lark-auth-data获取所有业务数据源信息。
A11:lark-auth-data接收到请求后从数据库中读取已添加的所有业务数据源信息,以json集合形式返回到浏览器。
A12:浏览器接收到返回的所有业务数据源信息后,使用JS将所有业务数据源渲染为select下拉选择。等待数据管理员选择业务数据源。
A13:数据管理员选择业务数据源后,JS监听到select选择值改变自动发送请求到lark-auth-data获取业务数据源下所有表名,携带参数业务数据源id。
A14:lark-auth-data接收到请求后,通过业务数据源id获取业务数据源信息。然后使用业务数据源信息创建JDBC连接,连接到业务数据源,发送SQL语句获取表信息。收到业务数据源返回的业务表信息后,将业务表名组装为集合转为json发送回浏览器。
A15:浏览器接收到返回的所有业务表名后,使用JS将所有业务表名渲染为select下拉选择。等待数据管理员选择业务表。
A16:数据管理员选择业务表后,JS监听到select选择值改变自动发送请求到lark-auth-data获取业务表下所有字段名,携带参数业务数据源id和表名。
A17:lark-auth-data接收到请求后,通过业务数据源id获取业务数据源信息。然后使用业务数据源信息创建JDBC连接,连接到业务数据源,发送SQL语句获取表字段信息,业务表名作为查询条件。收到业务数据源返回的业务表字段信息后,将字段名组装为集合转为json发送回浏览器。
A18:浏览器接收到返回的所有字段名后,使用JS将所有字段名渲染为两个select下拉选择,分别为“所属人字段和所属部门字段”,以及一个下拉多选“返回字段”。
在本步骤中,数据管理员制定该业务表的具体数据权限规则为:
是否开启数据所属人限制,如果开启则在“所属人字段”中选择哪个字段表示数据的所属人。
选择数据所属部门限制,部门限制分为四类:不使用部门、所属部门、所有部门(不含下级)、所有部门(含下级)。如果选择的不是“不使用部门”,则在“所属部门字段”中选择哪个字段表示数据的所属部门。
是否允许查询所有字段,如果为否,则需要在下拉多选“返回字段”中选择哪些字段允许查询返回给数据用户。
A19:数据管理员制定该业务表的具体数据权限规则后点击“保存”,JS将表单中的业务数据源id、业务表名、数据权限名称、数据权限编码、是否开启数据所属人限制、所属人字段、数据所属部门限制、所属部门字段、是否允许查询所有字段、返回字段等信息发送到lark-auth-data。
A20:lark-auth-data接收到请求后将数据权限规则定义写入数据库保存。
基于上述实施例,本申请还结合图4给出S102及S103的一个示意性实施方式,可包括:
A21:数据管理员打开客户端浏览器的数据权限授权页面。浏览器JS在页面加载完成后自动发送请求到lark-auth-data分页获取数据权限规则。
A22:lark-auth-data接收到请求后分页从数据库中读取已添加的数据权限规则和总数,以json对象形式返回到浏览器。分页查询的实现方式可参阅任何一种现有技术,此处,便不再赘述。
A23:浏览器接收到返回的数据权限规则集合和总数后,使用JS将数据渲染为table列表。等待数据管理员选择列表中某一行。
A24:数据管理员选择某行数据权限规则后,标记为当前数据权限规则,然后JS发送请求到lark-admin获取所有角色树结构。
A25:lark-admin接收到请求后从数据库查询所有角色,获得角色列表,然后将列表按照parent_id组装为树结构,将树结构以json对象形式返回到浏览器。列表转树结构可参阅任何一种现有技术,此处,便不再赘述。
A26:浏览器接收到返回的角色树信息后,使用JS将数据渲染为树组件显示。然后JS发送请求到lark-auth-data获取当前数据权限规则已授权的角色id,携带参数当前数据权限规则id。
A27:lark-auth-data接收到请求后通过数据权限规则id从数据库查询对应授权的角色id。以json集合形式返回到浏览器。
A28:浏览器接收到返回的已授权角色id后,使用JS将角色树组件中的相应节点渲染为选中状态。
A29:数据管理员选中某个角色或某些角色,JS将向lark-auth-data发送请求保存授权,携带参数为当前数据权限规则id和新选中的角色id集合。
在本步骤中,树组件上提供选择单个节点。此时新增角色集合为选中节点,集合大小为1。
树组件上节点上提供按钮“授权当前节点和所有下级节点”,此时新增角色集合为选中节点和递归查找得到的所有下级节点集合,集合大小为大于等于1。
树组件上节点上提供按钮“授权当前节点和所有上级节点”,此时新增角色集合为选中节点和递归查找得到的所有上级节点集合,集合大小为大于等于1。
A30:lark-auth-data接收到请求后将数据权限规则id和角色id集合组装为一对一的形式写入数据库,全部写入成功后返回成功信息到浏览器。
A31:数据管理员取消选中某个角色或某些角色,JS将向lark-auth-data发送请求取消授权,携带参数为当前数据权限规则id和取消的角色id集合。
树组件上提供选择单个节点。此时取消角色集合为选中节点,集合大小为1。
树组件上节点上提供按钮“取消授权当前节点和所有下级节点”,此时取消角色集合为选中节点和递归查找得到的所有下级节点集合,集合大小为大于等于1。
树组件上节点上提供按钮“取消授权当前节点和所有上级节点”,此时取消角色集合为选中节点和递归查找得到的所有上级节点集合,集合大小为大于等于1。
A32:lark-auth-data接收到请求后将数据权限规则id和角色id集合组装为一对一的形式从数据库删除数据,删除条件为数据权限规则id和角色id,全部删除成功后返回成功信息到浏览器。
本实施例使用微服务体系账号、角色、部门自成一体无需对接,自带水平扩展支持高并发集群部署,基于微服务开发支持水平扩展、面向云服务。lark-auth-data在线服务统一管理所有数据权限规则,支持saas按租户划分数据,管理多个业务***的数据权限规则。lark-auth-client作为数据权限客户端接入业务***微服务,降低独立服务解析并获取数据的压力。数据管理员如学校老师或员工不需要懂SQL,只需要懂数据(比如字段含义)。数据管理员不需要负责制定数据查询SQL语句或者数据开放接口(SQL或数据查询规则由业务***开发人员负责),只需要定义数据权限规则。操作简单便捷,易于实现。
可以理解的是,在上述实施例实现数据授权之后,在进行数据访问之前,还需要进行数据鉴权,本申请还提供了数据鉴权的实施方式,可包括:
预先搭建业务***微服务,并在业务***微服务中引入权限认证工具包和配置基于注释开启鉴权的数据权限***;业务***微服务用于在接收到用户数据访问请求,调用数据权限***判定用户数据访问请求符合鉴权条件,发送携带用户标识信息、待查询业务表信息和相应的微服务信息的数据权限查询请求。
当接收到数据权限查询请求,根据微服务信息获取相应的匹配业务数据源信息,并根据用户标识信息获取相应用户的所有角色信息。
根据匹配业务数据源信息、待查询业务表信息和所有角色信息确定用户的匹配权限数据。
将匹配权限数据发送给业务***微服务,以使业务***微服务基于匹配权限数据执行数据查询操作。
在本实施例中,业务***微服务项目搭建过程为:基于SpringCloud、SpringBoot、MyBatis搭建业务***微服务,权限认证工具包例如可为lark-auth-client库。其中,Spring框架是Java平台上的一种开源应用框架,提供具有控制反转特性的容器。SpringBoot为开源的轻量级框架,其基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。SpringCloud为一系列框架的有序集合,其利用Spring Boot的开发便利性巧妙地简化了分布式***基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。SpringCloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式***基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。以maven管理项目依赖为例,引用数据权限处理代码库的过程可为:
本实施例的数据权限***用于完成请求参数的解析、将页面表单参数赋给值栈中相应属性、执行功能检验、程序异常调试等工作。可配置MyBatis数据权限***。MyBatis为apache的一个开源项目iBatis,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。MyBatis数据权限***代码定义在lark-auth-client库中。具体的,可使用Spring中org.springframework.context.annotation.Configuration注释定义配置。构造com.mht.lark.security.auth.client.data.MybatisDataAuthInterceptor类对象实例dataInterceptor,将dataInterceptor对象加入MyBatis***集合中。使用SpringBoot中org.springframework.boot.autoconfigure.AutoConfigureAfter注释保证MyBatis数据权限***晚于MyBatis分页***加入***集合。晚加入的***将先执行,先使用数据***重构SQL然后再用重构后的SQL进行分页查询。
作为一种可选的实施方式,上述步骤根据匹配业务数据源信息、待查询业务表信息和所有角色信息确定用户的匹配权限数据的一种可选的实施方式可为:
根据匹配业务数据源信息、待查询业务表信息和所有角色信息获取用户对待查询业务表的所有数据权限规则,并结合用户的所属关系和各字段设置值合并生成目标数据权限规则;
若目标数据权限规则中存在需要按照部门查询数据的权限规则,则获取用户的所有部门信息,并将目标数据权限规则和所有部门信息作为匹配权限数据;若目标数据权限规则中不存在需要按照部门查询数据的权限规则,则将目标数据权限规则作为匹配权限数据。
作为一种可选的实施方式,上述步骤调用数据权限***判定用户数据访问请求符合鉴权条件的过程可包括:
获取数据查询语句和查询参数,通过解析数据查询语句得到数据查询条件;
若判定按照租户查询数据,则在数据查询条件中添加租户条件;
若判定按照数据权限查询数据,则获取待查询业务表名和对应的微服务名。
在本实施例中,租户是指使用***或电脑运算资源的客户,但在多租户技术中,租户包含在***中可识别为指定用户的一切数据,包括帐户与统计信息(accounting data)、用户在***中建置的各式数据、以及用户本身的定制化应用程序环境等,都属于租户的范围。
作为一种可选的实施方式,上述步骤业务***微服务基于匹配权限数据执行数据查询操作的过程可包括:
数据权限***若基于匹配权限数据判定需要重构数据查询条件,则按照预设重构规则重构数据查询条件;并根据匹配权限数据中是否存在查询所有字段的允许信息确定数据查询条件的字段是否需要进行重构;同时当判定当前数据查询条件被重构,则利用重构后的数据查询条件更新替换当前数据查询条件;业务***微服务基于当前数据查询条件执行数据查询操作,并将数据查询结果反馈至客户端。
本实施例支持使用注释开启鉴权,SQL自动重构。这种业务***微服务中使用注释方式开启权限活动,代码接入简单,易于实现,更易于后期维护。
为了使所属领域技术人员更加清楚明白本申请的技术方案,本申请结合图5-图6给出数据鉴权的一个示意性例子,可包括下述内容:
B1:数据用户通过客户端发起请求访问业务***微服务的数据接口,携带token和查询参数。Token可包含用户id、租户id、用户账号、用户姓名、所属部门,登录获取token过程不在此详述。
B2:业务***微服务接到请求后调用MyBatis的mapper中的方法执行SQL语句查询,MyBatis先获取SQL语句并组装参数,然后进入数据权限***。
本实施例中的开源项目MyBatis如何从配置文件或注释中获取SQL语句的过程就不在方案中详述。MyBatis中分页***的执行过程也不在方案中详述。
B3:数据权限***中先获取SQL语句、参数,解析SQL语句获取WHERE查询条件,创建字符串变量whereSql用于后续步骤保存查询条件。
B4:数据权限***中判断是否按租户查询数据。
具体的,mapper方法所在类上是否有注释,com.mht.lark.security.auth.client.annotation.Tenant(定义在lark-auth-client库)。mapper方法上是否有注释com.mht.lark.security.auth.client.annotation.NoTenant(定义在lark-auth-client库)。如果类上存在Tenant注释,方法上没有NoTenant注释则表示数据按租户查询。
B5:数据权限***中如果需要按租户查询数据则SQL条件上追加租户条件。详细规则见表1所示的whereSql重构规则。
B6:数据权限***中判断是否按数据权限查询数据。
具体的,mapper方法上是否有注释com.mht.lark.security.auth.client.annotation.DataAuth(定义在lark-auth-client库),如果有表示按数据权限查询数据。注释DataAuth中属性tableName(业务表名)必须指定。指定方式可以通过字符串直接指定业务表名,也可以使用方法的参数名指定方法参数值,比如{tableName}表示使用方法中参数名tableName的参数值。
B7:数据权限***中如果需要按数据权限查询数据,先获取业务表名和当前微服务名。业务表名可来自注释DataAuth的tableName属性。当前微服务名由SpringBoot的配置文件提供。
B8:数据权限***中使用Feign调用lark-auth-data接口获取当前用户对业务表的数据权限。携带参数token、业务表名和当前微服务名。不同业务***中可能存在相同表名所以需要微服务名区分究竟是哪个业务数据源下的表。Feign为spring cloud中服务消费端的调用框架,通常与ribbon,hystrix等组合使用。
B9:lark-auth-data中接收到请求后,通过微服务名从数据库获取业务数据源信息,主要是获取数据源id。
B10:lark-auth-data中使用Feign调用lark-admin接口获取当前用户所有角色id集合,携带参数token。
B11:lark-admin中接收到请求后从token中获取用户id,然后使用用户id查询当前用户的所有角色id集合,以json集合形式返回给lark-auth-data。
B12:lark-auth-data中接收到当前用户角色id集合后,使用数据源id(来自步骤B9)、业务表名(来自步骤B8)、角色id集合(来自步骤B11)从数据库查询当前用户对于该业务表的所有数据权限规则集合。
B13:当一个用户对某个表拥有多条数据权限规则时需要合并数据权限为一个,故lark-auth-data中将数据权限规则集合进行合并,合并生成一个数据权限规则。
具体的,若集合为空,则直接抛出异常返回到业务***微服务,业务***微服务接收到异常则终止SQL执行打印异常信息到日志。若集合不为空:对于数据所属人,只要有一条不使用该限制,则不使用该限制。对于数据所属部门,只要有一条不使用部门限制,则不用部门限制。都使用部门限制,取最大部门范围。部门范围大小“不使用部门”<“所属部门”<“所有部门(不含下级)”<“所有部门(含下级)”对于字段,只要有一条允许查询所有字段,则使用所有字段。都不允许查询所有字段,则取字段并集。
B14:lark-auth-data中数据权限集合合并后得到最终数据权限,判断最终数据权限中是否需要按部门查询数据。如果最终所属部门为“所有部门(不含下级)”或“所有部门(含下级)”,lark-auth-data中使用Feign调用lark-admin接口获取当前用户的部门id集合,携带参数token。
B15:lark-admin中接收到请求后从token中获取用户id,然后使用用户id查询当前用户的“所有部门(不含下级)”或“所有部门(含下级)”id集合,以json集合形式返回给lark-auth-data。
B16:lark-auth-data中接收到部门id集合后,将最终数据权限规则和部门id集合以json对象形式返回到业务***微服务的数据权限***中。
B17:数据权限***中接收到数据权限规则和部门id集合后,判断是否需要根据数据权限重构SQL条件。
B18:开启数据所属人或者数据所属部门不为“不使用部门”,则需要重构SQL条件。
表1 whereSql重构规则
在本步骤中,若租户条件为"租户字段='租户id'",租户字段来自注释Tenant的属性tenantField的值默认为tenant_id,租户id来自token。若所属人条件为"所属人字段='用户id'",所属人字段来自数据权限规则,用户id来自token。若数据所属部门为“所属部门”,则所属部门条件为"所属部门字段='所属部门'",所属部门字段来自数据权限规则,所属部门来自token。若数据所属部门为“所有部门(不含下级)”或“所有部门(含下级)”,则所属部门条件为"所属部门字段in(部门id集合)",所属部门字段来自数据权限规则,部门id集合来自lark-auth-data返回。
B19:数据权限***中获取到重构后的SQL条件后,判断数据权限规则中是否允许查询所有字段。
如果允许查询所有字段则,SQL中返回字段无需重构。如果不允许查询所有字段则,则解析原SQL中返回字段,获得原SQL返回字段集合。循环遍历原SQL返回字段集合判断字段是否在数据权限允许的字段集合中,如果不存在则移除。然后重新设置SQL返回字段
B20:数据权限***中判断查询条件是否重构过,如果重构过则使用whereSql替换原查询条件。
B21:数据权限***执行结束,继续执行MyBatis从数据库中查询数据。业务***微服务将查询的数据返回给客户端的数据用户。
需要说明的是,本申请中各步骤之间没有严格的先后执行顺序,只要符合逻辑上的顺序,则这些步骤可以同时执行,也可按照某种预设顺序执行,图1-图6只是一种示意方式,并不代表只能是这样的执行顺序。
本发明实施例还针对数据访问控制方法提供了相应的装置,进一步使得方法更具有实用性。其中,装置可从功能模块的角度和硬件的角度分别说明。下面对本发明实施例提供的数据访问控制装置进行介绍,下文描述的数据访问控制装置与上文描述的数据访问控制方法可相互对应参照。
基于客户端的功能模块的角度,数据访问控制装置可包括:
预部署模块,用于预先根据业务***信息、微服务信息和数据库连接信息创建相应的业务数据源信息,同时通过获取各业务数据源信息的目标业务表的目标字段的设置值生成相应业务数据源的数据权限规则;
授权模块,用于当接收数据权限授权请求,获取各业务数据源的数据权限规则和角色树信息,并基于角色树信息生成角色树组件,同时在角色树组件中标识用户选定的目标数据权限规则的已授权角色;
权限操作模块,用于当检测到用户对角色树组件执行角色编辑操作,发送携带目标数据权限规则信息和目标角色信息的权限操作指令。
可选的,上述实施例的预部署模块可进一步用于:当检测到数据权限添加请求,展示数据权限操作界面,同时发送获取所有业务数据源的请求;响应目标业务数据源选择请求,发送获取目标业务数据源的所有业务表名的请求;响应目标业务表选择请求,发送获取目标业务表的所有字段名的请求;响应字段设置请求,根据各字段对应的设置值生成目标业务表的数据权限规则;数据权限规则包括目标业务数据源id、目标业务表名、数据权限名称、数据权限编码、是否开启数据所属人限制、所属人字段、数据所属部门限制、所属部门字段、是否允许查询所有字段和返回字段。
在本实施例的另一些实施方式中,上述实施例的预部署模块还可进一步用于:当检测到目标业务数据源添加请求,展示数据源添加操作界面,同时发送获取所有业务***的请求;响应目标业务***选择请求,发送获取目标业务***的所有微服务信息获取的请求;获取用户选定的目标微服务,通过解析数据库连接信息输入指令得到目标微服务对应的数据库连接信息;根据目标业务***、目标微服务信息和数据库连接信息创建目标业务数据源信息。
可选的,在本实施例的一些实施方式中,上述权限操作模块可进一步用于:当检测到用户在角色树组件中选择目标节点和选择授权标识,则根据目标数据权限规则信息和目标节点对应的角色信息生成请求保存授权指令并发送;当检测到用户在角色树组件中选择目标节点和选择取消授权标识,则根据目标数据权限规则信息和目标节点对应的角色信息生成请求取消授权指令并发送。
基于提供数据权限服务的处理器的功能模块的角度,数据访问控制装置可包括:
数据存储模块,用于预先存储业务数据源信息和相应的数据权限规则;业务数据源信息为根据业务***信息、微服务信息和数据库连接信息进行创建;数据权限规则通过获取各业务数据源信息的目标业务表的目标字段的设置值所生成;
数据反馈模块,用于当接收到业务权限获取请求,反馈各业务数据源的数据权限规则;当接收到授权角色获取请求,反馈用户选定的目标数据权限规则的已授权角色;
权限操作执行模块,用于当检测到权限操作指令,基于权限操作指令所携带的目标数据权限规则信息和目标角色信息更新目标数据权限规则中对应数据权限和角色之间的关系;其中,权限操作指令为客户端在检测到用户对角色树组件执行角色编辑操作时下发;角色树组件为客户端基于角色树信息所生成角色树组件,且角色树组件中标识目标数据权限规则的已授权角色。
作为本实施例的一种可选的实施方式,上述装置例如还可包括鉴权模块,用于预先搭建业务***微服务,并在业务***微服务中配置权限认证工具包和数据权限***;业务***微服务用于在接收到用户数据访问请求,调用数据权限***判定用户数据访问请求符合鉴权条件,发送携带用户标识信息、待查询业务表信息和相应的微服务信息的数据权限查询请求;当接收到数据权限查询请求,根据微服务信息获取相应的匹配业务数据源信息,并根据用户标识信息获取相应用户的所有角色信息;根据匹配业务数据源信息、待查询业务表信息和所有角色信息确定用户的匹配权限数据;将匹配权限数据发送给业务***微服务,以使业务***微服务基于匹配权限数据执行数据查询操作。
作为上述实施例的一种可选的实施方式,上述鉴权模块可进一步用于:根据匹配业务数据源信息、待查询业务表信息和所有角色信息获取用户对待查询业务表的所有数据权限规则,并结合用户的所属关系和各字段设置值合并生成目标数据权限规则;若目标数据权限规则中存在需要按照部门查询数据的权限规则,则获取用户的所有部门信息,并将目标数据权限规则和所有部门信息作为匹配权限数据;若目标数据权限规则中不存在需要按照部门查询数据的权限规则,则将目标数据权限规则作为匹配权限数据。
作为上述实施例的另一种可选的实施方式,上述鉴权模块还可进一步用于:获取数据查询语句和查询参数,通过解析数据查询语句得到数据查询条件;若判定按照租户查询数据,则在数据查询条件中添加租户条件;若判定按照数据权限查询数据,则获取待查询业务表名和对应的微服务名。
作为上述实施例的另一种可选的实施方式,上述鉴权模块还可进一步用于:数据权限***若基于匹配权限数据判定需要重构数据查询条件,则按照预设重构规则重构数据查询条件;并根据匹配权限数据中是否存在查询所有字段的允许信息确定数据查询条件的字段是否需要进行重构;同时当判定当前数据查询条件被重构,则利用重构后的数据查询条件更新替换当前数据查询条件;业务***微服务基于当前数据查询条件执行数据查询操作,并将数据查询结果反馈至客户端。
基于参与整个技术方案的各端角度来说,请参阅图7,数据访问控制装置可包括客户端71、数据权限服务模块72、基础信息管理模块73、业务***微服务模块74和数据库75。数据权限服务模块72、基础信息管理模块73、业务***微服务模块74和数据库75可安装在同一个服务器上,也可安装在不同的服务器上,所属领域技术技术人员可根据实际应用场景进行灵活选择。
客户端71用于执行存储器存储的计算机程序时实现如前任一个方法实施例所述的数据访问控制方法的步骤。数据权限服务模块72用于执行存储器存储的计算机程序时实现如前任一个方法实施例的数据访问控制方法的步骤。基础信息管理模块73用于管理数据访问控制装置的基础信息并提供基础信息查询服务。基础信息包括用户信息、角色信息、部门信息、用户与角色关系、用户与部门关系、业务***信息、微服务信息、业务***与微服务关系。数据库75用于存储数据。业务***微服务模块74用于在接收到用户数据访问请求,调用数据权限***判定用户数据访问请求符合鉴权条件,发送携带用户标识信息、待查询业务表信息和相应的微服务信息的数据权限查询请求;数据权限***若基于匹配权限数据判定需要重构数据查询条件,则按照预设重构规则重构数据查询条件;并根据匹配权限数据中是否存在查询所有字段的允许信息确定数据查询条件的字段是否需要进行重构;同时当判定当前数据查询条件被重构,则利用重构后的数据查询条件更新替换当前数据查询条件;业务***微服务基于当前数据查询条件执行数据查询操作,并将数据查询结果反馈至客户端。
本发明实施例数据访问控制装置的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可知,本发明实施例可以简单、有效且低成本实现数据级权限管理,更好地进行数据访问的控制。
上文中提到的数据访问控制装置是从功能模块的角度描述,进一步的,本申请还提供一种电子设备,是从硬件角度描述。图8为本申请实施例提供的电子设备在一种实施方式下的结构示意图。如图8所示,该电子设备包括存储器80,用于存储计算机程序;处理器81,用于执行计算机程序时实现如上述任一实施例提到的数据访问控制方法的步骤。
其中,处理器81可以包括一个或多个处理核心,比如4核心处理器、8核心处理器,处理器81还可为控制器、微控制器、微处理器或其他数据处理芯片等。处理器81可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable GateArray,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器81也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器81可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器81还可以包括AI(ArtificialIntelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器80可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器80还可包括高速随机存取存储器以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。存储器80在一些实施例中可以是电子设备的内部存储单元,例如服务器的硬盘。存储器80在另一些实施例中也可以是电子设备的外部存储设备,例如服务器上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器80还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器80不仅可以用于存储安装于电子设备的应用软件及各类数据,例如:执行漏洞处理方法的程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。本实施例中,存储器80至少用于存储以下计算机程序801,其中,该计算机程序被处理器81加载并执行之后,能够实现前述任一实施例公开的数据访问控制方法的相关步骤。另外,存储器80所存储的资源还可以包括操作***802和数据803等,存储方式可以是短暂存储或者永久存储。其中,操作***802可以包括Windows、Unix、Linux等。数据803可以包括但不限于数据访问控制结果对应的数据等。
在一些实施例中,上述电子设备还可包括有显示屏82、输入输出接口83、通信接口84或者称为网络接口、电源85以及通信总线86。其中,显示屏82、输入输出接口83比如键盘(Keyboard)属于用户接口,可选的用户接口还可以包括标准的有线接口、无线接口等。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。通信接口84可选的可以包括有线接口和/或无线接口,如WI-FI接口、蓝牙接口等,通常用于在电子设备与其他电子设备之间建立通信连接。通信总线86可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extendedindustry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本领域技术人员可以理解,图8中示出的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的组件,例如还可包括实现各类功能的传感器87。
本发明实施例所述电子设备的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
由上可知,本发明实施例可以简单、有效且低成本实现数据级权限管理,更好地进行数据访问的控制。
可以理解的是,如果上述实施例中的数据访问控制方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、多媒体卡、卡型存储器(例如SD或DX存储器等)、磁性存储器、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时如上任意一实施例所述数据访问控制方法的步骤。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的硬件包括装置及电子设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上对本申请所提供的一种数据访问控制方法、装置和电子设备进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (11)
1.一种数据访问控制方法,其特征在于,包括:
预先根据业务***信息、微服务信息和数据库连接信息创建相应的业务数据源信息,同时通过获取各业务数据源信息的目标业务表的目标字段的设置值生成相应业务数据源的数据权限规则;
当接收数据权限授权请求,获取各业务数据源的数据权限规则和角色树信息,并基于所述角色树信息生成角色树组件,同时在所述角色树组件中标识用户选定的目标数据权限规则的已授权角色;
当检测到用户对所述角色树组件执行角色编辑操作,发送携带目标数据权限规则信息和目标角色信息的权限操作指令。
2.根据权利要求1所述的数据访问控制方法,其特征在于,所述通过获取各业务数据源信息的目标业务表的目标字段的设置值生成相应业务数据源的数据权限规则,包括:
当检测到数据权限添加请求,展示数据权限操作界面,同时发送获取所有业务数据源的请求;
响应目标业务数据源选择请求,发送获取所述目标业务数据源的所有业务表名的请求;
响应目标业务表选择请求,发送获取所述目标业务表的所有字段名的请求;
响应字段设置请求,根据各字段对应的设置值生成所述目标业务表的数据权限规则;所述数据权限规则包括目标业务数据源id、目标业务表名、数据权限名称、数据权限编码、是否开启数据所属人限制、所属人字段、数据所属部门限制、所属部门字段、是否允许查询所有字段和返回字段。
3.根据权利要求2所述的数据访问控制方法,其特征在于,所述根据业务***信息、微服务信息和数据库连接信息创建相应的业务数据源信息,包括:
当检测到目标业务数据源添加请求,展示数据源添加操作界面,同时发送获取所有业务***的请求;
响应目标业务***选择请求,发送获取所述目标业务***的所有微服务信息获取的请求;
获取用户选定的目标微服务;
通过解析数据库连接信息输入指令得到所述目标微服务对应的数据库连接信息;
根据所述目标业务***、所述目标微服务信息和所述数据库连接信息创建目标业务数据源信息。
4.根据权利要求1至3任意一项所述的数据访问控制方法,其特征在于,所述当检测到用户对所述角色树组件执行角色编辑操作,发送携带目标数据权限规则信息和目标角色信息的权限操作指令的过程,包括:
当检测到用户在所述角色树组件中选择目标节点和选择授权标识,则根据所述目标数据权限规则信息和所述目标节点对应的角色信息生成请求保存授权指令并发送;
当检测到用户在所述角色树组件中选择目标节点和选择取消授权标识,则根据所述目标数据权限规则信息和所述目标节点对应的角色信息生成请求取消授权指令并发送。
5.一种数据访问控制方法,其特征在于,包括:
预先存储业务数据源信息和相应的数据权限规则;所述业务数据源信息为根据业务***信息、微服务信息和数据库连接信息进行创建;所述数据权限规则通过获取各业务数据源信息的目标业务表的目标字段的设置值所生成;
当接收到业务权限获取请求,反馈各业务数据源的数据权限规则;
当接收到授权角色获取请求,反馈用户选定的目标数据权限规则的已授权角色;
当检测到权限操作指令,基于所述权限操作指令所携带的目标数据权限规则信息和目标角色信息更新所述目标数据权限规则中对应数据权限和角色之间的关系;
其中,所述权限操作指令为客户端在检测到用户对角色树组件执行角色编辑操作时下发;所述角色树组件为所述客户端基于角色树信息所生成角色树组件,且所述角色树组件中标识所述目标数据权限规则的已授权角色。
6.根据权利要求5所述的数据访问控制方法,其特征在于,所述基于所述权限操作指令所携带的目标数据权限规则信息和目标角色信息更新所述目标数据权限规则中对应数据权限和角色之间的关系之后,还包括:
预先搭建业务***微服务,并在所述业务***微服务中引入权限认证工具包和配置基于注释开启鉴权的数据权限***;所述业务***微服务用于在接收到用户数据访问请求,调用所述数据权限***判定所述用户数据访问请求符合鉴权条件,发送携带用户标识信息、待查询业务表信息和相应的微服务信息的数据权限查询请求;
当接收到所述数据权限查询请求,根据所述微服务信息获取相应的匹配业务数据源信息,并根据所述用户标识信息获取相应用户的所有角色信息;
根据所述匹配业务数据源信息、所述待查询业务表信息和所述所有角色信息确定所述用户的匹配权限数据;
将所述匹配权限数据发送给所述业务***微服务,以使所述业务***微服务基于所述匹配权限数据执行数据查询操作。
7.根据权利要求6所述的数据访问控制方法,其特征在于,所述根据所述匹配业务数据源信息、所述待查询业务表信息和所述所有角色信息确定所述用户的匹配权限数据,包括:
根据所述匹配业务数据源信息、所述待查询业务表信息和所述所有角色信息获取所述用户对待查询业务表的所有数据权限规则,并结合所述用户的所属关系和各字段设置值合并生成目标数据权限规则;
若所述目标数据权限规则中存在需要按照部门查询数据的权限规则,则获取所述用户的所有部门信息,并将所述目标数据权限规则和所述所有部门信息作为所述匹配权限数据;若所述目标数据权限规则中不存在需要按照部门查询数据的权限规则,则将所述目标数据权限规则作为所述匹配权限数据。
8.根据权利要求6所述的数据访问控制方法,其特征在于,所述调用所述数据权限***判定所述用户数据访问请求符合鉴权条件的过程,包括:
获取数据查询语句和查询参数,通过解析所述数据查询语句得到数据查询条件;
若判定按照租户查询数据,则在所述数据查询条件中添加租户条件;
若判定按照数据权限查询数据,则获取待查询业务表名和对应的微服务名。
9.根据权利要求6所述的数据访问控制方法,其特征在于,所述业务***微服务基于所述匹配权限数据执行数据查询操作的过程,包括:
所述数据权限***若基于所述匹配权限数据判定需要重构数据查询条件,则按照预设重构规则重构所述数据查询条件;并根据所述匹配权限数据中是否存在查询所有字段的允许信息确定所述数据查询条件的字段是否需要进行重构;同时当判定当前数据查询条件被重构,则利用重构后的数据查询条件更新替换所述当前数据查询条件;
所述业务***微服务基于所述当前数据查询条件执行数据查询操作,并将数据查询结果反馈至客户端。
10.一种数据访问控制装置,其特征在于,包括客户端、数据权限服务模块、基础信息管理模块、业务***微服务模块和数据库;
所述客户端用于执行存储器存储的计算机程序时实现如权利要求1至4任一项所述的数据访问控制方法的步骤;
所述数据权限服务模块用于执行存储器存储的计算机程序时实现如权利要求5至9任一项所述的数据访问控制方法的步骤;
所述基础信息管理模块用于管理所述数据访问控制装置的基础信息并提供基础信息查询服务。
11.一种电子设备,其特征在于,包括处理器和存储器,所述处理器用于执行所述存储器存储的计算机程序时实现如权利要求1至4任一项所述的数据访问控制方法和/或如权利要求5至9任一项所述的数据访问控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111276857.2A CN113987541A (zh) | 2021-10-29 | 2021-10-29 | 数据访问控制方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111276857.2A CN113987541A (zh) | 2021-10-29 | 2021-10-29 | 数据访问控制方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113987541A true CN113987541A (zh) | 2022-01-28 |
Family
ID=79744849
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111276857.2A Pending CN113987541A (zh) | 2021-10-29 | 2021-10-29 | 数据访问控制方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113987541A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113765673A (zh) * | 2021-08-31 | 2021-12-07 | 中国建设银行股份有限公司 | 一种访问控制方法和装置 |
CN114417287A (zh) * | 2022-03-25 | 2022-04-29 | 阿里云计算有限公司 | 数据处理方法、***、设备及存储介质 |
CN115017484A (zh) * | 2022-08-04 | 2022-09-06 | 北京航天驭星科技有限公司 | 访问控制方法以及装置 |
CN115577381A (zh) * | 2022-12-09 | 2023-01-06 | 云粒智慧科技有限公司 | 行级数据访问方法、装置和电子设备 |
CN116126944A (zh) * | 2023-02-14 | 2023-05-16 | 中电金信软件有限公司 | 数据访问***、方法和电子设备 |
CN116861439A (zh) * | 2023-06-21 | 2023-10-10 | 三峡高科信息技术有限责任公司 | 一种组件化方式实现业务***防sql注入的方法 |
-
2021
- 2021-10-29 CN CN202111276857.2A patent/CN113987541A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113765673A (zh) * | 2021-08-31 | 2021-12-07 | 中国建设银行股份有限公司 | 一种访问控制方法和装置 |
CN114417287A (zh) * | 2022-03-25 | 2022-04-29 | 阿里云计算有限公司 | 数据处理方法、***、设备及存储介质 |
CN115017484A (zh) * | 2022-08-04 | 2022-09-06 | 北京航天驭星科技有限公司 | 访问控制方法以及装置 |
CN115577381A (zh) * | 2022-12-09 | 2023-01-06 | 云粒智慧科技有限公司 | 行级数据访问方法、装置和电子设备 |
CN116126944A (zh) * | 2023-02-14 | 2023-05-16 | 中电金信软件有限公司 | 数据访问***、方法和电子设备 |
CN116861439A (zh) * | 2023-06-21 | 2023-10-10 | 三峡高科信息技术有限责任公司 | 一种组件化方式实现业务***防sql注入的方法 |
CN116861439B (zh) * | 2023-06-21 | 2024-04-12 | 三峡高科信息技术有限责任公司 | 一种组件化方式实现业务***防sql注入的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10620944B2 (en) | Cloud-based decision management platform | |
US11842221B2 (en) | Techniques for utilizing directed acyclic graphs for deployment instructions | |
CN113987541A (zh) | 数据访问控制方法、装置及电子设备 | |
CN107370786B (zh) | 一种基于微服务架构的通用信息管理*** | |
US20080162207A1 (en) | Relation-based hierarchy evaluation of recursive nodes | |
CN105989443A (zh) | 一种基于智能移动终端的通讯线路巡检*** | |
US11755337B2 (en) | Techniques for managing dependencies of an orchestration service | |
CN109074265A (zh) | 移动云服务的预先形成的指令 | |
US10083061B2 (en) | Cloud embedded process tenant system for big data processing | |
US20130055235A1 (en) | Custom code innovation management | |
US10929279B2 (en) | Systems and method for automated testing framework for service portal catalog | |
WO2021150435A1 (en) | Techniques for utilizing directed acyclic graphs for deployment instructions | |
EP4094149A1 (en) | Updating code in distributed version control system | |
Chondamrongkul | Model-driven framework to support evolution of mobile applications in multi-cloud environments | |
CN116595057B (zh) | 数据查询方法、装置、计算机设备及计算机程序产品 | |
US11809301B2 (en) | Techniques for large-scale functional testing in cloud-computing environments | |
US10673855B2 (en) | Consolidated identity management system provisioning to manage access across landscapes | |
CN117194533A (zh) | 一种元数据服务发布方法和*** | |
CN117009327A (zh) | 一种数据处理方法、装置及计算机设备、介质 | |
CN113515438A (zh) | 测试账号管理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |