本发明涉及数据库访问,尤其涉及一种用于数据库的访问权限控制模块、方法及电子设备。
背景技术:
1、随着信息技术的飞速发展,应用程序的复杂性和数据量的增长对数据库访问权限控制提出了更为严格和多样化的要求。在当今的企业环境中,数据不仅是企业运营的核心资产,也是企业竞争力的关键所在。因此,确保数据的安全性、隐私性以及合规性成为了系统开发过程中不可忽视的重要环节。为了达到上述目的,业界开始探索更加高效、灵活且可维护的权限控制机制,这些新机制旨在将权限控制逻辑从业务代码中解耦出来,通过统一的权限管理框架或中间件来实现对数据库访问的细粒度控制,同时,这些机制还支持基于多种属性的权限判定,如用户身份、部门归属、角色定义以及上下级关系等,以满足复杂多变的业务需求。
2、但是,实现这样的权限控制机制并非易事,传统的权限控制方法在面对复杂多变的业务需求时显得力不从心,这些方法往往依赖于硬编码的sql查询语句或深度嵌入业务逻辑中的权限检查,导致系统架构僵化,难以适应快速变化的需求。具体而言,通过将用户权限信息的获取写入业务方法中进行权限管理,这不仅增加了代码的复杂度,还使得权限控制逻辑与业务逻辑紧密耦合,难以维护和扩展。此外,若借助持久层框架对sql语句进行权限管理,则也面临着与数据库访问系统高度耦合的问题。当数据库访问层或持久层框架发生变更时,如版本升级或技术栈迁移,原有的权限控制逻辑可能需要重新实现或进行大量修改,不仅增加了开发成本,还可能引入新的安全漏洞。
3、综上所述,针对访问数据库的权限管理方法存在耦合度较高的问题,导致权限控制的维护成本较高。
技术实现思路
1、为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
2、鉴于以上所述现有技术的缺点,本技术公开了一种用于数据库的访问权限控制模块、方法及电子设备,以降低权限控制的维护成本。
3、本技术公开了一种用于数据库的访问权限控制模块,包括:权限配置层,用于获取权限配置信息,其中,所述权限配置信息包括访问范围和/或访问条件;语句拦截层,用于拦截驱动层执行原始访问语句,其中,所述原始访问语句用于访问目标数据库;权限控制层,用于根据访问范围从拦截到的原始访问语句中进行匹配,得到目标语句,并且,若所述目标语句中不存在所述访问条件,则将所述访问条件织入所述目标语句;语句执行层,用于通过所述驱动层执行所述目标语句,以访问所述目标数据库。
4、于本技术一实施例中,所述权限配置层通过以下方式获取权限配置信息:获取权限配置结构,其中,所述权限配置结构包括相关信息字段和规则字段,所述规则字段包括行规则字段和/或列规则字段;按照所述权限配置结构生成目标数据库对应的权限配置信息,其中,所述相关信息字段用于承载数据库标识和/或用户标识,所述行规则字段用于承载所述目标数据库中任意行对应的访问范围和/或访问条件,所述列规则字段用于承载所述目标数据库中任意列对应的访问范围和/或访问条件。
5、于本技术一实施例中,所述权限配置层通过以下方式按照所述权限配置结构生成目标数据库对应的权限配置信息,包括:获取当前项目对应的项目相关用户,并获取所述当前项目对应的多个项目等级、及各所述项目等级分别对应的权限模版,其中,所述目标数据库存储有所述当前项目的项目数据;获取各所述项目相关用户分别对应的历史工作表,其中,所述历史工作表包括多个工作任务,且所述工作任务中的至少一部分为所述当前项目对应的项目任务;根据所述项目任务与所述工作任务之间的比重确定各所述项目相关用户分别对应的项目贡献率,并按照所述项目等级的数量对所述项目贡献率进行聚类计算,得到各所述项目等级分别对应的贡献率类簇;根据所述贡献率类簇与所述项目相关用户之间的对应关系从所述项目等级中确定各所述项目相关用户分别对应的用户等级,并将所述用户等级对应的权限模版填入所述权限配置结构,得到权限配置信息。
6、于本技术一实施例中,所述权限配置层通过以下方式根据所述项目任务与所述工作任务之间的比重确定各所述项目相关用户分别对应的项目贡献率:将任一历史工作表确定为目标工作表,将所述目标工作表中的工作任务确定为第一任务,将所述目标工作表中的项目任务确定为第二任务;获取所述工作任务分别对应的任务权重;根据所述第一任务对应的任务权重进行计算,得到第一总分;按照预设重要人物统计所述第二任务中的重要任务占比,并统计所述第二任务中的重复任务占比;根据所述第二任务对应的任务权重、所述重要任务占比、所述重复任务占比进行计算,得到第二总分,其中,所述重要任务占比与所述第二总分之间呈正相关关系,所述重复任务占比与所述第二总分之间呈正相关关系;将所述第二总分与所述第一总分对应的比值确定为所述目标工作表对应的项目贡献率。
7、于本技术一实施例中,所述权限控制层通过以下方式根据访问范围从拦截到的原始访问语句中进行匹配,得到目标语句:对拦截到的原始访问语句进行语法解析,得到原始语法结构;根据所述原始语法结构确定所述目标数据库中的待访问单元,其中,所述待访问单元包括表、行和列中的至少一种;根据所述访问范围判断所述原始访问语句对应的当前用户是否具有对所述目标数据库的数据库访问权限;若所述当前用户具有对所述目标数据库的数据库访问权限,则根据所述访问范围确定所述目标数据库中的可访问单元;根据所述可访问单元和所述待访问单元之间的匹配结果对所述原始语法结构进行更新,得到目标语法结构,以根据所述目标语法结构构建目标语句。
8、于本技术一实施例中,所述权限控制层通过以下方式若所述目标语句中不存在所述访问条件,则将所述访问条件织入所述目标语句:若所述权限配置信息中存在访问条件,则判断所述目标语法结构中是否存在所述访问条件;若所述目标语法结构中不存在所述访问条件,则将所述访问条件织入所述目标语法结构,以根据所述目标语法结构构建目标语句。
9、于本技术一实施例中,所述语句拦截层通过以下方式拦截驱动层执行原始访问语句:获取交互接口对应的接口代理,其中,所述驱动层用于通过所述交互接口访问所述目标数据库,所述接口代理用于实现所述交互接口;通过所述接口代理拦截所述驱动层执行所述原始访问语句。
10、于本技术一实施例中,所述接口代理包括以下至少一部分:驱动代理,依赖于连接代理,所述驱动代理用于实现所述交互接口中的java.sql.driver接口;所述连接代理,依赖于语法代理和预处理代理,所述连接代理用于实现所述交互接口中的java.sql.connection接口;所述语法代理,用于实现所述交互接口中的java.sql.statement接口;所述预处理代理,继承所述语法代理,所述预处理代理用于实现所述交互接口中的java.sql.preparedstatement接口。
11、本技术公开了一种用于数据库的访问权限控制方法,包括:获取权限配置信息,其中,所述权限配置信息包括访问范围和/或访问条件;拦截驱动层执行原始访问语句,其中,所述原始访问语句用于访问目标数据库;根据访问范围从拦截到的原始访问语句中进行匹配,得到目标语句,并且,若所述目标语句中不存在所述访问条件,则将所述访问条件织入所述目标语句;通过所述驱动层执行所述目标语句,以访问所述目标数据库。
12、本技术公开了一种电子设备,包括:处理器及存储器;所述存储器用于存储计算机程序,所述处理器用于执行所述存储器存储的计算机程序,以使所述电子设备执行上述的方法。
13、本技术的有益效果:
14、通过拦截驱动层执行原始访问语句,根据权限配置信息中的访问范围从拦截到的原始访问语句中进行匹配,得到目标语句,并将权限配置信息中的访问条件织入目标语句,再通过驱动层执行目标语句,以访问目标数据库。这样,在驱动层直接拦截并处理数据库访问请求,并通过集中管理的访问范围和访问条件对拦截到的原始访问语句进行修改,实现了针对数据库的访问权限控制,避免依赖于业务代码或持久层框架进行权限控制,将权限控制逻辑从业务逻辑中抽离出来,提高了访问权限控制的可读性和可维护性,便于用户维护,从而降低权限控制的维护成本。
1.一种用于数据库的访问权限控制模块,其特征在于,包括:
2.根据权利要求1所述的访问权限控制模块,其特征在于,所述权限配置层通过以下方式获取权限配置信息:
3.根据权利要求2所述的访问权限控制模块,其特征在于,所述权限配置层通过以下方式按照所述权限配置结构生成目标数据库对应的权限配置信息,包括:
4.根据权利要求3所述的访问权限控制模块,其特征在于,所述权限配置层通过以下方式根据所述项目任务与所述工作任务之间的比重确定各所述项目相关用户分别对应的项目贡献率:
5.根据权利要求1所述的访问权限控制模块,其特征在于,所述权限控制层通过以下方式根据访问范围从拦截到的原始访问语句中进行匹配,得到目标语句:
6.根据权利要求5所述的访问权限控制模块,其特征在于,所述权限控制层通过以下方式若所述目标语句中不存在所述访问条件,则将所述访问条件织入所述目标语句:
7.根据权利要求1至6任一项所述的访问权限控制模块,其特征在于,所述语句拦截层通过以下方式拦截驱动层执行原始访问语句:
8.根据权利要求7所述的访问权限控制模块,其特征在于,所述接口代理包括以下至少一部分:
9.一种用于数据库的访问权限控制方法,其特征在于,包括:
10.一种电子设备,其特征在于,包括:处理器及存储器;
