CN112749182B - 代理访问Oracle数据库的方法、审计终端、装置及计算机可读存储介质 - Google Patents
代理访问Oracle数据库的方法、审计终端、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112749182B CN112749182B CN201911045374.4A CN201911045374A CN112749182B CN 112749182 B CN112749182 B CN 112749182B CN 201911045374 A CN201911045374 A CN 201911045374A CN 112749182 B CN112749182 B CN 112749182B
- Authority
- CN
- China
- Prior art keywords
- oracle database
- response information
- client
- random number
- password
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种代理访问Oracle数据库的方法、审计终端、装置及存储介质,该方法包括:审计终端分别与客户端和服务器进行挑战回应认证,当审计终端与客户端之间的挑战回应认证通过且审计终端与服务器之间的挑战回应认证通过时,建立服务器与客户端之间的访问连接。本发明通过在运维人员使用的客户端到Oracle数据库服务器之间构建审计终端,在这个审计终端上为每个运维人员创建不同的账户,这些账户可以对应到相同的或者不同的Oracle数据库账户。运维人员可以使用在审计终端上的账号实现对数据库的访问,而无需向运维人员提供Oracle数据库服务器的访问密码,降低了数据库的安全风险。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及代理访问Oracle数据库的方法、审计终端、装置及计算机可读存储介质。
背景技术
在数据库运维审计领域,由于Oracle数据库采用私有的TNS协议,所以针对这些协议的解析都是基于对于网络协议包的黑盒分析。之前有人做过大量的工作,但是对于Oracle数据库的认证***,始终没有取得进展。这导致大量的针对Oracle数据库的运维审计软件,要么采用旁路网络监听数据包,并解析数据包的内容;要么直接采用数据库用户作为访问账号。但是采用旁路网络对数据库进行监听,只能针对明文协议,同时旁路审计无法实现诸如数据脱敏,敏感指令拦截等。因此,为了审计需要,采用数据库用户作为访问账号,为每个运维人员分配一个数据库访问账号,并将数据库密码暴露给运维人员,大大提高了安全风险以及运维难度。
发明内容
本发明的主要目的在于提供一种代理访问Oracle数据库的方法、审计终端、装置及存储介质,旨在解决现有技术中为了审计需要,采用数据库用户作为访问账号,为每个运维人员分配一个数据库访问账号,并将数据库密码暴露给运维人员,大大提高了安全风险以及运维难度的技术问题。
为实现上述目的,本发明提供一种代理访问Oracle数据库的方法,所述方法应用于审计终端,所述审计终端分别与客户端以及Oracle数据库服务器建立通信连接,所述方法包括:
接收所述客户端发送的访问请求,所述访问请求包含第一用户名;
获取所述第一用户名对应的第二用户名,并将所述第二用户名发送至所述Oracle数据库服务器;
接收所述Oracle数据库服务器基于所述第二用户名反馈的第二随机数;
生成第一随机数,并将所述第一随机数发送至所述客户端;
接收所述客户端反馈的第一回应信息,所述第一回应信息由所述客户端基于所述第一随机数以及所述第一用户名对应的第一口令生成;
检测所述第一回应信息是否有效;
若所述第一回应信息有效,则获取所述第二用户名对应的第二口令;
根据所述第二随机数以及所述第二口令生成第二回应信息;
将所述第二回应信息发送至所述Oracle数据库服务器,以供所述Oracle数据库服务器对所述第二回应信息进行有效性认证;
当接收到所述Oracle数据库服务器发送的第一认证通过信息时,发送第二认证通过信息至所述客户端。
可选的,所述检测所述第一回应信息是否有效的步骤包括:
根据当前的Oracle数据库版本,确定认证策略;
通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串;
当所述第一解密字符串与所述认证策略对应的有效认证信息一致时,确定所述第一回应信息有效。
可选的,所述当前的Oracle数据库版本为Oracle 10g,所述认证策略为第一认证策略,所述通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串的步骤包括:
通过所述第一用户名以及第一口令生成第一密钥;
通过所述第一密钥分别对审计终端会话密钥以及客户端会话密钥进行AES解密,得到第一会话密钥解密信息以及第二会话密钥解密信息;
通过所述第一会话密钥解密信息的后N位字符串以及所述第二会话密钥解密信息的后N位字符串进行异或操作,得到第二密钥,其中,N为正整数;
通过所述第二密钥对所述第一回应信息解密,得到第一解密字符串。
可选的,所述根据所述第二随机数以及所述第二口令生成第二回应信息的步骤包括:
根据当前的Oracle数据库版本,确定生成策略;
通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息。
可选的,所述当前的Oracle数据库版本为Oracle 10g,所述生成策略为第一生成策略,所述通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息的步骤包括:
通过所述第二用户名以及第二口令生成第三密钥;
通过所述第三密钥解密服务器端会话密钥,得到第三会话密钥解密信息;
生成第三随机数;
通过所述第三会话密钥解密信息以及所述第三随机数,生成第四密钥;
通过所述第四密钥对所述第二随机数以及所述第二口令的合并字符串进行加密,得到第二回应信息。本说明书所指加密和解密,如果没有特别指明,均指的是AES加密算法。
此外,为实现上述目的,本发明还提供一种审计终端,所述审计终端分别与客户端以及Oracle数据库服务器建立通信连接,所述审计终端包括:
第一接收模块,用于接收所述客户端发送的访问请求,所述访问请求包含第一用户名;
第一发送模块,用于获取所述第一用户名对应的第二用户名,并将所述第二用户名发送至所述Oracle数据库服务器;
第二接收模块,用于接收所述Oracle数据库服务器基于所述第二用户名反馈的第二随机数;
第二发送模块,用于生成第一随机数,并将所述第一随机数发送至所述客户端;
第三接收模块,用于接收所述客户端反馈的第一回应信息,所述第一回应信息由所述客户端基于所述第一随机数以及所述第一用户名对应的第一口令生成;
检测模块,用于检测所述第一回应信息是否有效;
获取模块,用于若所述第一回应信息有效,则获取所述第二用户名对应的第二口令;
生成模块,用于根据所述第二随机数以及所述第二口令生成第二回应信息;
第三发送模块,用于将所述第二回应信息发送至所述Oracle数据库服务器,以供所述Oracle数据库服务器对所述第二回应信息进行有效性认证;
第四发送模块,用于当接收到所述Oracle数据库服务器发送的第一认证通过信息时,发送第二认证通过信息至所述客户端。
可选的,所述检测模块,用于:
根据当前的Oracle数据库版本,确定认证策略;
通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串;
当所述第一解密字符串与所述认证策略对应的有效认证信息一致时,确定所述第一回应信息有效。本说明书所指加密和解密,如果没有特别指明,均指的是AES加密算法。
可选的,所述生成模块,用于:
根据当前的Oracle数据库版本,确定生成策略;
通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息。
此外,为实现上述目的,本发明还提供一种审计装置,所述审计装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代理访问Oracle数据库的程序,所述代理访问Oracle数据库的程序被所述处理器执行时实现如上所述的代理访问Oracle数据库的方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述存储介质上存储有代理访问Oracle数据库的程序,所述代理访问Oracle数据库的程序被处理器执行时实现如上所述的代理访问Oracle数据库的方法的步骤。
本发明中,在运维人员使用的客户端到Oracle数据库服务器之间构建审计终端(类似于中间人攻击),在这个审计终端上为每个运维人员创建不同的账户,这些账户可以对应到相同的或者不同的Oracle数据库账户。通过本发明,运维人员可以使用在审计终端上的账号实现对数据库的访问,而无需向运维人员提供Oracle数据库服务器的访问密码,降低了数据库的安全风险。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的审计装置结构示意图;
图2为本发明代理访问Oracle数据库的方法一实施例的流程示意图;
图3为本发明代理访问Oracle数据库的方法一实施例的场景示意图;
图4为本发明审计终端一实施例的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1为本发明实施例方案涉及的硬件运行环境的审计装置结构示意图。
本发明实施例审计装置可以是网关设备。
如图1所示,该审计装置可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的审计装置结构并不构成对审计装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及代理访问Oracle数据库的方法程序。
在图1所示的审计装置中,网络接口1004主要用于连接服务器,与服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的代理访问Oracle数据库的方法程序,并执行以下代理访问Oracle数据库的方法各个实施例的步骤。
参照图2,图2为本发明代理访问Oracle数据库的方法一实施例的流程示意图。
一实施例中,本发明代理访问Oracle数据库的方法应用于审计终端,所述审计终端分别与客户端以及Oracle数据库服务器建立通信连接,所述方法包括:
步骤S10,接收所述客户端发送的访问请求,所述访问请求包含第一用户名;
本实施例中,审计终端可以网关设备,审计终端分别与客户端以及Oracle数据库服务器建立通信连接。当客户端想要访问Oracle数据库时,访问请求不直接发给Oracle数据库服务器,而是发送给审计终端,访问请求包含第一用户名。其中,第一用户名并非用于访问Oracle数据库的用户名。
步骤S20,获取所述第一用户名对应的第二用户名,并将所述第二用户名发送至所述Oracle数据库服务器;
本实施例中,用户名包括两部分,一部分为访问网关设备的用户名,另一部分为访问Oracle数据库的用户名。例如,访问网关设备的用户名包括:用户名a、用户名b、用户名c;访问Oracle数据库的用户名包括:用户名A、用户名B、用户名C。且将用户名a与用户名A关联存储在审计终端中,且将用户名b与用户名B关联存储在审计终端中,且将用户名c与用户名C关联存储在审计终端中。在接收到访问请求,且从访问请求中提取得到第一用户名时(第一用户名即访问网关设备的用户名),然后查找已存储的数据中是否存在第一用户名,若存在,则获取第一用户名对应的第二用户名,并将第二用户名发送至Oracle数据库服务器。例如,第一用户名为用户名c,则获取的第二用户名即为用户名C。
步骤S30,接收所述Oracle数据库服务器基于所述第二用户名反馈的第二随机数;
本实施例中,Oracle数据库服务器接收到审计终端发送的第二用户名后,通过随机数生成方法,生成第二随机数,并反馈给审计终端。
步骤S40,生成第一随机数,并将所述第一随机数发送至所述客户端;
本实施例中,审计终端通过随机数生成方法,生成第一随机数,并将第一随机数发送至客户端。
步骤S50,接收所述客户端反馈的第一回应信息,所述第一回应信息由所述客户端基于所述第一随机数以及所述第一用户名对应的第一口令生成;
本实施例中,客户端接收到审计终端发送的第一随机数后,通过生成策略,生成第一回应信息,并反馈给审计终端。其中,生成策略根据当前的Oracle数据库版本确定。其中,数据库版本可以是审计终端在接收到服务器发送AUTH_SESSKEY/AUTH_VFR_DATA时,根据AUTH_VFR_DATA(随机数)的flags即可确定当前的Oracle数据库版本,并将版本信息告知客户端,以供客户端确定当前的Oracle数据库,从而确定生成策略。
一可选实施例中,当Oracle数据库版本为Oracle 10g时,在客户端上生成第一回应信息的流程为:
a1、使用第一用户名和第一口令生成用于AES解密的Key1(192bit);
b1、创建48位随机字符串作为Decrypted_CKey;
c1、使用Key1加密Decrypted_CKey得到Client Session Key(客户端会话密钥);
d1、使用Key1解密审计终端会话密钥得到Decrypted_SKey;
e1、使用Decrypted_SKey/Decrypted_CKey创建用于AES解密的FinalKey(192bit)
f1、使用FinalKey加密SALT(即第一随机数)+PASSWORD(即第一口令,填充为32位,当密码不足16位,用16-<密码长度>作为填充byte)得到AUTH_PASSWORD(即第一回应信息)。
另一可选实施例中,当Oracle数据库版本为Oracle 11g时,在客户端上生成第一回应信息的流程为:
a2、使用password(即第一口令)+salt(即第一随机数)创建一个AES192bit的Key1;
b2、创建48位随机字符串作为Decrypted_CKey(注意到11.2.0.1.0,Decrypted_CKey/Decrypted_SKey后8位必须是0x8);
c2、使用Key1加密Decrypted_CKey得到Client Session Key;
d2、使用Key1解密审计终端会话密钥得到Decrypted_SKey;
e2、使用Decrypted_SKey/Decrypted_CKey创建用于AES解密的FinalKey(192bit);
f2、创建16位随机字符串作为AUTH_PASSWORD_PART1;
g2、使用FinalKey,IV=AUTH_PASSWORD_PART1加密Password(padding到16位),得到AUTH_PASSWORD_PART2;
h2、合并AUTH_PASSWORD_PART1以及AUTH_PASSWORD_PART2为AUTH_PASSWORD(即第一回应信息)。
另一可选实施例中,当Oracle数据库版本为Oracle 12c时,在客户端上生成第一回应信息的流程为:
a3、使用pbkdf2加密算法加密password(即第一口令),生成64位的密钥passwordCrypted;
b3、使用passwordCrypt+salt(即第一随机数)进行hash得到AES密钥Key1;
c3、使用key1解密审计终端会话密钥,得到Decrypted_SKey;
d3、随机生成32位字符串,作为Decrypted_CKey,加密得到Client AUTH_SESSkEY(Client_Session_Key);
e3、使用Decrypted_SKey,Decrypted_CKey,AUTH_PBKDF2_CSK_SALT得到FinalKey;
f3、将Password+Padding以及(16位随机)+passwordCrypted使用FinalKey进行AES加密,得到AUTH_PASSWORD和AUTH_PBKDF2_SPEEDY_KEY,即生成第一回应信息。
步骤S60,检测所述第一回应信息是否有效;
本实施例中,第一回应信息由客户端基于当前的Oracle数据库对于的生成策略生成,因此,需要以当前的Oracle数据库对应的认证策略对第一回应信息进行认证,以检测第一回应信息是否有效。
一实施例中,步骤S60包括:
根据当前的Oracle数据库版本,确定认证策略;通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串;当所述第一解密字符串与所述认证策略对应的有效认证信息一致时,确定所述第一回应信息有效。
一可选实施例中,当Oracle数据库版本为Oracle 10g时,所述认证策略为第一认证策略,所述通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串的步骤包括:
通过所述第一用户名以及第一口令生成第一密钥;通过所述第一密钥分别对审计终端会话密钥以及客户端会话密钥进行AES解密,得到第一会话密钥解密信息以及第二会话密钥解密信息;通过所述第一会话密钥解密信息的后N位字符串以及所述第二会话密钥解密信息的后N位字符串进行异或操作,得到第二密钥,其中,N为正整数;通过所述第二密钥对所述第一回应信息解密,得到第一解密字符串。
本实施例中,当Oracle数据库版本为Oracle 10g时,在审计终端上对第一回应信息进行认证包括以下流程:
A1、使用第一用户名和第一口令生成用于AES解密的Key1(192bit),具体算法如下:用户名+口令转换成UTF-16BE格式,然后填充为8的倍数,然后进行DES加密;
B1、使用Key1将审计终端会话密钥和Client Session Key进行AES解密;
C1、使用解密后的Decrypted_SKey/Decrypted_CKey的后16位进行异或操作创建用于AES解密的FinalKey(192bit);
D1、使用FinalKey解密客户端发送的AUTH_PASSWORD(即第一回应信息),得到解密字符串(即第一解密字符串);
E1、如果解密字符串前16位为salt,后16位为第一口令(当第一口令不足16位,用16-<第一口令长度>作为填充byte),则验证通过,即第一回应信息有效。
另一可选实施例中,当Oracle数据库版本为Oracle 11g时,在审计终端上对第一回应信息进行认证包括以下流程:
A2、使用password(即第一口令)+salt(即第一随机数)创建一个AES192bit的Key1。具体算法是:password+salt进行sha1 hash,然后填充为24个字节(192bit);
B2、使用Key1和全0的IV分别解密Client和审计终端的SESSION KEY,得到Decrypted_SKey/Decrypted_CKey;
C2、使用Decrypted_SKey/Decrypted_CKey创建AES Key(192bit)FinalKey,具体算法是:
将Decrypted_SKey/Decrypted_CKey进行异或运算,得到T1;将T1的前16位进行md5 hash,得到md1;将t1的第8到24位进行md5 hash,得到md2;FinalKey=md1[0:16]+md2[0:8];
D2、使用FinalKey作为AES KEY,使用AUTH_PASSWORD前16位作为IV,解密AUTH_PASSWORD后16位,得到PASSWORD+Padding的字符串,Padding字符为16-PASSWORD长度;通过这种方式可以校验客户端是否通过认证。
E2、如果验证通过,则第一回应信息有效。
另一可选实施例中,当Oracle数据库版本为Oracle 12c时,在审计终端上对第一回应信息进行认证包括以下流程:
A3、使用pbkdf2加密算法加密password(即第一口令),salt(即第一随机数)为AUTH_VFR_DATA(hex转换为byte array)+"AUTH_PBKDF2_SPEEDY_KEY",计算次数为AUTH_PBKDF2_VGEN_COUNT。生成64位的密钥passwordCrypted。PBKDF2(password,salt,AUTH_PBKDF2_VGEN_COUNT,PBKDF2WithHmacSHA512);
B3、对passwordCrypted+AUTH_VFR_DATA(从hex转换为byte array)进行sha512hash运算,生成32为的AES密钥为key1;
C3、使用Key1和全0的IV分别解密Client和Server的SESSION KEY,得到Decrypted_SKey/Decrypted_CKey(byte array转换为Hex格式);
D3、使用pbkdf2加密Decrypted_CKey+Decrypted_SKey(转换为大写)生成password,salt为AUTH_PBKDF2_CSK_SALT,计算次数为AUTH_PKBDF2_SDER_COUNT,生成32位的AES密钥FinalKey;
E3、使用finalKey和全0的IV,分别解密AUTH_PASSWORD和AUTH_PBKDF2_SPEEDY_KEY,解密后的AUTH_PASSWORD的后16位等于数据库密码(不足16位使用Padding字符为16-PASSWORD长度),则验证通过,即第一回应信息有效。
步骤S70,若所述第一回应信息有效,则获取所述第二用户名对应的第二口令;步骤S80,根据所述第二随机数以及所述第二口令生成第二回应信息;
本实施例中,当第一回应信息有效时,获取第二用户名对应的第二口令,并根据第二随机数以及第二口令生成第二回应信息。
一实施例中,步骤S80包括:
根据当前的Oracle数据库版本,确定生成策略;通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息。
本实施例中,根据生成策略、第二随机数以及第二口令生成第二回应信息的具体实施例与上述在客户端上生成第一回应信息的实施例基本相同,在此不做赘述。
一可选实施例中,所述当前的Oracle数据库版本为Oracle 10g,所述生成策略为第一生成策略,所述通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息的步骤包括:
通过所述第二用户名以及第二口令生成第三密钥;通过所述第三密钥解密服务器端会话密钥,得到第三会话密钥解密信息;生成第三随机数;通过所述第三会话密钥解密信息以及所述第三随机数,生成第四密钥;通过所述第四密钥对所述第二随机数以及所述第二口令的合并字符串进行加密,得到第二回应信息。
本实施例中,当当前的Oracle数据库版本为Oracle 10g时,生成策略为第一生成策略,通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息的具体实施例与上述当Oracle数据库版本为Oracle 10g时,在客户端上生成第一回应信息的流程基本相同,在此不做赘述。
步骤S90,将所述第二回应信息发送至所述Oracle数据库服务器,以供所述Oracle数据库服务器对所述第二回应信息进行有效性认证;
本实施例中,Oracle数据库服务器对第二回应信息进行有效性认证的具体实施例与上述审计终端对第一回应信息进行有效性认证的实施例基本相同,在此不做赘述。
步骤S100,当接收到所述Oracle数据库服务器发送的第一认证通过信息时,发送第二认证通过信息至所述客户端。
本实施例中,当Oracle数据库服务器对第二回应信息进行有效性认证通过时,服务器发送认证成功的信息DAuthRep给审计终端,审计终端同时生成认证成功的信息CAuthRep发送给客户端。客户端便可开始对Oracle数据库进行访问。
参照图3,图3为本发明代理访问Oracle数据库的方法一实施例的场景示意图。
本实施例中,客户端发送带用户名的认证信息,该用户名是客户端运维人员在网关上预先分配的用户名CUser;网关(即审计终端)检测用户名的有效性,如果无效,则中断连接。如果有效,则将客户端用户名CUser替换成对应的数据库用户名DbUser发送给服务器;服务器返回认证的Challenge AuthKey:DAuthKey;网关将该AUTHKEY替换成针对客户端的CAuthKey(随机生成);客户端向网关返回CAuthKey生成的CAuthPwd(通过上述生成策略生成);网关验证客户端认证是否正确(通过上述认证策略认证),如果不正确,则中断连接,如果有效,则使用CUser对应的数据库密码DbPwd以及服务器端发送的DAuthKey生成认证的DAuthPwd(通过上述生成策略生成);服务器发送认证成功与否的信息DAuthRep给网关,网关同时生成认证成功的信息CAuthRep发送给客户端。
本实施例中,在运维人员使用的客户端到Oracle数据库服务器之间构建审计终端(类似于中间人攻击),在这个审计终端上为每个运维人员创建不同的账户,这些账户可以对应到相同的或者不同的Oracle数据库账户。运维人员可以使用在审计终端上的账号实现对数据库的访问,而无需向运维人员提供Oracle数据库服务器的访问密码,降低了数据库的安全风险。
参照图4,图4为本发明审计终端一实施例的功能模块示意图。
一实施例中,审计终端分别与客户端以及Oracle数据库服务器建立通信连接,所述审计终端包括:
第一接收模块10,用于接收所述客户端发送的访问请求,所述访问请求包含第一用户名;
第一发送模块20,用于获取所述第一用户名对应的第二用户名,并将所述第二用户名发送至所述Oracle数据库服务器;
第二接收模块30,用于接收所述Oracle数据库服务器基于所述第二用户名反馈的第二随机数;
第二发送模块40,用于生成第一随机数,并将所述第一随机数发送至所述客户端;
第三接收模块50,用于接收所述客户端反馈的第一回应信息,所述第一回应信息由所述客户端基于所述第一随机数以及所述第一用户名对应的第一口令生成;
检测模块60,用于检测所述第一回应信息是否有效;
获取模块70,用于若所述第一回应信息有效,则获取所述第二用户名对应的第二口令;
生成模块80,用于根据所述第二随机数以及所述第二口令生成第二回应信息;
第三发送模块90,用于将所述第二回应信息发送至所述Oracle数据库服务器,以供所述Oracle数据库服务器对所述第二回应信息进行有效性认证;
第四发送模块100,用于当接收到所述Oracle数据库服务器发送的第一认证通过信息时,发送第二认证通过信息至所述客户端。
进一步地,一实施例中,所述检测模块60,用于:
根据当前的Oracle数据库版本,确定认证策略;
通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串;
当所述第一解密字符串与所述认证策略对应的有效认证信息一致时,确定所述第一回应信息有效。
进一步地,一实施例中,所述当前的Oracle数据库版本为Oracle 10g,所述认证策略为第一认证策略,所述检测模块60,用于:
通过所述第一用户名以及第一口令生成第一密钥;
通过所述第一密钥分别对审计终端会话密钥以及客户端会话密钥进行AES解密,得到第一会话密钥解密信息以及第二会话密钥解密信息;
通过所述第一会话密钥解密信息的后N位字符串以及所述第二会话密钥解密信息的后N位字符串进行异或操作,得到第二密钥,其中,N为正整数;
通过所述第二密钥对所述第一回应信息解密,得到第一解密字符串。
进一步地,一实施例中,所述生成模块80,用于:
根据当前的Oracle数据库版本,确定生成策略;
通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息。
进一步地,一实施例中,所述当前的Oracle数据库版本为Oracle 10g,所述生成策略为第一生成策略,所述生成模块80,用于:
通过所述第二用户名以及第二口令生成第三密钥;
通过所述第三密钥解密服务器端会话密钥,得到第三会话密钥解密信息;
生成第三随机数;
通过所述第三会话密钥解密信息以及所述第三随机数,生成第四密钥;
通过所述第四密钥对所述第二随机数以及所述第二口令的合并字符串进行加密,得到第二回应信息。
本发明审计终端的具体实施例与上述代理访问Oracle数据库的方法的各个实施例基本相同,在此不做赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有代理访问Oracle数据库的程序,所述代理访问Oracle数据库的程序被处理器执行时实现如上代理访问Oracle数据库的方法各个实施例的步骤。
本发明计算机可读存储介质的具体实施例与上述代理访问Oracle数据库的方法的各个实施例基本相同,在此不做赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者***不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者***所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者***中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种代理访问Oracle数据库的方法,其特征在于,所述方法应用于审计终端,所述审计终端分别与客户端以及Oracle数据库服务器建立通信连接,所述方法包括:
接收所述客户端发送的访问请求,所述访问请求包含第一用户名;
获取所述第一用户名对应的第二用户名,并将所述第二用户名发送至所述Oracle数据库服务器;
接收所述Oracle数据库服务器基于所述第二用户名反馈的第二随机数;
生成第一随机数,并将所述第一随机数发送至所述客户端;
接收所述客户端反馈的第一回应信息,所述第一回应信息由所述客户端基于所述第一随机数以及所述第一用户名对应的第一口令生成;
检测所述第一回应信息是否有效;
若所述第一回应信息有效,则获取所述第二用户名对应的第二口令;
根据所述第二随机数以及所述第二口令生成第二回应信息;
将所述第二回应信息发送至所述Oracle数据库服务器,以供所述Oracle数据库服务器对所述第二回应信息进行有效性认证;
当接收到所述Oracle数据库服务器发送的第一认证通过信息时,发送第二认证通过信息至所述客户端。
2.如权利要求1所述的方法,其特征在于,所述检测所述第一回应信息是否有效的步骤包括:
根据当前的Oracle数据库版本,确定认证策略;
通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串;
当所述第一解密字符串与所述认证策略对应的有效认证信息一致时,确定所述第一回应信息有效。
3.如权利要求2所述的方法,其特征在于,所述当前的Oracle数据库版本为Oracle10g,确定所述认证策略为第一认证策略,所述通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串的步骤包括:
通过所述第一用户名以及第一口令生成第一密钥;
通过所述第一密钥分别对审计终端会话密钥以及客户端会话密钥进行AES解密,得到第一会话密钥解密信息以及第二会话密钥解密信息;
通过所述第一会话密钥解密信息的后N位字符串以及所述第二会话密钥解密信息的后N位字符串进行异或操作,得到第二密钥,其中,N为正整数;
通过所述第二密钥对所述第一回应信息解密,得到第一解密字符串。
4.如权利要求1所述的方法,其特征在于,所述根据所述第二随机数以及所述第二口令生成第二回应信息的步骤包括:
根据当前的Oracle数据库版本,确定生成策略;
通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息。
5.如权利要求4所述的方法,其特征在于,所述当前的Oracle数据库版本为Oracle10g,所述生成策略为第一生成策略,所述通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息的步骤包括:
通过所述第二用户名以及第二口令生成第三密钥;
通过所述第三密钥解密服务器端会话密钥,得到第三会话密钥解密信息;
生成第三随机数;
通过所述第三会话密钥解密信息以及所述第三随机数,生成第四密钥;
通过所述第四密钥对所述第二随机数以及所述第二口令的合并字符串进行加密,得到第二回应信息。
6.一种审计终端,其特征在于,所述审计终端分别与客户端以及Oracle数据库服务器建立通信连接,所述审计终端包括:
第一接收模块,用于接收所述客户端发送的访问请求,所述访问请求包含第一用户名;
第一发送模块,用于获取所述第一用户名对应的第二用户名,并将所述第二用户名发送至所述Oracle数据库服务器;
第二接收模块,用于接收所述Oracle数据库服务器基于所述第二用户名反馈的第二随机数;
第二发送模块,用于生成第一随机数,并将所述第一随机数发送至所述客户端;
第三接收模块,用于接收所述客户端反馈的第一回应信息,所述第一回应信息由所述客户端基于所述第一随机数以及所述第一用户名对应的第一口令生成;
检测模块,用于检测所述第一回应信息是否有效;
获取模块,用于若所述第一回应信息有效,则获取所述第二用户名对应的第二口令;
生成模块,用于根据所述第二随机数以及所述第二口令生成第二回应信息;
第三发送模块,用于将所述第二回应信息发送至所述Oracle数据库服务器,以供所述Oracle数据库服务器对所述第二回应信息进行有效性认证;
第四发送模块,用于当接收到所述Oracle数据库服务器发送的第一认证通过信息时,发送第二认证通过信息至所述客户端。
7.如权利要求6所述的审计终端,其特征在于,所述检测模块,用于:
根据当前的Oracle数据库版本,确定认证策略;
通过所述认证策略,对所述第一回应信息解密,得到第一解密字符串;
当所述第一解密字符串与所述认证策略对应的有效认证信息一致时,确定所述第一回应信息有效。
8.如权利要求6所述的审计终端,其特征在于,所述生成模块,用于:
根据当前的Oracle数据库版本,确定生成策略;
通过所述生成策略、所述第二随机数以及所述第二口令生成第二回应信息。
9.一种审计装置,其特征在于,所述审计装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代理访问Oracle数据库的程序,所述代理访问Oracle数据库的程序被所述处理器执行时实现如权利要求1至5中任一项所述的代理访问Oracle数据库的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有代理访问Oracle数据库的程序,所述代理访问Oracle数据库的程序被处理器执行时实现如权利要求1至5中任一项所述的代理访问Oracle数据库的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911045374.4A CN112749182B (zh) | 2019-10-30 | 2019-10-30 | 代理访问Oracle数据库的方法、审计终端、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911045374.4A CN112749182B (zh) | 2019-10-30 | 2019-10-30 | 代理访问Oracle数据库的方法、审计终端、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112749182A CN112749182A (zh) | 2021-05-04 |
CN112749182B true CN112749182B (zh) | 2023-01-31 |
Family
ID=75640603
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911045374.4A Active CN112749182B (zh) | 2019-10-30 | 2019-10-30 | 代理访问Oracle数据库的方法、审计终端、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112749182B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174452B (zh) * | 2022-07-01 | 2024-05-31 | 天津神舟通用数据技术有限公司 | 基于Oracle数据库协议代理的应用移植方法 |
CN115632892B (zh) * | 2022-12-23 | 2023-03-10 | 北京景安云信科技有限公司 | 基于代理对oracle10g认证过程中用户名和密码替换的方法 |
CN117411729B (zh) * | 2023-12-14 | 2024-05-10 | 深圳竹云科技股份有限公司 | oracle数据库登录方法、装置、计算机设备、介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678733B1 (en) * | 1999-10-26 | 2004-01-13 | At Home Corporation | Method and system for authorizing and authenticating users |
CN101232372A (zh) * | 2007-01-26 | 2008-07-30 | 华为技术有限公司 | 认证方法、认证***和认证装置 |
CN103500202A (zh) * | 2013-09-29 | 2014-01-08 | 中国船舶重工集团公司第七0九研究所 | 一种轻量级数据库的安全保护方法及*** |
CN103716285A (zh) * | 2012-09-29 | 2014-04-09 | 西门子公司 | 一种单点登录方法、代理服务器及*** |
CN104660416A (zh) * | 2015-02-13 | 2015-05-27 | 飞天诚信科技股份有限公司 | 一种语音认证***和设备的工作方法 |
CN105262588A (zh) * | 2015-11-03 | 2016-01-20 | 网易(杭州)网络有限公司 | 基于动态口令的登录方法、账号管理服务器及移动终端 |
WO2018004114A2 (ko) * | 2016-06-30 | 2018-01-04 | (주)넷비젼텔레콤 | 프록시 서비스 제공을 위한 프록시 인증시스템 및 인증방법 |
WO2018184441A1 (zh) * | 2017-04-07 | 2018-10-11 | 华为技术有限公司 | 用户信息处理方法及装置 |
CN109101811A (zh) * | 2018-08-10 | 2018-12-28 | 成都安恒信息技术有限公司 | 一种基于SSH隧道的可控Oracle会话的运维与审计方法 |
CN109831435A (zh) * | 2019-01-31 | 2019-05-31 | 广州银云信息科技有限公司 | 一种数据库操作方法、***及代理服务器和存储介质 |
-
2019
- 2019-10-30 CN CN201911045374.4A patent/CN112749182B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6678733B1 (en) * | 1999-10-26 | 2004-01-13 | At Home Corporation | Method and system for authorizing and authenticating users |
CN101232372A (zh) * | 2007-01-26 | 2008-07-30 | 华为技术有限公司 | 认证方法、认证***和认证装置 |
CN103716285A (zh) * | 2012-09-29 | 2014-04-09 | 西门子公司 | 一种单点登录方法、代理服务器及*** |
CN103500202A (zh) * | 2013-09-29 | 2014-01-08 | 中国船舶重工集团公司第七0九研究所 | 一种轻量级数据库的安全保护方法及*** |
CN104660416A (zh) * | 2015-02-13 | 2015-05-27 | 飞天诚信科技股份有限公司 | 一种语音认证***和设备的工作方法 |
CN105262588A (zh) * | 2015-11-03 | 2016-01-20 | 网易(杭州)网络有限公司 | 基于动态口令的登录方法、账号管理服务器及移动终端 |
WO2018004114A2 (ko) * | 2016-06-30 | 2018-01-04 | (주)넷비젼텔레콤 | 프록시 서비스 제공을 위한 프록시 인증시스템 및 인증방법 |
WO2018184441A1 (zh) * | 2017-04-07 | 2018-10-11 | 华为技术有限公司 | 用户信息处理方法及装置 |
CN109101811A (zh) * | 2018-08-10 | 2018-12-28 | 成都安恒信息技术有限公司 | 一种基于SSH隧道的可控Oracle会话的运维与审计方法 |
CN109831435A (zh) * | 2019-01-31 | 2019-05-31 | 广州银云信息科技有限公司 | 一种数据库操作方法、***及代理服务器和存储介质 |
Non-Patent Citations (2)
Title |
---|
基于协议代理的安全内控运维审计***设计与实现;刘行;《中国优秀博硕士学位论文全文数据库(硕士)工程科技Ⅱ辑》;20190515;全文 * |
适用于GSM网络中的一个安全认证协议的设计与研究;齐爱琴,等;《自动化与仪器仪表》;20161231;第99-100页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112749182A (zh) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4216081A1 (en) | Information verification method, related apparatus, device, and storage medium | |
CN112218294B (zh) | 基于5g的物联网设备的接入方法、***及存储介质 | |
CN107295011B (zh) | 网页的安全认证方法及装置 | |
CN112749182B (zh) | 代理访问Oracle数据库的方法、审计终端、装置及计算机可读存储介质 | |
CN113259133B (zh) | 基于http协议的加密通讯方法、设备及存储介质 | |
CN111131278B (zh) | 数据处理方法及装置、计算机存储介质、电子设备 | |
CN100512201C (zh) | 用于处理分组业务的接入-请求消息的方法 | |
CN109688098B (zh) | 数据的安全通信方法、装置、设备及计算机可读存储介质 | |
US11470060B2 (en) | Private exchange of encrypted data over a computer network | |
WO2010150019A1 (en) | Authentication method and system | |
CN111740942B (zh) | 一种登录/注册方法、装置、***、电子设备及存储介质 | |
CN108199847B (zh) | 数字安全处理方法、计算机设备及存储介质 | |
CN101640682A (zh) | 一种改善Web服务安全性的方法 | |
CN112653719A (zh) | 汽车信息安全存储方法、装置、电子设备和存储介质 | |
CN107896222A (zh) | 一种数据处理方法及*** | |
CN111079178B (zh) | 一种可信电子病历脱敏和回溯方法 | |
Huang et al. | A secure communication over wireless environments by using a data connection core | |
CN113783867B (zh) | 一种请求认证方法及终端 | |
CN114785527B (zh) | 数据传输方法、装置、设备及存储介质 | |
EP4318354A1 (en) | Account opening method, system, and apparatus | |
CN102629928A (zh) | 一种基于公共密钥的互联网彩票***安全链路实施方法 | |
US20150082026A1 (en) | Systems and methods for locking an application to device without storing device information on server | |
CN112035820B (zh) | 一种用于Kerberos加密环境下的数据解析方法 | |
CN110048856A (zh) | 数据传输方法、装置和pos机*** | |
CN116866029B (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 |