一种基于http协议控制关系型数据库事务代理工具及方法技术

技术编号:38195430 阅读:15 留言:0更新日期:2023-07-20 21:16
本发明专利技术公开了一种基于http协议控制关系型数据库事务代理工具及方法,代理工具基于python开发而来,并采用JWT技术实现权限认证,支持执行多种查询sql以及DML语句,同时具备黑白名单、请求限流、幂等校验、sql审计等功能;通过本发明专利技术提出的代理工具进行基于http协议控制关系型数据库事务代理,解决了第三方操作数据库的安全问题及无法多次http请求无法控制同一数据库事务的问题,对第三方开放数据库代理工具账号即可满足第三方操作数据库的需求,可对第三方操作数据的sql以及操作日志进行审计,提高了第三方操作生产数据库的安全性。提高了第三方操作生产数据库的安全性。提高了第三方操作生产数据库的安全性。

【技术实现步骤摘要】
一种基于http协议控制关系型数据库事务代理工具及方法


[0001]本专利技术涉及数据库
,尤其涉及一种基于http协议控制关系型数据库事务代理工具及方法。

技术介绍

[0002]随着国家数字化转型进程的加速推进,对数据进行开发利用需求越来越多。对数据的利用也不仅仅局限于生产他们的系统,更或不局限于开发这套系统的厂商。在G端或B端,很多场景是业务系统是一家厂商,数据应用是另外一家厂商。负责数据应用的厂商在实施时必然要操作业务系统的数据库,此时就会存在很多问题,如果直接暴露数据库账号给数据厂商,由于数据厂商对业务系统并不十分熟悉,并且直接操作数据库无法对操作行为进行记录以及审计,因此直接操作业务系统数据库必然会存在较大风险。
[0003]如果由业务系统直接暴露api给数据厂商,不仅会增加很多协调工作,同时会增加项目成本(业务系统大都只提供收费api,因为开发api也要投入成本),并且数据应用的需求是非常不固定,几乎每次迭代都会产生很多需求,如果每个数据操作都要业务系统提供api,数据项目基本就宣告失败。

技术实现思路

