数据库访问控制方法、装置及存储介质与流程

摘要: 本技术涉及数据库,尤其涉及一种数据库访问控制方法、装置及存储介质。背景技术:1、在企业级信息系统架构中,多业务系统共用底层数据库资源是普遍部署模式。为缩减数据库...
数据库访问控制方法、装置及存储介质与流程

本技术涉及数据库,尤其涉及一种数据库访问控制方法、装置及存储介质。

背景技术:

1、在企业级信息系统架构中,多业务系统共用底层数据库资源是普遍部署模式。为缩减数据库运维投入、降低业务接入改造成本,现有方案普遍复用少量数据库真实账号对接各类业务,业务通过直连或代理网关访问数据库,配套读写分离、连接池、sql预处理等机制保障数据库运行性能,该部署架构凭借部署简便的优势被广泛落地使用。

2、现有数据库访问体系以真实账号作为核心鉴权凭据,各业务配置固定真实账号信息,建立连接时依托账号口令完成身份核验,数据库或接入代理仅校验账号合法性,无法对接入的业务主体做精细化身份区分,大量业务共用同一套真实数据库账号凭据成为行业常规做法。

3、该现有实现模式存在明显安全管控短板:真实账号配置信息散布于各业务配置、运行日志及运维链路中,凭据外泄隐患突出;多业务共用账号的架构难以落地最小权限管控,不同业务数据访问边界模糊,一旦出现异常数据操作,无法精准定位责任业务,数据权限隔离与操作溯源审计工作难以有效开展。

技术实现思路

1、为了解决上述现有实现模式存在明显安全管控短板的技术问题,本技术实施例提供了一种数据库访问控制方法、装置、电子设备及存储介质。具体技术方案如下:

2、在本技术实施例的第一方面,首先提供了一种数据库访问控制方法,应用于数据库代理服务,所述方法包括:

3、接收业务系统发起的携带有虚拟账号的连接认证请求,并校验所述虚拟账号的有效性;

4、在所述虚拟账号的有效性校验成功的情况下,建立与所述业务系统的会话,并为所述会话绑定所述虚拟账号对应的权限策略;

5、接收所述业务系统经所述会话发送的报文,并从所述报文中解析出结构化查询语言,根据所述权限策略对所述结构化查询语言进行访问校验;

6、在访问校验通过的情况下,将所述结构化查询语言发送至对应的数据库执行。

7、在本技术实施例的第二方面,还提供了一种数据库访问控制装置,所述装置包括:

8、请求接收模块,用于接收业务系统发起的携带有虚拟账号的连接认证请求,并校验所述虚拟账号的有效性;

9、会话建立模块,用于在所述虚拟账号的有效性校验成功的情况下,建立与所述业务系统的会话,并为所述会话绑定所述虚拟账号对应的权限策略;

10、报文接收模块,用于接收所述业务系统经所述会话发送的报文,并从所述报文中解析出结构化查询语言,根据所述权限策略对所述结构化查询语言进行访问校验;

11、语言执行模块,用于在访问校验通过的情况下,将所述结构化查询语言发送至对应的数据库执行。

12、在一个可选的实施方式中,所述装置还包括:

13、账号创建模块,用于响应能力平台的账号创建请求生成虚拟账号,由能力平台为所述虚拟账号配置权限策略,并将配置后的虚拟账号分配至对应业务系统。

14、在一个可选的实施方式中,所述装置还包括:

15、参数解析模块,用于解析所述连接认证请求中携带的连接串内的连接属性参数,依据所述连接属性参数判定访问类型为主库访问或从库访问;

16、所述语言执行模块具体包括:

17、连接调取子模块,用于根据所述访问类型,从所述结构化查询语言访问的目标逻辑库对应的连接池中调取未绑定权限信息的后端数据库连接;

18、结构化查询语言执行子模块,用于通过所述未绑定权限信息的后端数据库连接,将所述结构化查询语言发送至对应的数据库执行。

19、在一个可选的实施方式中,所述连接调取子模块具体用于:

20、在所述访问类型为主库访问的情况下,从所述结构化查询语言访问的目标逻辑库对应的主库连接池中调取未绑定权限信息的后端数据库连接;

21、在所述访问类型为从库访问的情况下,从所述结构化查询语言访问的目标逻辑库对应的从库连接池中调取未绑定权限信息的后端数据库连接。

22、在一个可选的实施方式中,所述结构化查询语言执行子模块具体用于:

23、在所述未绑定权限信息的后端数据库连接取自主库连接池的情况下,将所述结构化查询语言发送至对应的主数据库执行;

24、在所述未绑定权限信息的后端数据库连接取自从库连接池的情况下,识别所述结构化查询语言的语句类型;

25、在所述语句类型为查询类语句的情况下,将所述结构化查询语言发送至对应的从数据库执行;

