本发明涉及数据安全领域,尤其涉及一种数据库访问系统及方法。
背景技术:
当前很多应用都需要数据库存储应用在运行过程中产生的数据,当应用需要在数据中存储数据或者通过数据库查询数据时,需要先连接到数据库中。
现有技术中,都是通过人工持有密码的方式直接连接数据库,对数据库进行访问,但是这种情况,容易造成密码泄露,数据库访问的安全性差。
技术实现要素:
有鉴于此,本发明实施例公开了一种数据库访问系统及方法,解决了现有技术中密码容易泄露、数据库访问的安全性差的问题。
本发明实施例公开了一种数据库访问系统,包括:
密码管理装置、密码管理agent、hook模块;
所述密码管理装置,用于设置应用的访问密码,并将所述访问密码发送给所述密码管理agent,以使所述密码管理agent保存所述访问密码;
所述hook模块,用于当hook模块监测到应用触发了访问数据库的事件时,解析所述应用对应的访问数据,并向密码管理agent发送访问密码查询请求;所述访问数据为所述应用访问所述数据库所需的数据;
所述密码管理agent,用于在接收到hook模块发送的访问密码的查询请求后,查询应用的访问密码,并将查询结果发送给所述应用。
可选的,所述密码管理装置,包括:
密码修改单元,用于修改任意一个应用的访问密码。
可选的,所述密码管理agent包括:
认证单元,用于当启动所述密码管理agent时,向所述密码管理装置发送认证请求;
应用检查单元,用于在所述密码管理agent向所述密码管理装置认证成功的情况下,依据预设的配置文件确定需要管理的应用;所述配置文件中包含需要管理的应用;
hook模块注入单元,用于向所述需要管理的应用注入hook模块以及所述hook模块对应的第二授权码。
可选的,所述密码管理agent还包括:
密码保存单元,用于接收密码修改单元发送的修改后的访问密码,并保存;
密码发送单元,用于将接收到的修改后的访问密码发送给所述hook模块。
查询单元,用于在接收到hook模块发送的访问密码查询指令时,依据访问数据查询访问密码。
可选的,所述hook模块,包括:
监测模块,用于监测应用是否触发了访问数据库的事件;
解析模块,用于在监测到应用触发了访问数据库的事件时,解析所述应用对应的访问数据;
发送模块,用于将所述访问数据发送给所述密码管理agent;
密码替换模块,用于将查询到的访问密码替换历史访问密码。
本发明实施例公开了一种数据库访问方法,所述方法应用于所述数据库密码管理系统,包括:
当hook模块监测到应用触发了访问数据库的事件时,解析所述应用对应的访问数据;所述访问数据为所述应用访问所述数据库所需的数据;
将所述访问数据发送给密码管理agent;
密码管理agent依据所述访问数据查询访问密码;
密码管理agent将所述访问密码发送给所述应用,以使所述应用依据所述访问密码访问所述数据库。
可选的,还包括:
密码管理agent验证所述应用是否具有密码查询权限;
在所述应用具有密码查询权限的情况下,密码管理agent依据所述访问数据查询访问密码。
可选的,所述访问数据包括:数据库ip、用户名、hook模块的第二授权码。
可选的,所述密码管理agent验证所述应用是否具有密码查询权限,包括:
密码管理agent判断第二授权码的合法性;
若所述第二授权码合法,表示所述应用具有密码查询权限。
可选的,还包括:
当所述密码管理agent启动时,向密码管理装置发送认证请求;
在认证通过后根据预先配置的文件确定需要管理的应用;
在需要管理的应用中注入hook模块,并将所述hook模块对应的授权码发送给所述需要管理的应用。
可选的,还包括:
当密码管理装置修改了任意一个应用的访问密码后,将修改后的密码发送给所述密码管理agent;
所述密码管理agent保存访问密码修改后的访问密码,并将修改后的访问密码发送给所述hook模块。
可选的,所述依据所述访问数据查询访问密码,包括:密码管理agent判断是否存在所述访问数据对应的访问密码;
若不包含所述访问密码,将所述访问数据发送给所述密码管理装置;
所述密码管理装置依据所述访问数据查询访问密码;
所述密码管理装置将查询到的所述访问密码发送给密码管理agent。
可选的,还包括:
在所述应用查询到访问密码后,将查询到的访问密码替换历史访问密码;所述历史访问密码为上一次访问数据库使用的访问密码。
本发明实施例公开了一种数据库访问系统及方法,该系统包括:密码管理装置、密码管理agent、hook模块;具体的,通过密码管理agent管理应用的访问密码,并且在应用中注入hook模块;在hook模块检测到应用触发了访问数据库的事件时,解析应用对应的访问数据,并将该访问数据发送给密码管理agent,通过密码管理agent查询该应用的访问密码,并将该访问密码发送给该应用,该应用依据查询到的访问密码访问数据库。由此可知,通过密码管理agent对应用的访问密码进行管理,并且通过hook模块截取应用连接数据库时的访问数据,查询访问数据库所需的访问密码,这样,无需人工持有密码,提高了数据库访问的安全性。
并且,通过密码管理agent对应用的访问密码进行管理,在密码管理装置修改了应用的访问密码后,无需调用不同的api将访问密码发送给不同的应用,这样无需开发每个应用适配的api,降低了开发人员的工作量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本发明实施例提供的一种数据库密码管理方法的流程示意图;
图2示出了本发明实施例提供的一种数据库密码管理方法的又一流程示意图;
图3示出了本发明实施例提供的一种数据库访问方法的流程示意图;
图4示出了本发明实施例提供的一种数据库访问方法的和交出示意图;
图5示出了本发明实施例提供的一种数据库访问装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参考图1,示出了本发明实施例提供的一种数据库访问方法的流程示意图,在本实施例中,该方法包括:
其中,该方法应用于数据库密码管理系统,该系统包括:
密码管理装置、密码管理agent和hook模块;
应用上述系统可以实现如下的多个功能:
实施例一:
密码管理agent的应用:
s101:当所述密码管理agent启动时,向密码管理装置发送认证请求;
若密码管理agent首次认证,密码管理装置对密码管理agent进行授权;
授权的过程可以包括:设置密码管理agent的管理查询密码的权限,设置后向密码管理agent发送第一授权码;
在密码管理agent为非首次认证的情况下,密码管理agent向密码管理装置发送第一授权码进行认证;
若密码管理装置检测到与所述授权码匹配的第一授权码,则表示认证通过;
否则,若密码管理装置未检测到与所述授权码匹配的第一授权码,则表示认证失败。
s102:在认证通过后根据预先配置的文件确定需要管理的应用;
其中,配置文件中包含密码管理agent需要管理的应用,在密码管理agent认证通过后,通过读取预先配置的文件检测需要管理的应用。
s103:在需要管理的应用中注入hook模块,并将所述hook模块对应的授权码发送给所述需要管理的应用。
在密码管理agent确定出需要管理的应用后,向这些需要管理的应用中注入hook模块。
密码管理agent将hook模块注入到密码管理装置时,为了保证密码查询的安全性,还需要向应用发送hook模块的第二授权码,该第二授权码在应用通过hook向密码管理agent查询访问密码时使用。
其中,hook为用于截取消息的钩子,在本实施例中,截取应用在访问数据库时所需的相关访问信息,并将截取到的相关访问信息发送给密码管理agent。
实施例二:
密码管理装置的改密功能
s201:当密码管理装置修改了任意一个应用的访问密码后,将修改后的密码发送给所述密码管理agent;
s202:所述密码管理agent保存访问密码修改后的访问密码,并将修改后的访问密码发送给所述hook模块。
现有技术中,密码管理装置在修改了某个应用的访问密码后,需要将访问密码发送给该应用,由于应用不同,发送方式不同,不同的应用需要调用不同的api。本实施例为了解决上述问题,无需将修改后的密码发送给应用,将修改后的密码发送给密码管理agent,待应用需要使用访问密码对数据库进行访问时,再通过密码管理agent查询访问密码。
并且,在密码管理agent出现故障的情况下,应用无法从密码管理agent获取到密码,但是为了不影响应用对数据库的访问,在密码管理装置修改了访问密码后,密码管理agent不仅要对修改后的访问密码进行保存,还需要将修改后的访问密码发送给hook模块。这样在密码管理agent出现故障时,应用可以从相应的hook模块中获取到访问密码,从而实现对数据库的访问。
密码管理agent在接收到密码管理装置发送的访问密码后,将访问密码刷新到内存,为了保证访问密码的安全性,还可以对保存的访问密码进行加密,例如:可以通过aes加密。
实施例三:
应用访问数据库:
s301:当hook模块检测到应用触发了访问数据库的事件时,解析所述应用对应的访问数据;所述访问数据为所述应用访问所述数据库所需的数据;
其中,触发访问数据库的事件可以为应用发送了访问数据库的请求。
访问数据包括应用连接数据库所需的相关信息,例如包括:数据库ip、用户名、hook模块的第二授权码。
s302:将所述访问数据发送给密码管理agent;
s303:密码管理agent验证所述应用是否具有密码查询权限;
其中,可以通过密码管理agent接收到的第二授权码验证应用是否具有密码查询权限,具体的,包括:
密码管理agent判断第二授权码的合法性;
若所述第二授权码合法,表示所述应用具有密码查询权限。
其中,第二授权码合法性的检测可以通过与密码管理agent中包含的授权码进行匹配,若匹配成功,则表示第二授权码为合法的授权码。
其中,密码管理agent在接收到hook模块发送的第二授权码后,验证第二授权码的合法性,若验证通过,则表示该hook模块为密码管理agent注入到应用中的hook模块,即该应用为密码管理agent管理的应用。
s304:在所述应用具有密码查询权限的情况下,密码管理agent依据所述访问数据查询访问密码;
本实施例中,对于访问密码的查询可以包括如下的两种情况:
情况一:在密码管理agent中包含需要查询的访问密码的情况下,直接从内存中获取该访问密码;
情况二:在密码管理agent中不包含需要查询到的访问密码的情况下,通过密码管理装置查询该应用的访问密码。
具体的,s304包括:
密码管理agent判断是否存在所述访问数据对应的访问密码;
若包含所述访问密码,从内存中获取所述访问密码;
若不包含所述访问密码,将所述访问数据发送给所述密码管理装置;
所述密码管理装置依据所述访问数据查询访问密码;
所述密码管理装置将查询到的所述访问密码发送给密码管理agent。
s305:密码管理agent将所述访问密码发送给所述应用,以使所述应用依据所述访问密码访问所述数据库。
其中,在应用接收到访问密码后,hook模块需要将查询到的访问密码替换掉历史的访问密码,以使应用根据查询到的访问密码访问数据库。
本实施例中,通过密码管理agent管理应用的访问密码,并且在应用中注入hook模块,在hook模块检测到应用触发了访问数据库的事件时,解析应用对应的访问数据,并将该访问数据发送给密码管理agent,通过密码管理agent查询该应用的访问密码,并将该访问密码发送给该应用,该应用依据查询到的访问密码访问数据库。由此可知,通过密码管理agent对应用的访问密码进行管理,并且通过hook模块截取应用连接数据库时的访问数据,查询访问数据库所需的访问密码,这样,无需人工持有密码,提高了数据库访问的安全性。
并且,通过密码管理agent对应用的访问密码进行管理,在密码管理装置修改了应用的访问密码后,无需调用不同的api将访问密码发送给不同的应用,这样无需开发每个应用适配的api,降低了开发人员的工作量。
实施例四:
参考图4,示出了本发明实施例提供的一种数据库密码管理方法的交互示意图,在本实施例中,该方法包括:
s401:密码管理agent在启动时,向密码管理装置发送认证请求;
若密码管理agent首次认证,密码管理装置对密码管理agent进行授权;
授权的过程可以包括:设置密码管理agent的管理查询密码的权限,设置后向密码管理agent发送授权码;
在密码管理agent为非首次认证的情况下,密码管理agent向密码管理装置发送第一授权码进行认证;
若密码管理装置检测到与所述第一授权码匹配的授权码,则表示认证通过;
否则,若密码管理装置未检测到与所述第一授权码匹配的授权码,则表示认证失败。
s402:在密码管理agent认证通过的情况下,通过配置文件确定需要管理的应用;
其中,配置文件中包含密码管理agent需要管理的应用。
s403:向需要管理的应用注入hook模块;
密码管理agent将hook模块注入到密码管理装置时,为了保证密码查询的安全性,还需要向应用发送hook模块的第二授权码,该第二授权码在应用通过hook向密码管理agent查询访问密码时使用。
s404:当密码管理装置对任何一个应用修改了访问密码后,将修改后的访问密码发送给密码管理agent;
s405:密码管理agent将接收到的修改后的访问密码进行保存,并将修改后的访问密码发送给所述hook模块;
s406:hook模块监测应用是否触发了访问数据库的事件;
s407:当监测到应用触发了访问数据库的事件时,解析所述应用对应的访问数据;
访问数据包括应用连接数据库所需的相关信息,例如包括:数据库ip、用户名、hook模块的第二授权码。
s408:将所述访问数据发送给密码管理agent;
s409:密码管理agent验证所述应用是否具有密码查询权限;
其中,可以通过密码管理agent接收到的第二授权码验证应用是否具有密码查询权限,具体的,包括:
密码管理agent判断第二授权码的合法性;
若所述第二授权码合法,表示所述应用具有密码查询权限。
其中,第二授权码合法性的检测可以通过与密码管理agent中包含的授权码进行匹配,若匹配成功,则表示第二授权码为合法的授权码。
其中,密码管理agent在接收到hook模块发送的第二授权码后,验证第
二授权码的合法性,若验证通过,则表示该hook模块为密码管理agent注入到应用中的hook模块,即该应用为密码管理agent管理的应用。
s410:密码管理agent依据所述访问数据查询访问密码;
本实施例中,对于访问密码的查询可以包括如下的两种情况:
情况一:在密码管理agent中包含需要查询的访问密码的情况下,直接从内存中获取该访问密码;
情况二:在密码管理agent中不包含需要查询到的访问密码的情况下,通过密码管理装置查询该应用的访问密码。
s411:密码管理agent将所述访问密码发送给所述应用;
s412:hook模块将查询到的访问密码替换掉历史访问密码,以使应用依据所述访问密码访问所述数据库。
本实施例中,通过密码管理agent管理应用的访问密码,并且在应用中注入hook模块,在hook模块检测到应用触发了访问数据库的事件时,解析应用对应的访问数据,并将该访问数据发送给密码管理agent,通过密码管理agent查询该应用的访问密码,并将该访问密码发送给该应用,该应用依据查询到的访问密码访问数据库。由此可知,通过密码管理agent对应用的访问密码进行管理,并且通过hook模块截取应用连接数据库时的访问数据,查询访问数据库所需的访问密码,这样,无需人工持有密码,提高了数据库访问的安全性。
并且,通过密码管理agent对应用的访问密码进行管理,在密码管理装置修改了应用的访问密码后,无需调用不同的api将访问密码发送给不同的应用,这样无需开发每个应用适配的api,降低了开发人员的工作量。
参考图5,示出了本发明实施例提供的一种数据库访问系统的结构示意图,该系统包括:
密码管理装置501、密码管理agent502、hook模块503;
所述密码管理装置501,用于设置应用的访问密码,并将所述访问密码发送给所述密码管理agent502,以使所述密码管理agent502保存所述访问密码;
所述hook模块503,用于当hook模块503监测到应用触发了访问数据库的事件时,解析所述应用对应的访问数据,并向密码管理agent502发送访问密码查询请求;所述访问数据为所述应用访问所述数据库所需的数据;
所述密码管理agent502,用于在接收到hook模块发送的访问密码的查询请求后,查询应用的访问密码,并将查询结果发送给所述应用。
可选的,所述密码管理装置,包括:
密码修改单元,用于修改任意一个应用的访问密码。
可选的,所述密码管理agent包括:
认证单元,用于当启动所述密码管理agent时,向所述密码管理装置发送认证请求;
应用检查单元,用于在所述密码管理agent向所述密码管理装置认证成功的情况下,依据预设的配置文件确定需要管理的应用;所述配置文件中包含需要管理的应用;
hook模块注入单元,用于向所述需要管理的应用注入hook模块以及所述hook模块对应的第二授权码。
查询单元,用于在接收到hook模块发送的访问密码查询指令时,依据访问数据查询访问密码。
可选的,所述密码管理agent还包括:
密码保存单元,用于接收密码修改单元发送的修改后的访问密码,并保存;
密码发送单元,用于将接收到的修改后的访问密码发送给所述hook模块。
可选的,所述hook模块,包括:
监测模块,用于监测应用是否触发了访问数据库的事件;
解析模块,用于在监测到应用触发了访问数据库的事件时,解析所述应用对应的访问数据;
发送模块,用于将所述访问数据发送给所述密码管理agent;
密码替换模块,用于将查询到的访问密码替换历史访问密码。
本实施例中,通过密码管理agent对应用的访问密码进行管理,并且通过hook模块截取应用连接数据库时的访问数据,查询访问数据库所需的访问密码,这样,无需人工持有密码,提高了数据库访问的安全性。
并且,通过密码管理agent对应用的访问密码进行管理,在密码管理装置修改了应用的访问密码后,无需调用不同的api将访问密码发送给不同的应用,这样无需开发每个应用适配的api,降低了开发人员的工作量。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。