CN113127520B - 一种基于代理模式的分布式数据库sql审核拦截方法及装置 - Google Patents

一种基于代理模式的分布式数据库sql审核拦截方法及装置 Download PDF

Info

Publication number
CN113127520B
CN113127520B CN202110509145.4A CN202110509145A CN113127520B CN 113127520 B CN113127520 B CN 113127520B CN 202110509145 A CN202110509145 A CN 202110509145A CN 113127520 B CN113127520 B CN 113127520B
Authority
CN
China
Prior art keywords
unit
auditing
statement
database
audit
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.)
Active
Application number
CN202110509145.4A
Other languages
English (en)
Other versions
CN113127520A (zh
Inventor
肖永韧
程建敏
胡飞飞
徐真
朱明辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Telecom Corp Ltd Jiangxi Branch
Original Assignee
China Telecom Corp Ltd Jiangxi Branch
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Telecom Corp Ltd Jiangxi Branch filed Critical China Telecom Corp Ltd Jiangxi Branch
Priority to CN202110509145.4A priority Critical patent/CN113127520B/zh
Publication of CN113127520A publication Critical patent/CN113127520A/zh
Application granted granted Critical
Publication of CN113127520B publication Critical patent/CN113127520B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24564Applying rules; Deductive queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24549Run-time optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2462Approximate or statistical queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种基于代理模式的分布式数据库SQL审核拦截方法及装置,包括审核代理单元,语句审核判断单元,代理语句拦截单元,和代理语句透传单元等,将上述单元进行产品融合,最终实现用户可以通过常用数据库客户端执行分布式数据库操作时,保证不符合审核规范的语句无法在目标数据库执行,并按照数据库协议反馈违规内容。若符合规范则不拦截,代理节点将透传语句至目标分布式数据库,并反馈客户端其语句执行结果,整个过程对使用者来说是透明的。本次发明“零”嵌入、自动化运维,可极大的提升用户使用便捷性,提高软件项目SQL语句审核效率,并从根本上限制用户无法在目标数据库执行违规语句,从而保障分布式数据库的安全、稳定运行。

Description

一种基于代理模式的分布式数据库SQL审核拦截方法及装置
技术领域
本发明涉及数据库技术领域,具体为一种基于代理模式的分布式数据库SQL审核拦截方法及装置。
背景技术
随着企业推进数字化转型,越来越多企业由传统架构转向分布式云化架构,针对规模化多节点的分布式数据库的接入,不规范的数据库操作容易导致操作错误、事务响应超时、数据库故障等问题,直接影响整个应用的可用性。为了减少上述不良影响,在SQL语句在分布式数据库执行之前,需对SQL语句的规范性进行审核,对执行效率不佳或者不规范的语句及时进行拦截。目前常见的数据库审核SQL技术是一种基于工单、自定义执行命令、和自定义程序接口的审核模式,且主要是针对非分布式数据库的,一方面,该技术模式比较适合对数据库少量的操作,当遇到大批量、频繁的数据操作时,就会暴露其操作可用性短版,无法满足高频繁交互的场景需求,并且自定义交互模式,导致用户需要频繁切换或无法使用常用的数据库客户端;另一方面,基于原有审核模式,效率低,以最常用的inception为例,其每一条语句都需要建立一次审核短连接,提高了数据库连接开销,从而影响了数据库审核效率。
发明内容
本发明的目的在于提供一种基于代理模式的分布式数据库SQL审核拦截方法及装置,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于代理模式的分布式数据库SQL审核拦截装置,包括审核代理单元、语句审核判断单元、代理语句拦截单元、和代理语句透传单元,具体是指用户使用数据库客户端执行语句,通过审核代理单元接受客户端发送的数据库操作请求并进行解析,通过语句审核判断单元对代理单元获的得用户和SQL语句后对其进行审核判断,语句审核判断单元随着审核结果的判断,若不符合审核规范则接入代理语句拦截单元对客户端请求进行拦截,反馈违反的审核规范内容;若符合审核规范则接入代理透传单元,将客户端请求透传至目标分布式数据库,反馈客户端语句执行结果。
优选的,还包括代理节点配置管理单元,代理节点配置管理单元包括审核端口管理、审核用户管理、目标分布式数据库地址和端口、业务相关属性等;然后针对不同间的审核代理节点通过审核服务端进行审核规则配置管理,构建审核规则管理单元,审核代理节点通过监听服务端审核规则配置信息变化,对节点内配置信息进行同步;审核规则涵盖语句模型规范、语句性能限制,审核服务端其主要包括:审核代理配置管理单元、审核规则管理管理、审核记录单元;审核记录单元主要为用户提供审核记录快速检索和统计分析功能。
优选的,还包括审核规则管理单元,审核规则管理单元对应的规则对客户端操作的语句进行审核判断功能,构建审核判断单元,审核判断单元主要为审核代理节点提供能力,并主要针对兼容MySQL协议的分布式数据库,审核判断单元主要依托数据库代理端单元接受数据库客户端待执行的语句;并通过网络协议解析单元对所述待执行的语句进行解析和审核;若所述待执行语句符合规范,则透传语句至目标数据库并反馈查询结果至数据库客户端;若所述待执行语句不符合规范,则拦截所述待执行语句并反馈语句违规内容至数据库客户端,审核代理节点通过代理连接池和审核连接池提高代理审核能力。
优选的,审核判断单元将审核结果通过审核结果单元发送单元进行采集上报,将审核判断单元审核过的审核语句结果通过消息队里单元,基于消息中间件kafka接收存储,并基于流计算和多线程批量汇聚至集中全文检索数据库,构建统一存储及分析单元;存储及分析单元主要为审核结果单元服务,根据条件从存储及分析单元中查询出符合的结果集。
优选的,一种基于代理模式的分布式数据库SQL审核拦截装置的拦截方法,其特征在于:包括以下步骤:
S301、客户端连接单元是指客户端连接审核代理节点的一种方法,代理节点是基于Netty技术框架开发的一个高性能、异步事件驱动的NIO服务。用户能使用数据库常用客户端连接代理节点,并执行数据库相关操作;
S302、代理端接受数据库请求单元:该单元是构建了可扩缩容的代理节点集群服务,接收客户端发送的数据库操作请求;
S303、解析协议单元通过审核代理节点通基于零拷贝”技术复制数据库传输协议并基于数据库网络协议规则对其进行解析;
S304、获取用户名和SQL语句单元:该单元是通过审核代理节点基于数据库网络通讯交互协议来判断协议类型。协议类型为用户登录协议则获取执行用户名称;协议类型为退出或关闭协议则获取关闭用户;协议类型为语句执行协议则获取执行SQL语句;协议类型为数据库切换协议则获取语句执行数据库库名;其他协议则忽略,不处理;
S305、判断用户是否属于黑名单用户单元:该单元是根据审核逻辑,判断用户是否属于黑名单用户;若是,执行S311和S313,若否,执行S306;
S306、判断用户是否属于白名单用户单元:该单元是判断用户是否属于白名单用户;若是,执行S310和S311,若否,执行S307;
S307、判断SQL语句是否匹配正则忽略语句单元:该单元是通过正则表达式判断SQL语句是否属于白名单语句,若是,执行S310和S311,若否,执行S308;
S308、判断是否AI审核单元:该单元是判断是否AI审核单元,审核服务端配置AI审核规则,如语句执行次数是否超过10000次则触发审核,若否,执行S316。若是,执行S309;
S309、语句类型解析单元:该单元是基于druid开发的语句分析单元分析SQL语句执行类型和目标数据库类型,SQL语句执行类型有DML语句、DQL语句、DDL语句,针对分布式数据库,如MyCAT+MySQL、中国电信分布式数据库TeleDB,进行特殊规则审核;DML和DQL需进行explain分析其执行计划,分布式数据库使用route2分析,获取语句执行计划的最大扫描行数、是否使用索引、执行情况的描述和说明等信息;
S310、根据规则判断语句单元:该单元是对SQL进行AST抽象语法树分析,获取语句每个组件的含义,如select列表、where子句、排序字段、分组字段等。最终判断执行语句是否符合规范,如语句模型是否符合规范,语句影响性能是否符合规范等等,若符合规范,执行S311,若不符合规范,执行S315;
S311、透传语句单元:该单元是反馈客户端语句执行结果,通过代理节点将语句透传至目标数据库进行执行,并反馈执行结果至客户端,随后执行S312;
S312、审核结果发送单元:该单元是在审核拦截判断结束后,审核节点会将审核结果进行封装,发送至Kafka消息中间件,审核结果包含审核语句、审核状态、执行语句、时间、数据库用户、客户端IP等信息;
S313、审核结果存储及分析单元:该单元是通过批量消费Kafka消息中间审核结果数据,并以异步的形式将审核结果写入全文检索数据库作为最终存储,本单元是为后续的审核展示、审核查询提供数据基础,同时也是为了支持按照基于SQL空格分词为索引的形式进行快速检索;
S314、拒绝客户端连接单元:该单元提供主动端口客户端连接功能,是指若用户属于黑名单用户,则审核代理节点拒绝客户端连接;
S315、客户端报错单元:该单元是在SQL语句不符合审核规范是,按照数据库报错协议,将不符合规范的报错信息反馈至客户端。
与现有技术相比,本发明的有益效果是:
(1)本发明从用户使用便捷性、提高审核性能、功能融合创新三个方面进行优化提升;对比现有技术,本专利可提高用户使用便捷性,极大的简化审核操作。通过代理技术与数据库审核技术相融合的方式,实现数据库常用客户端连接代理节点,同时进行审核功能和查询功能。
(2)减少数据库连接开销,提高审核性能,通过代理连接池和审核连接池实现保持客户端长连接进行SQL审核加数据库操作的功能。
(3)本发明不仅支持高效的代理拦截,而且支持拦截规则自定义配置能力。
(4)本发明支持MySQL+MyCAT、中国电信分布式数据库TeleDB等分布式数据库。
(5)本发明更加侧重系统安全,不获取应用、组件的高级管理员权限,仅需查询权限即可进行审核功能。
(6)本发明无缝对接整个软件实施流程,保证软件项目内部SQL语句按照规范正确执行,实现SQL从事前、事中、事后的全流程审核管控,确保分布式数据库平稳运行。
(7)本发明支持SQL在线执行,审核未通过返回SQL修改建议。
(8)本发明审核分为同步审核和异步审核,同步审核主要针对线上运维,用于规范运维人员的SQL语句执行操纵,线上运维严格按照三级权限划分,只有审核通过的语句才能得到相应结果。运维人员的执行的所有语句,都将录入审核日志,形成审核报告;异步审核主要针对开发、测试环境,针对系统内部SQL,给开发人员提供SQL改进意见。
(9)本发明支持SQL审核统计可视化展现,统计所选时间范围内所有同步审核代理端的SQL语句审核记录。
(10)本发明部署扩容简单,支持容器化部署,使用量增大时,可以秒级扩容。
(11)本发明能够实现对SQL执行效率的预测和智能生成审核规则(如慢SQL执行频次少时不审核,执行频次预测多时形成高危SQL进行智能生成审核规则。
附图说明
图1为本发明结构示意图;
图2为本发明控制原理框图;
图3为本发明流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”“前端”、“后端”、“两端”、“一端”、“另一端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
请参阅图1-3,本发明提供一种技术方案:一种基于代理模式的分布式数据库SQL审核拦截装置,包括审核代理单元D001、语句审核判断单元D002、代理语句拦截单元D003、和代理语句透传单元D004,具体是指用户使用数据库客户端执行语句,通过审核代理单元D001接受客户端发送的数据库操作请求并进行解析,通过语句审核判断单元D002对代理单元获的得用户和SQL语句后对其进行审核判断,语句审核判断单元随着审核结果的判断,若不符合审核规范则接入代理语句拦截单元D003对客户端请求进行拦截,反馈违反的审核规范内容;若符合审核规范则接入代理透传单元D004,将客户端请求透传至目标分布式数据库,反馈客户端语句执行结果。
本发明还包括代理节点配置管理单元C009,代理节点配置管理单元C009包括审核端口管理、审核用户管理、目标分布式数据库地址和端口、业务相关属性等;然后针对不同间的审核代理节点通过审核服务端进行审核规则配置管理,构建审核规则管理单元C008,审核代理节点通过监听服务端审核规则配置信息变化,对节点内配置信息进行同步;审核规则涵盖语句模型规范、语句性能限制,审核服务端其主要包括:审核代理配置管理单元、审核规则管理管理、审核记录单元;审核记录单元主要为用户提供审核记录快速检索和统计分析功能。
本发明还包括审核规则管理单元C008,审核规则管理单元C008对应的规则对客户端操作的语句进行审核判断功能,构建审核判断单元C003,审核判断单元主要为审核代理节点提供能力,并主要针对兼容MySQL协议的分布式数据库,审核判断单元C003主要依托数据库代理端单元接受数据库客户端待执行的语句;并通过网络协议解析单元C002对所述待执行的语句进行解析和审核;若所述待执行语句符合规范,则透传语句至目标数据库并反馈查询结果至数据库客户端;若所述待执行语句不符合规范,则拦截所述待执行语句并反馈语句违规内容至数据库客户端,审核代理节点通过代理连接池和审核连接池提高代理审核能力。
本发明中,审核判断单元将审核结果通过审核结果单元发送单元C004进行采集上报,将审核判断单元审核过的审核语句结果通过消息队里单元C005,基于消息中间件kafka接收存储,并基于流计算和多线程批量汇聚至集中全文检索数据库,构建统一存储及分析单元;存储及分析单元主要为审核结果单元服务,根据条件从存储及分析单元中查询出符合的结果集。
一种基于代理模式的分布式数据库SQL审核拦截装置的拦截方法,其特征在于:包括以下步骤:
S301、客户端连接单元是指客户端连接审核代理节点的一种方法,代理节点是基于Netty技术框架开发的一个高性能、异步事件驱动的NIO服务。用户能使用数据库常用客户端连接代理节点,并执行数据库相关操作;
S302、代理端接受数据库请求单元:该单元是构建了可扩缩容的代理节点集群服务,接收客户端发送的数据库操作请求;
S303、解析协议单元通过审核代理节点通基于零拷贝”技术复制数据库传输协议并基于数据库网络协议规则对其进行解析;
S304、获取用户名和SQL语句单元:该单元是通过审核代理节点基于数据库网络通讯交互协议来判断协议类型。协议类型为用户登录协议则获取执行用户名称;协议类型为退出或关闭协议则获取关闭用户;协议类型为语句执行协议则获取执行SQL语句;协议类型为数据库切换协议则获取语句执行数据库库名;其他协议则忽略,不处理;
S305、判断用户是否属于黑名单用户单元:该单元是根据审核逻辑,判断用户是否属于黑名单用户;若是,执行S311和S313,若否,执行S306;
S306、判断用户是否属于白名单用户单元:该单元是判断用户是否属于白名单用户;若是,执行S310和S311,若否,执行S307;
S307、判断SQL语句是否匹配正则忽略语句单元:该单元是通过正则表达式判断SQL语句是否属于白名单语句,若是,执行S310和S311,若否,执行S308;
S308、判断是否AI审核单元:该单元是判断是否AI审核单元,审核服务端配置AI审核规则,如语句执行次数是否超过10000次则触发审核,若否,执行S316。若是,执行S309;
S309、语句类型解析单元:该单元是基于druid开发的语句分析单元分析SQL语句执行类型和目标数据库类型,SQL语句执行类型有DML语句、DQL语句、DDL语句,针对分布式数据库,如MyCAT+MySQL、中国电信分布式数据库TeleDB,进行特殊规则审核;DML和DQL需进行explain分析其执行计划,分布式数据库使用route2分析,获取语句执行计划的最大扫描行数、是否使用索引、执行情况的描述和说明等信息;
S310、根据规则判断语句单元:该单元是对SQL进行AST抽象语法树分析,获取语句每个组件的含义,如select列表、where子句、排序字段、分组字段等。最终判断执行语句是否符合规范,如语句模型是否符合规范,语句影响性能是否符合规范等等,若符合规范,执行S311,若不符合规范,执行S315;
S311、透传语句单元:该单元是反馈客户端语句执行结果,通过代理节点将语句透传至目标数据库进行执行,并反馈执行结果至客户端,随后执行S312;
S312、审核结果发送单元:该单元是在审核拦截判断结束后,审核节点会将审核结果进行封装,发送至Kafka消息中间件,审核结果包含审核语句、审核状态、执行语句、时间、数据库用户、客户端IP等信息;
S313、审核结果存储及分析单元:该单元是通过批量消费Kafka消息中间审核结果数据,并以异步的形式将审核结果写入全文检索数据库作为最终存储,本单元是为后续的审核展示、审核查询提供数据基础,同时也是为了支持按照基于SQL空格分词为索引的形式进行快速检索;
S314、拒绝客户端连接单元:该单元提供主动端口客户端连接功能,是指若用户属于黑名单用户,则审核代理节点拒绝客户端连接;
S315、客户端报错单元:该单元是在SQL语句不符合审核规范是,按照数据库报错协议,将不符合规范的报错信息反馈至客户端。
其中,SQL语句AI审核,包括如下功能:
1、能够实现对SQL执行效率的预测和智能生成审核规则(如慢SQL执行频次少时不审核,执行频次预测多时形成高危SQL进行智能生成审核规则)。
2、特征嵌入
将模型不可读的TEXT格式转换为可读的数字格式:SQL语句使用tf-idf(词频逆文档频)转化;执行计划使用素数编码转化;统计信息和绑定变量直接并入矩阵。
3、信息压缩+特征提取
4、对SQL的执行时长和频次进行预测
5、使用线性回归对SQL的执行时长和频次进行预测,时长超过阈值设置则不通过,慢SQL执行频次达到一定阀值则进行智能拦截。
第5方面,应用版本升级前后SQL比对:
1、实现对应用升级前后的版本SQL进行比对,找出版本前后差异SQL进行风险预判
1)该功能主要由采集汇聚层、应用能力层、应用管理模块和分布式组件运维管理模块,
2)采集汇聚层通过SQL审核保存的在消息中间件的版本前后SQL进行采集。
3)应用能力层的日志消费程序对消息中间件里的采集数据消费,清洗模块对数据进行清洗,分析模块对数据进行分析,得出版本前后SQL的统计数据。
4)应用管理模块和分布式组件运维管理模块采用流程化管控机制,程序自动对语句进行分析并且分析出版本前后差异SQL和高风险SQL,并给出优化建议。
5)分布式组件运维管理(组件侧)模块对程序的对差异SQL和高风险SQL进行预警
6、对差异SQL和高风险SQL进行优化后,提交给应用管理模块(应用侧)进行处理,应用处理后在应用管理模块对语句进行监控,关闭处理。
本专利可以用于软件建模阶段,数据库建模阶段,由业务DBA使用常用数据库客户端连接SQL审核代理节点执行建模语句,审核规则参照【技术方案-具体实施审核规则】中的DDL相关规则,进行建模语句审核,业务DBA根据违反规则提示,修正建模语句,直至全量负责审核规则后,审核代理端通过代理语句透传单元透传建模至分布式数据库执行。
本专利可以用于软件研发流程中的测试(上线前)阶段,应用程序不再连接分布式数据库,而是通过连接目标分布式数据库的审核代理节点,每次功能测试完成后,通过审核管理端的审核结果单元可以汇总分析得到SQL审核报告和每一条审核结果,主要包括:测试相关信息、审核违规语句占比、人工干预占比、违反规则占比和违规语句TOP10,最终的审核报告可以作为应用上线前的参考条件,保障应用系统代码执行稳定、符合生产执行规范。
本专利可以用于运维阶段运维人员进行生产数据库运维操作,运维人员不再直连生产分布式数据库,而是通过让数据库客户端连接审核代理节点执行运维SQL语句,审核代理节点会审核运维SQL语句,并根据审核结果反馈查询结果或违规信息,保障生产数据库安全稳定。
本专利可以用于生产应急应用上线阶段,应急补丁包通过审核代理节点连接生产分布式数据库,审核代理端基于【技术方案-具体实施审核规则】中的DML、DQL相关规则有效拦截应用的违规操,避免应用应急补丁BUG导致数据或者数据库异常,耗尽生产数据库资源。
综上所述,本发明的有益效果是:
(1)本发明从用户使用便捷性、提高审核性能、功能融合创新三个方面进行优化提升;对比现有技术,本专利可提高用户使用便捷性,极大的简化审核操作。通过代理技术与数据库审核技术相融合的方式,实现数据库常用客户端连接代理节点,同时进行审核功能和查询功能。
(2)减少数据库连接开销,提高审核性能,通过代理连接池和审核连接池实现保持客户端长连接进行SQL审核加数据库操作的功能。
(3)本发明不仅支持高效的代理拦截,而且支持拦截规则自定义配置能力。
(4)本发明支持MySQL+MyCAT、中国电信分布式数据库TeleDB等分布式数据库。
(5)本发明更加侧重系统安全,不获取应用、组件的高级管理员权限,仅需查询权限即可进行审核功能。
(6)本发明无缝对接整个软件实施流程,保证软件项目内部SQL语句按照规范正确执行,实现SQL从事前、事中、事后的全流程审核管控,确保分布式数据库平稳运行。
(7)本发明支持SQL在线执行,审核未通过返回SQL修改建议。
(8)本发明审核分为同步审核和异步审核,同步审核主要针对线上运维,用于规范运维人员的SQL语句执行操纵,线上运维严格按照三级权限划分,只有审核通过的语句才能得到相应结果。运维人员的执行的所有语句,都将录入审核日志,形成审核报告;异步审核主要针对开发、测试环境,针对系统内部SQL,给开发人员提供SQL改进意见。
(9)本发明支持SQL审核统计可视化展现,统计所选时间范围内所有同步审核代理端的SQL语句审核记录。
(10)本发明部署扩容简单,支持容器化部署,使用量增大时,可以秒级扩容。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