26、在所述语句类型为写操作类语句的情况下,则拦截所述结构化查询语言并向业务系统返回执行错误。

27、在一个可选的实施方式中,所述语言执行模块,还包括:

28、连接池创建子模块,用于获取数据库集群中各数据库的节点地址及对应的访问模式,所述访问模式包括主库访问模式或从库访问模式;

29、根据所述节点地址及所述访问模式,构建连接参数并下发至底层驱动,以使底层驱动依托所述连接参数完成节点自动遴选,生成对应目标逻辑库的主库连接池、从库连接池。

30、在一个可选的实施方式中,所述会话与未绑定权限信息的后端数据库连接无固定绑定关系,所述语言执行模块具体用于:

31、确定所述结构化查询语言要访问的目标逻辑库,从所述目标逻辑库对应的连接池中调取未绑定权限信息的后端数据库连接;

32、通过所述未绑定权限信息的后端数据库连接将所述结构化查询语言发送至对应的数据库执行;

33、在所述结构化查询语言执行完毕的情况下,将所述未绑定权限信息的后端数据库连接归还至所述目标逻辑库对应的连接池。

34、在一个可选的实施方式中,所述装置还包括:

35、能力检测模块,用于解析所述连接认证请求中携带的能力标志位,并检测是否支持所述能力标志位对应的单次带参数执行扩展指令;

36、在支持所述能力标志位对应的单次带参数执行扩展指令的情况下,向业务系统返回携带能力标识的应答报文,以使业务系统执行以下操作:

37、响应于应答报文,判断结构化查询语言是否附带独立绑定参数,并在结构化查询语言附带独立绑定参数的情况下,检测能力开关是否开启;

38、在能力开关开启的情况下,将结构化查询语言与所述绑定参数封装为扩展报文,并发送至数据库代理服务;

39、所述报文接收模块具体用于:

40、接收所述业务系统经所述会话发送的扩展报文,并从所述扩展报文中解析出结构化查询语言与绑定参数。

41、在一个可选的实施方式中,所述语言执行模块具体用于:

42、确定所述结构化查询语言要访问的目标逻辑库,以所述目标逻辑库与所述结构化查询语言为检索键,从预处理句柄池中匹配对应的预处理句柄;

43、若匹配到对应的预处理句柄,则将结构化查询语言附带的绑定参数传递给预处理句柄;

44、将携带参数的预处理句柄下发至对应数据库,以使数据库匹配预处理句柄绑定的执行计划并带入绑定参数执行;

45、其中,所述预处理句柄池内各预处理句柄配置引用计数,多会话共享同一预处理句柄时更新引用计数,仅当引用计数归零且达到空闲阈值后,延迟关闭预处理句柄。

46、在一个可选的实施方式中,所述语言执行模块还用于:

47、若未匹配到对应的预处理句柄,则将所述结构化查询语言发送至对应的数据库,使数据库生成匹配所述结构化查询语言的执行计划,创建与所述执行计划绑定的预处理句柄,并返回至数据库代理服务;

48、接收预处理句柄,将预处理句柄存入预处理句柄池,并建立预处理句柄与目标逻辑库、所述结构化查询语言的对应关系;

49、将结构化查询语言附带的绑定参数传递给预处理句柄,将携带参数的预处理句柄下发至对应数据库,以使数据库匹配预处理句柄绑定的执行计划并带入绑定参数执行。

50、在一个可选的实施方式中,所述能力检测模块还用于:

51、在能力开关未开启的情况下,检测参数内联开关是否开启;

52、在参数内联开关开启的情况下,将所述绑定参数拼接至结构化查询语言,得到无占位符完整结构化查询语言;

53、将所述无占位符完整结构化查询语言封装为普通查询报文,并发送至数据库代理服务;

54、所述报文接收模块还用于:

55、接收所述业务系统经所述会话发送的普通查询报文,并从所述普通查询报文中解析出无占位符完整结构化查询语言。

56、在一个可选的实施方式中,所述语言执行模块还用于:

57、确定所述无占位符完整结构化查询语言要访问的目标逻辑库和数据库表;

58、在预设白名单中检测到所述目标逻辑库和数据库表的情况下,对所述无占位符完整结构化查询语言进行规则匹配;

59、在所述无占位符完整结构化查询语言规则匹配成功的情况下,提取所述无占位符完整结构化查询语言携带的绑定参数,将所述无占位符完整结构化查询语言携带的绑定参数替换为占位符,得到转化结构化查询语言;

60、以所述目标逻辑库与所述转化结构化查询语言为检索键,从预处理句柄池中匹配对应的预处理句柄;

61、若匹配到对应的预处理句柄,将所述无占位符完整结构化查询语言携带的绑定参数传递给预处理句柄;