[0004]为解决上述直接操作业务数据库风险较大的问题,本专利技术提出了一种基于http协议控制关系型数据库事务代理工具及方法。
[0005]第一方面,一种基于http协议控制关系型数据库事务代理方法,客户端处理后传入服务端进行处理,在请求代理服务之前,将SQL、SQL的MD5、用户名以及密码通过签名算法生成本地签名,代理服务包括:查询SQL请求:向服务端传入SQL以及本地签名;同一事务单个http请求:所有DML语句在一个http请求完成,向服务端传入DML语句列表以及本地签名,服务端自动控制数据库事务;同一事务多个http请求:多个DML语句通过http请求完成,除DML语句以及本地签名外还需向服务端传入:是否启动人工事务控制、事务id,开启事务时分配的id、是否提交事务及是否回滚事务。
[0006]进一步,所述服务端进行处理时,先解析本地签名,提取出SQL、SQL的MD5以及用户名密码的哈希值,还包括以下权限校验操作:用户合法性校验:通过用户名密码的哈希值进行用户的合法性校验;SQL MD5值校验:将解析出来的SQL计算出的MD5值与用户传进来的MD5值进行比较;限流校验:若该用户的请求在redis里面存在限流标志,则将请求拦截;幂等校验:只针对DML语句,当该DML首次执行时,以该DML语句的MD5值在redis创建一个有效期为3600s的数据,当通过DML的MD5值查到数据时则拦截;
SQL审计:审核语句是否包含ALTER、DROP、TRUNCATE、CREATE等危险操作,如果存在则拦截。
[0007]进一步,所述服务端解析前端请求参数后依次进行各项权限校验操作,校验顺序为:用户合法性校验、SQL MD5值校验、限流校验、幂等校验、SQL审计;若所有权限校验均通过,则SQL执行流程将结果返回至客户端;若任意权限校验不通过,则中断校验过程直接向客户端返回结果。
[0008]进一步,所述服务端各权限校验还包括:权限校验通过后,执行查询SQL,得到结果归集后记录日志。
[0009]进一步,所述同一事务单个http请求具体包括:权限校验通过后,自动创建数据库事务,并循环执行列表里面的DML语句;每次执行完记录日志,若某一条DML语句执行失败,自动回滚事务,并记录日志;所有DML语句成功执行后,自动提交事务。
[0010]进一步,所述同一事务多个http请求具体包括:权限校验通过后,检查请求是否包含事务id,没有包含则表示需要开启新的事务,然后为该事务分配一个uuid,并以uuid为钥匙key将事务保存至系统启动时创建的事务DICT里面;执行列表的DML,执行完成后将执行结果以及事务id返回给客户端;若包含事务id,则表示事务已经开启,通过事务id在事务DICT里面找到对应事务并执行列表里面DML,执行完成后,检查是否提交事务以及是否回滚事务,并根据相应值进行事务提交或回滚,如果没有这两项,则不做处理。
[0011]另一方面,一种基于http协议控制关系型数据库事务代理工具,用于实现基于http协议控制关系型数据库事务代理方法,所述代理工具基于python开发而来,http通过FastAPI框架实现,采用JWT技术实现权限认证。
[0012]进一步,所述代理工具支持执行Oracle、MySQL、SqlServer、Postgresql的查询SQL以及DML语句。
[0013]本专利技术的有益效果:本专利技术提出了一种基于http协议控制关系型数据库事务代理工具及方法,代理工具基于python开发而来,http通过FastAPI框架实现,并采用JWT技术实现权限认证,支持执行Oracle、MySQL、SqlServer、Postgresql的查询sql以及DML语句,同时具备黑白名单、请求限流、幂等校验、sql审计等功能;通过本专利技术提出的代理工具进行基于http协议控制关系型数据库事务代理,解决了第三方操作数据库的安全问题及无法多次http请求无法控制同一数据库事务的问题,对第三方开放数据库代理工具账号即可满足第三方操作数据库的需求,而不用直接开放数据库账号,可对第三方操作数据的sql以及操作日志进行审计,极大提高了第三方操作生产数据库的安全性。
附图说明
[0014]图1是本专利技术一种基于http协议控制关系型数据库事务代理方法客户端流程图图;图2是本专利技术一种基于http协议控制关系型数据库事务代理方法权限校验流程图;
图3是本专利技术一种基于http协议控制关系型数据库事务代理方法查询SQL执行流程图;图4是本专利技术一种基于http协议控制关系型数据库事务代理方法同一事务单个http请求流程图;图5是本专利技术一种基于http协议控制关系型数据库事务代理方法同一事务多个http请求流程图。
具体实施方式
[0015]为了对本专利技术的技术特征、目的和效果有更加清楚的理解,现对照附图说明本专利技术的具体实施方式。
[0016]本专利技术提出了一种基于http协议控制关系型数据库事务代理工具及方法,第一方面,一种基于http协议控制关系型数据库事务代理方法,如图1所示,客户端处理后传入服务端进行处理,在请求代理服务之前,将SQL、SQL的MD5、用户名以及密码通过签名算法生成本地签名,代理服务包括:查询SQL请求:向服务端传入SQL以及本地签名;同一事务单个http请求:所有DML语句在一个http请求完成,向服务端传入DML语句列表以及本地签名,服务端自动控制数据库事务;同一事务多个http请求:多个DML语句通过http请求完成,除DML语句以及本地签名外还需向服务端传入:是否启动人工事务控制、事务id,开启事务时分配的id、是否提交事务及是否回滚事务。
[0017]服务端进行处理时,先解析本地签名,提取出SQL、SQL的MD5以及用户名密码的哈希值,还包括以下权限校验操作:用户合法性校验:通过用户名密码的哈本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于http协议控制关系型数据库事务代理方法,其特征在于,客户端处理后传入服务端进行处理,在请求代理服务之前,将SQL、SQL的MD5、用户名以及密码通过签名算法生成本地签名,代理服务包括:查询SQL请求:向服务端传入SQL以及本地签名;同一事务单个http请求:所有DML语句在一个http请求完成,向服务端传入DML语句列表以及本地签名,服务端自动控制数据库事务;同一事务多个http请求:多个DML语句通过http请求完成,除DML语句以及本地签名外还需向服务端传入:是否启动人工事务控制、事务id,开启事务时分配的id、是否提交事务及是否回滚事务。2.根据权利要求1所述的一种基于http协议控制关系型数据库事务代理方法,其特征在于,所述服务端进行处理时,先解析本地签名,提取出SQL、SQL的MD5以及用户名密码的哈希值,还包括以下权限校验操作:用户合法性校验:通过用户名密码的哈希值进行用户的合法性校验;SQL MD5值校验:将解析出来的SQL计算出的MD5值与用户传进来的MD5值进行比较;限流校验:若该用户的请求在redis里面存在限流标志,则将请求拦截;幂等校验:只针对DML语句,当该DML首次执行时,以该DML语句的MD5值在redis创建一个有效期为3600s的数据,当通过DML的MD5值查到数据时则拦截;SQL审计:审核语句是否包含ALTER、DROP、TRUNCATE、CREATE等危险操作,如果存在则拦截。3.根据权利要求2所述的一种基于http协议控制关系型数据库事务代理方法,其特征在于,所述服务端解析前端请求参数后依次进行各项权限校验操作,校验顺序为:用户合法性校验、SQL MD5值校验、限流校验、幂等校验、SQL审计;若所有权限校验均通过,则SQL执行流程将结果返回至客户端;若任意权限校验不通过,则中断...

【专利技术属性】
技术研发人员:谢进
申请(专利权)人:成都房联云码科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1