Claims (2)

1.一种基于代理模式的分布式数据库SQL审核拦截装置,其特征在于:包括审核代理单元(D001)、语句审核判断单元(D002)、代理语句拦截单元(D003)、和代理语句透传单元(D004),具体是指用户使用数据库客户端执行语句,通过审核代理单元(D001)接受客户端发送的数据库操作请求并进行解析,通过语句审核判断单元(D002)对代理单元获的得用户和SQL语句后对其进行审核判断,语句审核判断单元随着审核结果的判断,若不符合审核规范则接入代理语句拦截单元(D003)对客户端请求进行拦截,反馈违反的审核规范内容;若符合审核规范则接入代理透传单元(D004),将客户端请求透传至目标分布式数据库,反馈客户端语句执行结果;
还包括代理节点配置管理单元(C009),代理节点配置管理单元(C009)包括审核端口管理、审核用户管理、目标分布式数据库地址和端口、业务相关属性;然后针对不同间的审核代理节点通过审核服务端进行审核规则配置管理,构建审核规则管理单元(C008),审核代理节点通过监听服务端审核规则配置信息变化,对节点内配置信息进行同步;审核规则涵盖语句模型规范、语句性能限制,审核服务端其包括:审核代理配置管理单元、审核规则管理管理、审核记录单元;审核记录单元为用户提供审核记录快速检索和统计分析功能;
还包括审核规则管理单元(C008),审核规则管理单元(C008)对应的规则对客户端操作的语句进行审核判断功能,构建审核判断单元(C003),审核判断单元为审核代理节点提供能力,并针对兼容MySQL协议的分布式数据库,审核判断单元(C003)依托数据库代理端单元接受数据库客户端待执行的语句;并通过网络协议解析单元(C002)对所述待执行的语句进行解析和审核;若所述待执行语句符合规范,则透传语句至目标数据库并反馈查询结果至数据库客户端;若所述待执行语句不符合规范,则拦截所述待执行语句并反馈语句违规内容至数据库客户端,审核代理节点通过代理连接池和审核连接池提高代理审核能力;
审核判断单元将审核结果通过审核结果单元发送单元(C004)进行采集上报,将审核判断单元审核过的审核语句结果通过消息队里单元(C005),基于消息中间件kafka接收存储,并基于流计算和多线程批量汇聚至集中全文检索数据库,构建统一存储及分析单元;存储及分析单元为审核结果单元服务,根据条件从存储及分析单元中查询出符合的结果集。
2.一种基于代理模式的分布式数据库SQL审核拦截装置的拦截方法,包括以下步骤:
S301、客户端连接单元是指客户端连接审核代理节点的一种方法,代理节点是基于Netty技术框架开发的一个高性能、异步事件驱动的NIO服务,用户能使用数据库常用客户端连接代理节点,并执行数据库相关操作;
S302、代理端接受数据库请求单元:该单元是构建了可扩缩容的代理节点集群服务,接收客户端发送的数据库操作请求;
S303、解析协议单元通过审核代理节点通基于零拷贝技术复制数据库传输协议并基于数据库网络协议规则对其进行解析;
S304、获取用户名和SQL语句单元:该单元是通过审核代理节点基于数据库网络通讯交互协议来判断协议类型,协议类型为用户登录协议则获取执行用户名称;协议类型为退出或关闭协议则获取关闭用户;协议类型为语句执行协议则获取执行SQL语句;协议类型为数据库切换协议则获取语句执行数据库库名;其他协议则忽略,不处理;
S305、判断用户是否属于黑名单用户单元:该单元是根据审核逻辑,判断用户是否属于黑名单用户;若是,执行S311和S313,若否,执行S306;
S306、判断用户是否属于白名单用户单元:该单元是判断用户是否属于白名单用户;若是,执行S310和S311,若否,执行S307;
S307、判断SQL语句是否匹配正则忽略语句单元:该单元是通过正则表达式判断SQL语句是否属于白名单语句,若是,执行S310和S311,若否,执行S308;
S308、判断是否AI审核单元:该单元是判断是否AI审核单元,审核服务端配置AI审核规则,如语句执行次数是否超过10000次则触发审核,若否,执行S316,若是,执行S309;
S309、语句类型解析单元:该单元是基于druid开发的语句分析单元分析SQL语句执行类型和目标数据库类型,SQL语句执行类型有DML语句、DQL语句、DDL语句,针对分布式数据库,进行特殊规则审核;DML和DQL需进行explain分析其执行计划,分布式数据库使用route2分析,获取语句执行计划的最大扫描行数、是否使用索引、执行情况的描述和说明信息;
S310、根据规则判断语句单元:该单元是对SQL进行AST抽象语法树分析,获取语句每个组件的含义,最终判断执行语句是否符合规范,若符合规范,执行S311,若不符合规范,执行S315;
S311、透传语句单元:该单元是反馈客户端语句执行结果,通过代理节点将语句透传至目标数据库进行执行,并反馈执行结果至客户端,随后执行S312;
S312、审核结果发送单元:该单元是在审核拦截判断结束后,审核节点会将审核结果进行封装,发送至Kafka消息中间件,审核结果包含审核语句、审核状态、执行语句、时间、数据库用户、客户端IP信息;
S313、审核结果存储及分析单元:该单元是通过批量消费Kafka消息中间审核结果数据,并以异步的形式将审核结果写入全文检索数据库作为最终存储,本单元是为后续的审核展示、审核查询提供数据基础,同时也是为了支持按照基于SQL空格分词为索引的形式进行快速检索;
S314、拒绝客户端连接单元:该单元提供主动端口客户端连接功能,是指若用户属于黑名单用户,则审核代理节点拒绝客户端连接;
S315、客户端报错单元:该单元是SQL语句不符合审核规范,按照数据库报错协议,将不符合规范的报错信息反馈至客户端。
CN202110509145.4A 2021-05-11 2021-05-11 一种基于代理模式的分布式数据库sql审核拦截方法及装置 Active CN113127520B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110509145.4A CN113127520B (zh) 2021-05-11 2021-05-11 一种基于代理模式的分布式数据库sql审核拦截方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110509145.4A CN113127520B (zh) 2021-05-11 2021-05-11 一种基于代理模式的分布式数据库sql审核拦截方法及装置