62、将携带参数的预处理句柄下发至对应数据库,以使数据库匹配预处理句柄绑定的执行计划并带入绑定参数执行。

63、在一个可选的实施方式中,所述语言执行模块还用于:

64、若未匹配到对应的预处理句柄,将所述转化结构化查询语言发送至对应的数据库,以使数据库生成匹配所述转化结构化查询语言的执行计划,创建与所述执行计划绑定的预处理句柄,并返回至数据库代理服务;

65、接收预处理句柄,将所述预处理句柄存入预处理句柄池,并建立所述预处理句柄与所述目标逻辑库、所述转化结构化查询语言的对应关系;

66、将所述无占位符完整结构化查询语言携带的绑定参数传递给预处理句柄,将携带参数的预处理句柄下发至对应数据库,以使数据库匹配预处理句柄绑定的执行计划并带入绑定参数执行。

67、在一个可选的实施方式中,所述能力检测模块还用于:

68、在结构化查询语言未附带独立绑定参数的情况下,将结构化查询语言封装为预处理报文,并发送至数据库代理服务;

69、所述报文接收模块还用于:

70、接收所述业务系统经所述会话发送的预处理报文,并从所述预处理报文中解析出结构化查询语言;

71、所述语言执行模块还用于:

72、确定所述结构化查询语言要访问的目标逻辑库,以所述目标逻辑库与所述结构化查询语言为检索键,从预处理句柄池中匹配对应的预处理句柄;

73、若匹配到对应的预处理句柄,则将预处理句柄返回至业务系统;

74、接收业务系统所述会话发送的执行请求报文,并解析所述执行请求报文中携带的预处理句柄和绑定参数;

75、将绑定参数传递给预处理句柄,将携带参数的预处理句柄下发至对应数据库,以使数据库匹配预处理句柄绑定的执行计划并带入绑定参数执行。

76、在一个可选的实施方式中,语言执行模块还用于:

77、若未匹配到对应的预处理句柄,则将所述结构化查询语言发送至对应的数据库,使数据库生成匹配所述结构化查询语言的执行计划,创建与所述执行计划绑定的预处理句柄,并返回至数据库代理服务;

78、接收预处理句柄,将预处理句柄存入预处理句柄池,并建立预处理句柄与目标逻辑库、所述结构化查询语言的对应关系;

79、将预处理句柄返回至业务系统,接收业务系统所述会话发送的执行请求报文,并解析所述执行请求报文中携带的预处理句柄和绑定参数;

80、将绑定参数传递给预处理句柄,将携带参数的预处理句柄下发至对应数据库,以使数据库匹配预处理句柄绑定的执行计划并带入绑定参数执行。

81、在一个可选的实施方式中,所述语言执行模块具体用于:

82、确定所述结构化查询语言要访问的目标逻辑库和数据库表;

83、在预设白名单中检测到所述目标逻辑库和数据库表的情况下,对所述结构化查询语言进行规则匹配;

84、在所述结构化查询语言规则匹配成功的情况下,获取匹配规则绑定的优化提示;

85、将所述结构化查询语言进行语法适配,并与所述优化提示进行封装发送至对应的数据库执行。

86、在本技术实施例的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

87、存储器,用于存放计算机程序;

88、处理器,用于执行存储器上所存放的程序时,实现上述第一方面中任一所述的数据库访问控制方法。

89、在本技术实施例的第四方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面中任一所述的数据库访问控制方法。

90、在本技术实施例的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据库访问控制方法。

91、本技术实施例提供的技术方案,接收业务系统发起的携带有虚拟账号的连接认证请求,并校验虚拟账号的有效性,在虚拟账号的有效性校验成功的情况下,建立与业务系统的会话,并为会话绑定虚拟账号对应的权限策略,接收业务系统经会话发送的报文,并从报文中解析出结构化查询语言,根据权限策略对结构化查询语言进行访问校验,在访问校验通过的情况下,将结构化查询语言发送至对应的数据库执行。

92、本方案通过引入虚拟账号完成业务侧接入身份校验,并为每一会话绑定虚拟账号专属权限策略以对结构化查询语言实施访问校验,首先可规避多业务共用数据库真实账号的现状,无需业务侧存储、传递真实账号凭据,从源头减少真实账号散布泄露的风险;其次依托虚拟账号区分不同业务主体,能够基于各业务匹配独立权限策略实现数据访问边界隔离,落实最小权限管控要求,解决多业务共用账号带来的权限混淆问题;同时所有数据库访问行为均关联唯一虚拟账号与对应会话,后续发生异常操作时可通过虚拟账号反向定位对应业务主体,完整支撑数据操作溯源审计,弥补现有基于真实账号鉴权模式无法精细化区分业务、审计追溯困难的安全短板。