数据权限控制方法、装置、设备及存储介质与流程

    专利查询2023-03-21  132

    1.本发明涉及人工智能
    技术领域
    :,尤其涉及一种数据权限控制方法、装置、电子设备及计算机可读存储介质。
    背景技术
    ::2.为了保护数据库中数据的安全性及稳定性,通常需要对数据库数据进行权限控制,即对不同的用户分配不同的数据库数据操作权限,以实现具有特定权限的用户对所述特定权限所覆盖的数据表或表字段执行所述特定权限所指定的增、删、改、查等数据库数据操作。3.目前业内较为普遍的作法是在业务代码中添加对访问数据库数据的sql语句以进行权限控制,这种方式存在以下弊端:4.一方面,针对复杂的sql语句,例如,一条sql语句涉及多张数据表、表字段以及多个过滤条件,这种情况需要对每一张数据表、相关表字段及过滤条件做分析和判断,拼接符合数据权限控制的sql语句,相应的权限控制程序的代码开发工作量比较大,也会导致后期业务维护工作量的增加。5.另一方面,当出现数据库数据权限调整时,需要修改相应的权限控制程序的代码,影响业务的正常使用,增加业务的维护难度和成本。技术实现要素:6.本发明提供一种数据权限控制方法、装置及计算机可读存储介质,其主要目的在于解决数据权限控制过程的维护难度较高的问题。7.为实现上述目的,本发明提供的一种数据权限控制方法,包括:8.构建预设数据库的数据权限控制表;9.当监测到访问所述预设数据库的sql语句时,拦截所述sql语句;10.解析所述sql语句得到用户角色、对象数据表及所述对象数据表的过滤条件;11.从所述数据权限控制表中,查询所述用户角色对应的可操作数据表及每张所述可操作数据表的过滤条件;12.判断所述对象数据表是否在所述可操作数据表之内;13.若所述对象数据表不在所述可操作数据表之内,则禁止所述sql语句的访问;14.若所述对象数据表在所述可操作数据表之内,则根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型;15.利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,利用所述sql语句对所述可操作数据进行访问操作。16.可选地,所述构建预设数据库的数据权限控制表,包括:17.获取所述预设数据库的所有用户角色、数据表及过滤条件之间的关联关系;18.根据所述关联关系,创建所述数据库中每张数据表的由对应用户角色及所述用户角色可操作的表字段及相应的过滤条件构成的记录行;19.汇集所有记录行作为所述预设数据库的数据权限控制表。20.可选地,所述拦截所述sql语句,包括:21.利用mybatis拦截器,配置拦截接口、拦截类型;22.利用所述拦截接口,拦截所述预设数据库中符合所述拦截类型的sql语句。23.可选地,所述判断所述对象数据表是否在所述可操作数据表之内,包括:24.构建所述可操作数据表的表名索引;25.根据所述对象数据表的表名编译检索语句;26.利用所述检索语句在所述表名索引中进行检索;27.当不可在所述表名索引中检索到所述对象数据表的表名时,确定所述对象数据表不在所述可操作数据表之内;28.当可在所述表名索引中检索到所述对象数据表的表名时,确定所述对象数据表在所述可操作数据表之内。29.可选地,30.所述根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型,包括:31.从所述对象数据表的过滤条件和所述可操作数据表的过滤条件中逐个指定其中一个过滤条件为根节点;32.对所述根节点进行节点分裂处理,得到包含多个根节点的基础决策树;33.将所有基础决策树进行重复节点关联,得到数据筛选模型。34.可选地,35.所述对所述根节点进行节点分裂处理,得到包含多个根节点的基础决策树,包括:36.获取预设的节点分裂条件表,从所述节点分裂条件表中检索得到所述根节点对应的分裂条件;37.将检索到的每一个所述分裂条件作为与所述根节点并列的根节点;38.将预设的打分函数配置至每个根节点,得到包含多个根节点的基础决策树。39.可选地,所述利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,包括:40.逐个将所述对象数据表内的数据输入至所述数据筛选模型中,得到所述数据筛选模型中每个根节点的打分函数对所述对象数据表内每个数据的输出分值;41.计算所述对象数据表内每个数据的输出分值的总和,并选取所述总和大于预设分值的数据为所述用户角色的可操作数据。42.为了解决上述问题,本发明还提供一种数据权限控制装置,所述装置包括:43.语句拦截模块,用于构建预设数据库的数据权限控制表,当监测到访问所述预设数据库的sql语句时,拦截所述sql语句;44.语句解析模块,用于解析所述sql语句得到用户角色、对象数据表及所述对象数据表的过滤条件;45.条件查询模块,用于从所述数据权限控制表中,查询所述用户角色对应的可操作数据表及每张所述可操作数据表的过滤条件;46.数据筛选模块,用于判断所述对象数据表是否在所述可操作数据表之内,若所述对象数据表不在所述可操作数据表之内,则禁止所述sql语句的访问,若所述对象数据表在所述可操作数据表之内,则根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型;47.权限控制模块,用于利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,利用所述sql语句对所述可操作数据进行访问操作。48.为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:49.至少一个处理器;以及,50.与所述至少一个处理器通信连接的存储器;其中,51.所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述所述的数据权限控制方法。52.为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个计算机程序,所述至少一个计算机程序被电子设备中的处理器执行以实现上述所述的数据权限控制方法。53.本发明实施例通过对拦截的sql语句进行分析,得到用户角色、对象数据表以及对象数据表的过滤条件,通过对象数据表与用户角色对应的可操作数据表进行比对,实现第一次的粗略权限管控;同时,利用过滤条件构建数据筛选模型,以将符合过滤条件的数据筛选出来,以便用户进行访问,实现了第二次的精细权限管控,避免了对底层代码的改写,且无需针对每一张表及字段进行分析处理,只需要处理用户需要进行访问的数据即可,便于后续维护,减少对权限管控进行维度的难度。因此本发明提出的数据权限控制方法、装置、电子设备及计算机可读存储介质,可以解决数据权限控制过程的维护难度较高的问题。附图说明54.图1为本发明一实施例提供的数据权限控制方法的流程示意图;55.图2为本发明一实施例提供的构建数据权限控制表的流程示意图;56.图3为本发明一实施例提供的构建数据筛选模型的流程示意图;57.图4为本发明一实施例提供的数据权限控制装置的功能模块图;58.图5为本发明一实施例提供的实现所述数据权限控制方法的电子设备的结构示意图。59.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式60.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。61.本技术实施例提供一种数据权限控制方法。所述数据权限控制方法的执行主体包括但不限于服务端、终端等能够被配置为执行本技术实施例提供的该方法的电子设备中的至少一种。换言之,所述数据权限控制方法可以由安装在终端设备或服务端设备的软件或硬件来执行。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。所述服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(contentdeliverynetwork,cdn)、以及大数据和人工智能平台等基础云计算服务的云服务器。62.参照图1所示,为本发明一实施例提供的数据权限控制方法的流程示意图。在本实施例中,所述数据权限控制方法包括:63.s1、构建预设数据库的数据权限控制表。64.本发明实施例中,所述预设数据库是关系数据库的一种,关系数据库是使用最广泛的数据库,通常采用关系模型组织数据,以行和列的形式存储数据。为了便于用户理解,在关系型数据库中,由一系列行或列组成的存储单位称之为数据表,一组数据表组成了数据库。65.本发明实施例中,为了保护所述预设数据库中数据的安全性及稳定性,通常需要对所述数据库的数据进行权限控制,即对不同的操作用户分配不同的数据库数据操作权限,以实现具有特定权限的用户对所述特定权限所覆盖的数据表或表字段执行所述特定权限所指定的增、删、改、查等数据库数据操作。66.详细地,参图2所示,所述构建预设数据库的数据权限控制表,包括:67.s21、获取所述预设数据库的所有用户角色、数据表及过滤条件之间的关联关系;68.s22、根据所述关联关系,创建所述数据库中每张数据表的由对应用户角色及所述用户角色可操作的表字段及相应的过滤条件构成的记录行;69.s23、汇集所有记录行作为所述预设数据库的数据权限控制表。70.本发明实施例中,所述过滤条件是指对所述预设数据库中的数据表的数据按照一定的条件进行筛选,再对筛选得到的数据执行相应的增加、删除、修改等操作,其中所述过滤条件包括相等条件、范围条件等类型。例如,名称为学生基本信息表的数据表由学生id、学生姓名、班级信息、科目1成绩、科目2成绩等字段组成。查找所述学生基本信息表中学生id等于12304520的学生的科目2成绩,其中对应的过滤条件属于相等条件,查找所述学生基本信息表中科目2成绩大于85份的学生id,其中对应的过滤条件属于范围条件。71.s2、当监测到访问所述预设数据库的sql语句时,拦截所述sql语句。72.本发明实施例中,可以利用mybatis框架拦截所述预设数据库的sql语句。所述mybatis框架是一种orm(objectrelationalmapping,对象关系映射)框架,所述mybatis框架将有关数据库的重复性的、可模块化的工作封装在一起,例如,封装数据库的连接、数据库的驱动包等。使用者在开发是只需要关注sql语句本省,不需要花费经理处理加载驱动、创建连接等繁琐的过程。通常mybatis框架通过配置文件或注解形式的管理所述数据库。73.详细地,所述监测到访问所述预设数据库的sql语句时,拦截所述sql语句,包括:74.利用mybatis拦截器,配置拦截接口、拦截类型;75.利用所述拦截接口,拦截所述预设数据库中符合所述拦截类型的sql语句。76.本发明实施例中,所述拦截sql语句的接口可以是所述mybatis框架中的org.apache.ibatis.plugin.interceptor接口,通过所述接口中的signature函数指定拦截类型,所述拦截类型是指sql语句的类型,包括增加、删除、更新等类型。77.较佳地,所述拦截所述sql语句之后,还包括:将拦截后的sql语句保存到所述预设数据库中;监测所述拦截后的sql语句的改造结果;当所述拦截后的sql语句的改造结果为失败时,将从所述预设数据库中获取所述拦截后的sql语句,并重新改造所述拦截sql语句的方法。78.本发明实施例中,通过mybatis拦截器统一拦截所述预设数据库的相关sql语句,开发者无需在业务逻辑中增加sql的监测、拦截及判断等程序,实现了业务逻辑与sql管理分离的效果,开发者可以集中精力在业务逻辑实现和优化上。79.s3、解析所述sql语句得到用户角色、对象数据表及所述对象数据表的过滤条件。80.本发明实施例中可以利用sql解析器sqlparse对所述sql语句进行拆分、格式化,得到所述sql语句包含的用户角色、对象数据表及所述对象数据表的过滤条件信息。81.本发明另一实施例中也可以利用正则表达式解析所述sql语句。82.s4、从所述数据权限控制表中,查询所述用户角色对应的可操作数据表及每张所述可操作数据表的过滤条件。83.本发明实施例中,根据所述用户角色在所述数据权限控制表中,查找与所述用户角色相匹配的权限信息,所述权限信息包括但不限于所述用户角色可操作的数据表及每张所述可操作数据表的过滤条件。84.s5、判断所述对象数据表是否在所述可操作数据表之内。85.本发明其中一个实际应用场景中,由于所述对象数据表是该用户角色想要访问的数据表,而所述可操作数据表该用户角色可以进行访问的数据表,因此,可通过判断所述对象数据表是否在所述可操作数据表之内,来实现对所述用户角色的初步权限的控制。86.本发明实施例中,所述判断所述对象数据表是否在所述可操作数据表之内,包括:87.构建所述可操作数据表的表名索引;88.根据所述对象数据表的表名编译检索语句;89.利用所述检索语句在所述表名索引中进行检索;90.当不可在所述表名索引中检索到所述对象数据表的表名时,确定所述对象数据表不在所述可操作数据表之内;91.当可在所述表名索引中检索到所述对象数据表的表名时,确定所述对象数据表在所述可操作数据表之内。92.详细地,可利用sql库中的createindex函数构建所述可操作数据表的表名索引。93.示例性地,createindex函数可以为:94.createindexindexname95.ontablename(columnname)96.其中,indexname为表名索引的名称,tablename为所述可操作数据表,columnname为所述可操作数据表的表名所在数据列的名称。97.s6、若所述对象数据表不在所述可操作数据表之内,则禁止所述sql语句的访问。98.本发明实施例中,若所述对象数据表不在所述可操作数据表之内,则说明该用户角色想要访问的对象数据表是所述用户角色没有访问权限的数据表,因此,禁止所述sql语句的访问请求。99.s7、若所述对象数据表在所述可操作数据表之内,则根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型。100.本发明实施例中,若所述对象数据表在所述可操作数据表之内,则说明该用户角色想要访问的对象数据表是所述用户角色有访问权限的数据表。101.本发明其中一个实际应用场景中,当所述对象数据表在所述可操作数据表之内时,该用户角色也不一定对所述对象数据表内所有的数据均具有访问权限,因此,为了实现数据粒度的权限控制,可根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型,以利用所述数据筛选模型对所述对象数据表中的数据进行分析与筛选,以实现在数据表内进行字段粒度的访问权限控制。102.本发明实施例中,参图3所示,所述根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型,包括:103.s31、从所述对象数据表的过滤条件和所述可操作数据表的过滤条件中逐个选取其中一个过滤条件为目标条件;104.s32、将所述目标条件作为参数对预设的决策函数进行赋值,并利用赋值后的决策函数作为决策条件,生成决策树;105.s33、汇集所有过滤条件生成的决策树为数据筛选模型。106.示例性地,所述决策函数可以为:[0107][0108]其中,f(x)为所述决策函数的输出值,x为所述决策函数的参数,g(y)为所述决策函数的输入值。[0109]详细地,可从所述对象数据表的过滤条件和所述可操作数据表的过滤条件中逐个选取其中一个过滤条件为目标条件,利用该目标条件对所述决策函数的参数x进行赋值,并将赋值后的决策函数作为决策条件生成如下决策树:[0110]当所述决策树的输入值g(y)与所述决策树的参数x相同时,该决策树输出值f(x)=α;[0111]当所述决策树的输入至g(y)与所述决策树的参数x不相同时,该决策树输出值f(x)=β。[0112]本发明实施例中,可利用并联或者串联的形式将所述过滤条件中每一个特征对应的决策树进行汇集,得到数据筛选模型。[0113]本发明另一实施例中,所述根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型,包括:[0114]从所述对象数据表的过滤条件和所述可操作数据表的过滤条件中逐个指定其中一个过滤条件为根节点;[0115]对所述根节点进行节点分裂处理,得到包含多个根节点的基础决策树;[0116]将所有基础决策树进行重复节点关联,得到数据筛选模型。[0117]详细地,所述基本决策树是一个最简单的决策树,是后续决策树进行决策的基础。[0118]具体地,所述对所述根节点进行节点分裂处理,得到包含多个根节点的基础决策树,包括:[0119]获取预设的节点分裂条件表,从所述节点分裂条件表中检索得到所述根节点对应的分裂条件;[0120]将检索到的每一个所述分裂条件作为与所述根节点并列的根节点;[0121]将预设的打分函数配置至每个根节点,得到包含多个根节点的基础决策树。[0122]进一步地,所述节点分裂条件表中包含多个过滤条件,以及每一个过滤条件作为根节点时对应的分裂条件。[0123]详细地,所述从所述节点分裂条件表中检索得到所述根节点对应的分裂条件的步骤,与s6中利用所述检索语句在所述表名索引中进行检索的步骤一致,在此不做赘述。[0124]具体地,所述将所有基础决策树进行重复节点关联,即筛查每个所述基础决策树之间是否存在重复的根节点,当存在重复的根节点时,根据重复发的根节点将不同的基础决策树进行连接,得到数据筛选模型。[0125]s8、利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,利用所述sql语句对所述可操作数据进行访问操作。[0126]本发明实施例中,可利用所述数据筛选模型对所述对象数据表内的数据进行筛选,以筛选出对象数据表内所述用户可进行访问的数据字段,进而实现数据粒度的访问权限控制,提升访问权限控制的精确度。[0127]本发明实施例中,所述利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,包括:[0128]从所述对象数据表中逐个选取其中一个数据字段为输入值;[0129]从所述数据筛选模型中逐个选取一个决策树为目标决策树,将所述输入值输入至所述目标决策树,得到所述目标决策树输出的输出结果,其中,所述输出结果为所述输入值与所述目标决策树的参数相同,或者所述输入值与所述目标决策树的参数不同;[0130]汇集所述输出结果为所述输入值与所述目标决策树的参数相同的数据字段,得到所述用户角色的可操作数据。[0131]例如,所述数据筛选模型中包括决策树a1、决策树a2、决策树b1和决策树b2,选取决策树a1为目标决策树;从所述对象数据表中选取其中一个字段为输入值,将输入值输入至所述决策树a1,得到所述决策树a1输出的所述输入值与所述决策树a1的参数相同的输出结果;将输入值输入至所述决策树a2,得到所述决策树a2输出的所述输入值与所述决策树a2的参数不相同的输出结果;将输入值输入至所述决策树b1,得到所述决策树b1输出的所述输入值与所述决策树b1的参数不相同的输出结果;将输入值输入至所述决策树b2,得到所述决策树b2输出的所述输入值与所述决策树b2的参数不相同的输出结果。[0132]其中,由于决策树a1输出的所述输入值与所述决策树a1的参数相同的输出结果,则可确定该输入值为所述用户角色的可访问的数据字段。[0133]详细地,可汇集所述输出结果为所述输入值与所述目标决策树的参数相同的数据字段,得到所述用户角色的可操作数据。[0134]本发明另一实施例中,所述利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,包括:[0135]逐个将所述对象数据表内的数据输入至所述数据筛选模型中,得到所述数据筛选模型中每个根节点的打分函数对所述对象数据表内每个数据的输出分值;[0136]计算所述对象数据表内每个数据的输出分值的总和,并选取所述总和大于预设分值的数据为所述用户角色的可操作数据。[0137]详细地,可逐个将所述对象数据表内的每一个数据输入至所述数据筛选模型中,进而利用该数据筛选模型中的每个根节点内包含的打分函数对输入的数据进行打分,并计算所有根节点对该数据的打分之和,得到该数据的输出分值的总和,以按照所述总和对所述对象数据表内的数据进行筛选,选取总和大于预设分值的数据为所述用户角色的可操作数据。[0138]本发明实施例中,可以利用预设的数据代理接口获取所述改写后的sql语句,并将所述改写后的sql语句发送到所述预设数据库,对所述预设数据库执行相关的操作。所述数据代理接口与所述预设数据库相连。[0139]本发明申请依据数据库数据权限控制的三要素用户角色、数据表及过滤条件,生成预设数据库的数据权限控制表,并拦截访问所述数据库的sql语句,根据所述数据权限控制表对所述sql语句进行改写,使得改写后的sql语句符合数据权限控制要求,其中配置数据权限控制表、拦截及改写sql语句均可独立业务之外,实现数据权限控制与业务逻辑分离,从而降低了数据库数据权限控制的开发工作量及维护难度。[0140]本发明实施例通过对拦截的sql语句进行分析,得到用户角色、对象数据表以及对象数据表的过滤条件,通过对象数据表与用户角色对应的可操作数据表进行比对,实现第一次的粗略权限管控;同时,利用过滤条件构建数据筛选模型,以将符合过滤条件的数据筛选出来,以便用户进行访问,实现了第二次的精细权限管控,避免了对底层代码的改写,且无需针对每一张表及字段进行分析处理,只需要处理用户需要进行访问的数据即可,便于后续维护,减少对权限管控进行维度的难度。因此本发明提出的数据权限控制方法,可以解决数据权限控制过程的维护难度较高的问题。[0141]如图4所示,是本发明一实施例提供的数据权限控制装置的功能模块图。[0142]本发明所述数据权限控制装置100可以安装于电子设备中。根据实现的功能,所述数据权限控制装置100可以包括语句拦截模块101、语句解析模块102、条件查询模块103、数据筛选模块104及权限控制模块105。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。[0143]在本实施例中,关于各模块/单元的功能如下:[0144]所述语句拦截模块101,用于构建预设数据库的数据权限控制表,当监测到访问所述预设数据库的sql语句时,拦截所述sql语句;[0145]所述语句解析模块102,用于解析所述sql语句得到用户角色、对象数据表及所述对象数据表的过滤条件;[0146]所述条件查询模块103,用于从所述数据权限控制表中,查询所述用户角色对应的可操作数据表及每张所述可操作数据表的过滤条件;[0147]所述数据筛选模块104,用于判断所述对象数据表是否在所述可操作数据表之内,若所述对象数据表不在所述可操作数据表之内,则禁止所述sql语句的访问,若所述对象数据表在所述可操作数据表之内,则根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型;[0148]所述权限控制模块105,用于利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,利用所述sql语句对所述可操作数据进行访问操作。[0149]详细地,本发明实施例中所述数据权限控制装置100中所述的各模块在使用时采用与上述图1至图3中所述的数据权限控制方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。[0150]如图5所示,是本发明一实施例提供的实现数据权限控制方法的电子设备的结构示意图。[0151]所述电子设备1可以包括处理器10、存储器11、通信总线12以及通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如数据权限控制程序。[0152]其中,所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(centralprocessingunit,cpu)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(controlunit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如执行数据权限控制程序等),以及调用存储在所述存储器11内的数据,以执行电子设备的各种功能和处理数据。[0153]所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:sd或dx存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备的内部存储单元,例如该电子设备的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式移动硬盘、智能存储卡(smartmediacard,smc)、安全数字(securedigital,sd)卡、闪存卡(flashcard)等。进一步地,所述存储器11还可以既包括电子设备的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备的应用软件及各类数据,例如数据权限控制程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。[0154]所述通信总线12可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。[0155]所述通信接口13用于上述电子设备与其他设备之间的通信,包括网络接口和用户接口。可选地,所述网络接口可以包括有线接口和/或无线接口(如wi-fi接口、蓝牙接口等),通常用于在该电子设备与其他电子设备之间建立通信连接。所述用户接口可以是显示器(display)、输入单元(比如键盘(keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备中处理的信息以及用于显示可视化的用户界面。[0156]图中仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图中示出的结构并不构成对所述电子设备的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。[0157]例如,尽管未示出,所述电子设备还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器10逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备还可以包括多种传感器、蓝牙模块、wi-fi模块等,在此不再赘述。[0158]应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。[0159]所述电子设备1中的所述存储器11存储的数据权限控制程序是多个指令的组合,在所述处理器10中运行时,可以实现:[0160]构建预设数据库的数据权限控制表;[0161]当监测到访问所述预设数据库的sql语句时,拦截所述sql语句;[0162]解析所述sql语句得到用户角色、对象数据表及所述对象数据表的过滤条件;[0163]从所述数据权限控制表中,查询所述用户角色对应的可操作数据表及每张所述可操作数据表的过滤条件;[0164]判断所述对象数据表是否在所述可操作数据表之内;[0165]若所述对象数据表不在所述可操作数据表之内,则禁止所述sql语句的访问;[0166]若所述对象数据表在所述可操作数据表之内,则根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型;[0167]利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,利用所述sql语句对所述可操作数据进行访问操作。[0168]具体地,所述处理器10对上述指令的具体实现方法可参考附图对应实施例中相关步骤的描述,在此不赘述。[0169]进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)。[0170]本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:[0171]构建预设数据库的数据权限控制表;[0172]当监测到访问所述预设数据库的sql语句时,拦截所述sql语句;[0173]解析所述sql语句得到用户角色、对象数据表及所述对象数据表的过滤条件;[0174]从所述数据权限控制表中,查询所述用户角色对应的可操作数据表及每张所述可操作数据表的过滤条件;[0175]判断所述对象数据表是否在所述可操作数据表之内;[0176]若所述对象数据表不在所述可操作数据表之内,则禁止所述sql语句的访问;[0177]若所述对象数据表在所述可操作数据表之内,则根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型;[0178]利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,利用所述sql语句对所述可操作数据进行访问操作。[0179]在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。[0180]所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。[0181]另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。[0182]对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。[0183]因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。[0184]本技术实施例可以基于人工智能技术对相关的数据进行获取和处理。其中,人工智能(artificialintelligence,ai)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。[0185]此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一、第二等词语用来表示名称,而并不表示任何特定的顺序。[0186]最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。当前第1页12当前第1页12
    技术特征:
    1.一种数据权限控制方法,其特征在于,所述方法包括:构建预设数据库的数据权限控制表;当监测到访问所述预设数据库的sql语句时,拦截所述sql语句;解析所述sql语句得到用户角色、对象数据表及所述对象数据表的过滤条件;从所述数据权限控制表中,查询所述用户角色对应的可操作数据表及每张所述可操作数据表的过滤条件;判断所述对象数据表是否在所述可操作数据表之内;若所述对象数据表不在所述可操作数据表之内,则禁止所述sql语句的访问;若所述对象数据表在所述可操作数据表之内,则根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型;利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,利用所述sql语句对所述可操作数据进行访问操作。2.如权利要求1所述的数据权限控制方法,其特征在于,所述构建预设数据库的数据权限控制表,包括:获取所述预设数据库的所有用户角色、数据表及过滤条件之间的关联关系;根据所述关联关系,创建所述数据库中每张数据表的由对应用户角色及所述用户角色可操作的表字段及相应的过滤条件构成的记录行;汇集所有记录行作为所述预设数据库的数据权限控制表。3.如权利要求1所述的数据权限控制方法,其特征在于,所述拦截所述sql语句,包括:利用mybatis拦截器,配置拦截接口、拦截类型;利用所述拦截接口,拦截所述预设数据库中符合所述拦截类型的sql语句。4.如权利要求1所述的数据权限控制方法,其特征在于,所述判断所述对象数据表是否在所述可操作数据表之内,包括:构建所述可操作数据表的表名索引;根据所述对象数据表的表名编译检索语句;利用所述检索语句在所述表名索引中进行检索;当不可在所述表名索引中检索到所述对象数据表的表名时,确定所述对象数据表不在所述可操作数据表之内;当可在所述表名索引中检索到所述对象数据表的表名时,确定所述对象数据表在所述可操作数据表之内。5.如权利要求1所述的数据权限控制方法,其特征在于,所述根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型,包括:从所述对象数据表的过滤条件和所述可操作数据表的过滤条件中逐个指定其中一个过滤条件为根节点;对所述根节点进行节点分裂处理,得到包含多个根节点的基础决策树;将所有基础决策树进行重复节点关联,得到数据筛选模型。6.如权利要求5所述的数据权限控制方法,其特征在于,所述对所述根节点进行节点分裂处理,得到包含多个根节点的基础决策树,包括:获取预设的节点分裂条件表,从所述节点分裂条件表中检索得到所述根节点对应的分
    裂条件;将检索到的每一个所述分裂条件作为与所述根节点并列的根节点;将预设的打分函数配置至每个根节点,得到包含多个根节点的基础决策树。7.如权利要求1至6中任一项所述的数据权限控制方法,其特征在于,所述利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,包括:逐个将所述对象数据表内的数据输入至所述数据筛选模型中,得到所述数据筛选模型中每个根节点的打分函数对所述对象数据表内每个数据的输出分值;计算所述对象数据表内每个数据的输出分值的总和,并选取所述总和大于预设分值的数据为所述用户角色的可操作数据。8.一种数据权限控制装置,其特征在于,所述装置包括:语句拦截模块,用于构建预设数据库的数据权限控制表,当监测到访问所述预设数据库的sql语句时,拦截所述sql语句;语句解析模块,用于解析所述sql语句得到用户角色、对象数据表及所述对象数据表的过滤条件;条件查询模块,用于从所述数据权限控制表中,查询所述用户角色对应的可操作数据表及每张所述可操作数据表的过滤条件;数据筛选模块,用于判断所述对象数据表是否在所述可操作数据表之内,若所述对象数据表不在所述可操作数据表之内,则禁止所述sql语句的访问,若所述对象数据表在所述可操作数据表之内,则根据所述对象数据表的过滤条件和所述可操作数据表的过滤条件构建数据筛选模型;权限控制模块,用于利用所述数据筛选模型筛选出所述对象数据表内所述用户角色的可操作数据,利用所述sql语句对所述可操作数据进行访问操作。9.一种电子设备,其特征在于,所述电子设备包括:至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任意一项所述的数据权限控制方法。10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述的数据权限控制方法。

    技术总结
    本发明涉及人工智能技术,揭露了一种数据权限控制方法,包括:构建预设数据库的数据权限控制表;拦截访问预设数据库的SQL语句;解析SQL语句得到用户角色、对象数据表及对象数据表的过滤条件;从数据权限控制表中,查询用户角色对应的可操作数据表及每张可操作数据表的过滤条件;判断对象数据表是否在可操作数据表之内;若不在可操作数据表之内,则禁止SQL语句的访问;若对象数据表在可操作数据表之内,则根据过滤条件和可操作数据表的过滤条件构建数据筛选模型;利用模型筛选出对象数据表内用户角色的可操作数据,利用SQL语句对可操作数据进行访问操作。本发明还提出一种数据权限控制装置、设备及介质。本发明可以降低数据权限控制过程的维护难度。限控制过程的维护难度。限控制过程的维护难度。


    技术研发人员:李勇
    受保护的技术使用者:平安国际智慧城市科技股份有限公司
    技术研发日:2022.03.15
    技术公布日:2022/5/25
    转载请注明原文地址:https://tc.8miu.com/read-15776.html

    最新回复(0)