Publications (2)

Publication Number Publication Date
CN113127520A CN113127520A (zh) 2021-07-16
CN113127520B true CN113127520B (zh) 2023-07-21

Family

ID=76781401

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110509145.4A Active CN113127520B (zh) 2021-05-11 2021-05-11 一种基于代理模式的分布式数据库sql审核拦截方法及装置

Country Status (1)

Country Link
CN (1) CN113127520B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113918996B (zh) * 2021-11-24 2024-03-26 企查查科技股份有限公司 分布式数据处理方法、装置、计算机设备和存储介质
CN114265859B (zh) * 2021-12-20 2022-09-02 上海爱可生信息技术股份有限公司 一种通过增强数据库驱动实现语句审核的方法
CN116599877B (zh) * 2023-07-19 2023-09-15 国家计算机网络与信息安全管理中心江西分中心 一种基于爬虫技术的IPv6的链接测试方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103259798A (zh) * 2013-05-21 2013-08-21 浪潮集团山东通用软件有限公司 一种与Webservice交互过程动态加密和校验的方法
CN104391995A (zh) * 2014-12-15 2015-03-04 北京趣拿软件科技有限公司 一种sql语句审核的方法、数据库运维的方法及系统
CN108647300A (zh) * 2018-05-09 2018-10-12 携程旅游信息技术(上海)有限公司 数据库访问中间系统、方法、设备及存储介质
CN108876283A (zh) * 2018-04-27 2018-11-23 淘然视界(杭州)科技有限公司 一种自动审核系统及方法
CN110263054A (zh) * 2019-05-30 2019-09-20 世纪龙信息网络有限责任公司 Sql工单的审核系统、审核方法、装置及计算机设备
CN111695152A (zh) * 2020-05-26 2020-09-22 东南大学 一种基于安全代理的MySQL数据库防护方法
CN112099806A (zh) * 2020-11-05 2020-12-18 四川新网银行股份有限公司 一种基于CICD的sql自动化审核上线及执行方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170104756A1 (en) * 2015-10-13 2017-04-13 Secupi Security Solutions Ltd Detection, protection and transparent encryption/tokenization/masking/redaction/blocking of sensitive data and transactions in web and enterprise applications

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103259798A (zh) * 2013-05-21 2013-08-21 浪潮集团山东通用软件有限公司 一种与Webservice交互过程动态加密和校验的方法
CN104391995A (zh) * 2014-12-15 2015-03-04 北京趣拿软件科技有限公司 一种sql语句审核的方法、数据库运维的方法及系统
CN108876283A (zh) * 2018-04-27 2018-11-23 淘然视界(杭州)科技有限公司 一种自动审核系统及方法
CN108647300A (zh) * 2018-05-09 2018-10-12 携程旅游信息技术(上海)有限公司 数据库访问中间系统、方法、设备及存储介质
CN110263054A (zh) * 2019-05-30 2019-09-20 世纪龙信息网络有限责任公司 Sql工单的审核系统、审核方法、装置及计算机设备
CN111695152A (zh) * 2020-05-26 2020-09-22 东南大学 一种基于安全代理的MySQL数据库防护方法
CN112099806A (zh) * 2020-11-05 2020-12-18 四川新网银行股份有限公司 一种基于CICD的sql自动化审核上线及执行方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Proof of Violation for Trust and Accountability of Cloud Database Systems;Gwan-Hwan Hwang 等;《2016 16th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid)》;20160721;425-433 *
基于Android的SQLite数据库诊断工具的设计和实现;黄斯锋;《中国优秀硕士学位论文全文数据库信息科技辑》;20180115(第1期);I138-750 *

