本发明公开一种方法,涉及数据库安全领域,具体地说是一种对java应用程序进行数据库审计的方法。
背景技术:
1、数据库审计是数据库安全的重要组成部分,因此使用数据库审计均有明确要求。目前,现有的数据库审计采用抓取并解析网络包的方式实现。该方式需要针对不同数据库类型,分别编写对应的解析程序,且解析程序需要针对不同的数据库版本进行适配,工作量大,且不易维护;同时安装部署比较复杂,对网络拓扑要求多。
技术实现思路
1、本发明针对现有技术的问题,提供一种对java应用程序进行数据库审计的方法,可作为独立的数据库审计方法发挥作用,亦可对传统数据库审计不适用的场景的补充。
2、本发明提出的具体方案是:
3、本发明提供一种对java应用程序进行数据库审计的方法,包括:
4、步骤1:根据java应用程序,基于jdbc标准,采用java代理模式代理driver类、connection类和statement类,并自定义数据库驱动实现类及编写对应的自定义数据库驱动,在自定义实现类中增加数据库审计的功能,
5、步骤2:利用java spi机制将自定义数据库驱动注册到drivermanager,
6、步骤3:调整自定义数据库驱动在驱动列表中的优先级,使自定义数据库驱动先于其他数据库驱动,
7、步骤4:通过java应用程序获取数据库连接时,加载数据库驱动列表中自定义数据库驱动访问数据库并进行数据库审计。
8、进一步,所述的一种对java应用程序进行数据库审计的方法中所述步骤2中在meta-info/services/java.sql.driver文件中写入自定义的数据库驱动实现类中driver类的全限定名,完成自定义数据库驱动注册到drivermanager,数据库驱动按照加载顺序保存在drivermanager的registereddrivers属性中。
9、进一步,所述的一种对java应用程序进行数据库审计的方法中步骤3中采用java反射机制通过反射获取drivermanager的registereddrivers属性,对registereddrivers属性中数据库驱动的加载顺序进行修改,将自定义数据库驱动调整为驱动列表中第一个元素。
10、进一步,所述的一种对java应用程序进行数据库审计的方法中步骤4中采用javaagent方式编写premain方法在java应用程序加载数据库驱动后及访问数据库前,利用premain方法设置参数-javaagent=自定义数据库驱动,执行步骤3中驱动列表顺序的调整过程。
11、本发明还提供一种对java应用程序进行数据库审计的装置,包括自定义模块、注册模块、调整模块和访问审计模块,
12、自定义模块根据java应用程序,基于jdbc标准,采用java代理模式代理driver类、connection类和statement类,并自定义数据库驱动实现类及编写对应的自定义数据库驱动,在自定义实现类中增加数据库审计的功能,
13、注册模块利用java spi机制将自定义数据库驱动注册到drivermanager,
14、调整模块调整自定义数据库驱动在驱动列表中的优先级,使自定义数据库驱动先于其他数据库驱动,
15、访问审计模块通过java应用程序获取数据库连接时,加载数据库驱动列表中自定义数据库驱动访问数据库并进行数据库审计。
16、进一步,所述的一种对java应用程序进行数据库审计的装置中所述注册模块在meta-info/services/java.sql.driver文件中写入自定义的数据库驱动实现类中driver类的全限定名,完成自定义数据库驱动注册到drivermanager,数据库驱动按照加载顺序保存在drivermanager的registereddrivers属性中。
17、进一步,所述的一种对java应用程序进行数据库审计的装置中调整模块采用java反射机制通过反射获取drivermanager的registereddrivers属性,对registereddrivers属性中数据库驱动的加载顺序进行修改,将自定义数据库驱动调整为驱动列表中第一个元素。
18、进一步,所述的一种对java应用程序进行数据库审计的装置中访问审计模块采用javaagent方式编写premain方法在java应用程序加载数据库驱动后及访问数据库前,利用premain方法设置参数-javaagent=自定义数据库驱动,执行步骤3中驱动列表顺序的调整过程。
19、本发明的有益之处是:
20、本发明提供一种对java应用程序进行数据库审计的方法,使java应用程序透明、易于部署,无需修改应用程序的代码,即可实现对数据库的审计,对业务代码无侵入性;
21、本发明方法使java应用程序访问数据库时可维护性强,无需针对不同的数据库类型、数据库版本进行适配;
22、本发明方法具有跨平台的特点,无需依赖特定平台即可实施。
1.一种对java应用程序进行数据库审计的方法,其特征是包括:
2.根据权利要求1所述的一种对java应用程序进行数据库审计的方法,其特征是所述步骤2中在meta-info/services/java.sql.driver文件中写入自定义的数据库驱动实现类中driver类的全限定名,完成自定义数据库驱动注册到drivermanager,数据库驱动按照加载顺序保存在drivermanager的registereddrivers属性中。
3.根据权利要求2所述的一种对java应用程序进行数据库审计的方法,其特征是步骤3中采用java反射机制通过反射获取drivermanager的registereddrivers属性,对registereddrivers属性中数据库驱动的加载顺序进行修改,将自定义数据库驱动调整为驱动列表中第一个元素。
4.根据权利要求3所述的一种对java应用程序进行数据库审计的方法,其特征是步骤4中采用javaagent方式编写premain方法,在java应用程序加载数据库驱动后及访问数据库前,利用premain方法设置参数-javaagent=自定义数据库驱动,执行步骤3中驱动列表顺序的调整过程。
5.一种对java应用程序进行数据库审计的装置,其特征是包括自定义模块、注册模块、调整模块和访问审计模块,
6.根据权利要求5所述的一种对java应用程序进行数据库审计的装置,其特征是所述注册模块在meta-info/services/java.sql.driver文件中写入自定义的数据库驱动实现类中driver类的全限定名,完成自定义数据库驱动注册到drivermanager,数据库驱动按照加载顺序保存在drivermanager的registereddrivers属性中。
7.根据权利要求6所述的一种对java应用程序进行数据库审计的装置,其特征是调整模块采用java反射机制通过反射获取drivermanager的registereddrivers属性,对registereddrivers属性中数据库驱动的加载顺序进行修改,将自定义数据库驱动调整为驱动列表中第一个元素。
8.根据权利要求7所述的一种对java应用程序进行数据库审计的装置,其特征是访问审计模块采用javaagent方式编写premain方法,在java应用程序加载数据库驱动后及访问数据库前,利用premain方法设置参数-javaagent=自定义数据库驱动,执行步骤3中驱动列表顺序的调整过程。