Also Published As

Publication number Publication date
CN113127520A (zh) 2021-07-16

Similar Documents

Publication Publication Date Title
CN113127520B (zh) 一种基于代理模式的分布式数据库sql审核拦截方法及装置
CN111526060B (zh) 业务日志的处理方法及系统
CN108667725A (zh) 一种基于多种接入及边缘计算的工业软网关以及实现方法
CN103546343B (zh) 网络流量分析系统的网络流量展示方法和系统
EP2244418A1 (en) Database security monitoring method, device and system
CN102932195B (zh) 一种基于网络协议分析的业务分析监控方法及系统
US20110191394A1 (en) Method of processing log files in an information system, and log file processing system
CN105119757A (zh) 一种企业服务器运维自动化的方法与系统
US20040181541A1 (en) Relational model for management information in network devices
CN108270640B (zh) 一种智能营配信息集成系统信息互操作一致性测试方法
CN108710566B (zh) 一种配电调度主站集成测试系统及方法
CN114039792B (zh) 一种数据访问权限控制方法、装置、设备及可读存储介质
CN102929224A (zh) 变电设备状态接入控制器及系统控制方法
CN107463490B (zh) 一种应用于平台开发中的集群日志集中收集方法
CN109831316A (zh) 海量日志实时分析系统、实时分析方法及可读存储介质
CN111125450A (zh) 一种多层拓扑网络资源对象的管理方法
CN114090529A (zh) 一种日志管理方法、装置、系统和存储介质
CN113608952A (zh) 一种基于日志构建支持环境的系统故障处理方法及系统
CN112258015A (zh) 一种基于云数据分析的实验室管理预警系统及其预警方法
CN203101932U (zh) 变电设备状态接入控制器
CN107045542A (zh) 数据查询系统及查询方法
CN114167181A (zh) 监测本地和异地线路故障溯源的方法及系统
CN113342890A (zh) 一种实现跨安全隔离网闸数据库实时同步的方法及系统
CN110515955A (zh) 数据的存储、查询方法、系统、电子设备和存储介质
CN114039965B (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
GR01 Patent grant
GR01 Patent grant