公开/公告号CN116089398A
专利类型发明专利
公开/公告日2023-05-09
原文格式PDF
申请/专利权人 上海沄熹科技有限公司;
申请/专利号CN202310085789.4
申请日2023-02-09
分类号G06F16/21(2019.01);G06F21/62(2013.01);
代理机构济南信达专利事务所有限公司 37100;
代理人陈婷婷
地址 200120 上海市浦东新区中国(上海)自由贸易试验区张东路1158号、丹桂路1059号2幢305-22室
入库时间 2023-06-19 19:35:22
法律状态公告日
法律状态信息
法律状态
2023-05-26
实质审查的生效 IPC(主分类):G06F16/21 专利申请号:2023100857894 申请日:20230209
实质审查的生效
2023-05-09
公开
发明专利申请公布
技术领域
本发明涉及数据库安全审计技术领域,具体地说是一种数据库安全审计方法及系统。
背景技术
数据库安全审计,是审计管理员对用户操作数据库的一种管理,主要过程是对用户操作数据库的行为以及影响结果进行记录。安全审计可以记录所有用户对数据库及其数据的操作,及时发现非法访问,在发生安全事故或者意外故障的时候,进行溯源和数据恢复。所以安全审计记录数据的安全性和完整性至关重要,既不能泄露敏感数据,又要确保数据是可信的,不被篡改。
当前,数据库的安全审计记录数据的安全性,已有解决方案主要是对审计记录数据在传输过程中的安全性进行处理,主要是通过SSL加密网络通信实现或者存储在可信的环境中,通过环境的可信度来保证安全性。但是,如果存储在服务器本地或者云上的审计记录数据本身没有加密,则拥有服务器文件查看权限的用户就可以看到审计记录数据,造成敏感数据的泄露。除此之外,当前数据库安全审计记录数据的防篡改解决方案,主要是对安全审计记录数据进行单条或者多条一起打包进行摘要算法,能识别到单条或者多条打包数据内是否被篡改,如果该单条或多条打包数据被整体删除或者新增一条或者多条打包数据,则无法识别这种数据篡改行为。
发明内容
本发明的技术任务是针对以上不足之处,提供一种数据库安全审计方法及系统,能够增强数据库安全审计数据的安全性和完整性检测,从而提高安全审计的可信度。
本发明解决其技术问题所采用的技术方案是:
一种数据库安全审计方法,对用户操作数据库的行为进行审计,并记录安全审计数据,将每一条安全审计记录数据进行加密,并将所有安全审计记录按照事件发生先后顺序形成单向链;该方法的实现包括:
1)、每一条安全审计记录数据敏感信息的加密:
安全审计管理员对安全审计记录的详情信息进行加密;
2)、安全审计记录数据防篡改:
每一条安全审计记录数据都生成摘要信息和全局唯一标识,并保存在安全审计记录的详情信息中进行加密;
每一条安全审计记录数据都包含上一条安全审计记录数据的全局唯一标识和摘要信息,并保存在安全审计记录的详情信息中进行加密;
所有的安全审计记录数据形成一条单向链;
3)、安全审计记录数据篡改检查:
安全审计员解密所述安全审计记录数据;
通过每一条安全审计记录数据的摘要信息,检查该条安全审计记录是否被篡改;
通过检查所有安全审计记录是否为单向链,从而检查是否存在删除或新增安全审计记录的篡改。
本方法通过对数据库安全审计记录数据进行加密确保数据加密保存,不会泄露敏感数据;通过数据库安全审计记录数据包含前一条记录的全局唯一标识和摘要信息,形成一条单向链来检查审计记录信息的连续性和不可篡改性,从而保证完整性。
优选的,所述安全审计记录的详情信息包括:命令来源的信息、数据库节点的信息、命令操作的数据库对象的信息、命令及其执行的相关信息、安全审计记录相关的信息。
其中,所述命令指所有对数据库服务本身和数据库对象的操作,包括对数据库服务的管理、客户端向数据库发出的SQL等。
数据库对象是指数据库中的对象,包括但不限于数据库、模式、表、视图、序列、存储过程、函数等。
优选的,所述摘要信息是将安全审计记录数据通过消息摘要算法(又称哈希算法或散列算法),生成安全审计记录的散列值(又称数字指纹),用于检查当前记录是否被篡改;
所述消息摘要算法使用MAC算法(Message Authentication Code,消息认证码算法)。
优选的,安全审计记录数据保存形式,可以在安全环境以文件形式保存,也可以保存在安全数据库中。
优选的,安全审计记录详情信息通过安全审计管理员创建的非对称加密的公钥进行加密;
安全审计员通过非对称加密的私钥解密安全审计记录数据。
优选的,所述通过检查所有安全审计记录是否为单向链,从而检查是否存在删除或新增安全审计记录的篡改:
如果安全审计记录单向链断开,则存在删除安全审计记录的篡改;如果存在游离于单向链之外的安全审计记录,则存在新增安全审计记录的篡改。
优选的,所述安全审计记录数据篡改检查的具体实现流程如下:
3.1)、读取安全审计记录数据;
3.2)、对审计记录详情信息进行解密,取出全局唯一标识和摘要信息,记为guid和digest;
3.3)、取出审计记录详情信息中的前一条审计记录数据的全局唯一标识和摘要信息,记为p_guid和p_digest;
3.4)、计算审计记录数据的摘要信息,记为digest1;未加密的guid记为guid1;
3.5)、判断是否digest==digest1且guid==guid1;是则继续步骤3.6);否则判定为审计记录被篡改;
3.6)、取出p_guid对应的前一条审计记录数据,并解密取出其digest和guid,记为p_digest1和p_guid1;
3.7)、判断是否p_digest==p_digest1且p_guid==p_guid1;是则继续步骤3.8);否则判定为审计记录被篡改;
3.8)、判断是否存在多条审计记录数据链,或存在游离的审计记录数据,是则判定为审计记录被篡改;否则判定为审计记录未被篡改。
优选的,该方法实现的具体步骤如下:
步骤1:数据库安全审计管理员创建用于数据库安全审计的非对称加密的私钥和公钥,即审计私钥和审计公钥,并将审计公钥配置到数据库安全审计模块,用于进行数据库安全审计记录数据详情信息的加密;
步骤2:当数据库执行命令完成之后,安全审计模块进行安全审计,记录安全审计数据;创建安全审计记录,将相关审计信息加入审计记录的详情信息;
步骤3:将上一条安全审计记录数据的全局唯一标识guid和摘要信息加入当前审计记录的详情信息中;
步骤4:为当前审计记录生成全局唯一标识guid,并放入审计记录和审计记录详情信息中;
步骤5:为当前审计记录计算摘要信息,并放入审计记录和审计记录详情信息中;
步骤6:对当前审计记录中包含敏感信息的审计记录详情使用审计公钥进行加密;
步骤7:将数据库审计记录数据保存到安全可靠环境中的文件或者安全可靠的数据库中;
步骤8:审计员需要查看安全审计记录数据的时候,通过审计私钥对安全审计记录数据进行解密查看;同时,可通过重新计算当前安全审计记录数据的摘要信息,与审计记录数据中的摘要信息以及解密出来的摘要信息进行对比,三者一致,表示当前审计记录数据没有被篡改;
步骤9:当需要检查安全审计记录数据的完整性的时候,可以对紧跟着的一条审计记录数据进行解密获取其上一条审计记录数据的摘要信息;然后将当前审计记录数据的摘要信息与之对比,两者一致,则中间未删除或新增审计记录数据。
本发明还要求保护一种数据库安全审计系统,包括审计数据生成模块、审计数据保存模块和审计数据查看模块;
审计数据生成模块用于审计事件生成审计记录并对其详情信息进行加密;
审计数据保存模块用于保存安全审计记录数据;
审计数据查看模块用于检查安全审计记录是否被篡改;
该系统实现上述的数据库安全审计方法。
进一步的,所述审计数据生成模块,审计数据生成包括审计事件检测、创建审计记录、创建审计记录的全局唯一标识、创建审计记录的摘要信息、对审计记录补充前序guid和摘要、对审计数据进行加密;
所述审计数据保存模块包括安全环境的文件系统和安全可靠的数据库;
所述审计数据查看模块包括对审计数据进行解密、审计数据的查看和审计数据完整性检查。
本发明的一种数据库安全审计方法及系统与现有技术相比,具有以下有益效果:
本方法中,对每一条安全审计记录数据进行加密,防止接触安全审计记录数据文件的人员能看到明文,提高了安全性,降低了敏感数据泄露的风险。同时,本方法通过每一条安全审计记录包含前一条安全审计记录的全局唯一标识和摘要信息,并对前一条安全审计记录的摘要信息和当前安全审计记录的摘要信息进行加密保存,可以让所有的安全审计记录形成一个单向链,不仅能防止针对每条审计记录的篡改,还可以检测到删除安全审计记录或者新增安全审计记录的篡改。通过本方法,可以进一步增强安全审计记录的安全性和完整性,提升安全审计记录的可信任度。
附图说明
图1是本发明一个实施例提供的数据库安全审计方法实现的整体方案示图;
图2是本发明一个实施例提供的安全审计数据加密和防篡改生成流程示图;
图3是本发明一个实施例提供的安全审计数据篡改检查流程示图。
具体实施方式
下面结合具体实施例对本发明作进一步说明。
本发明实施例提供了一种数据库安全审计方法,对用户操作数据库的行为进行审计,并记录安全审计数据,将每一条安全审计记录数据进行非对称加密,并将所有安全审计记录按照事件发生先后顺序形成单向链,从而增强安全审计记录数据的防止敏感信息泄露能力和防篡改检查能力,提高安全审计记录数据的安全性和完整性。
该方法的实现包括:
1)、每一条安全审计记录数据敏感信息的加密:
1.1)、敏感信息主要是安全审计记录详情信息,包括命令来源的信息、数据库节点的信息、命令操作的数据库对象的信息、命令及其执行的相关信息、安全审计记录相关的信息;
1.2)、安全审计记录详情信息通过安全审计管理员创建的非对称加密的公钥进行加密;
1.3)、安全审计记录数据保存形式,可以在安全环境以文件形式保存,也可以保存在安全数据库中。
2)、安全审计记录数据防篡改:
2.1)、每一条安全审计记录数据都生成摘要信息和全局唯一标识,并保存在安全审计记录的详情信息中进行加密;
2.2)、每一条安全审计记录数据都包含上一条安全审计记录数据的全局唯一标识和摘要信息,并保存在安全审计记录的详情信息中进行加密;
2.3)、所有的安全审计记录数据形成一条单向链。
3)、安全审计记录数据篡改检查:
3.1)、安全审计员通过非对称加密的私钥解密安全审计记录数据;
3.2)、通过每一条安全审计记录数据的摘要信息,检查该条安全审计记录是否被篡改;
3.3)、通过检查所有安全审计记录是否为单向链,从而检查是否存在删除或新增安全审计记录的篡改。如果安全审计记录单向链断开,则存在删除安全审计记录的篡改;如果存在游离于单向链之外的安全审计记录,则存在新增安全审计记录的篡改。
本方法设置安全审计模块,当用户进行数据库的操作,无论是通过应用程序远程连接后发送SQL命令,或者是在数据库服务器本地执行命令,安全审计模块都会对用户的操作行为进行详细记录。安全审计模块主要记录操作来源的信息、数据库服务的信息、操作的数据库对象信息和命令执行的信息等,并将审计记录的数据进行加密后保存到安全环境的文件中或者安全的数据库。
本方法中的摘要主要是指将安全审计记录数据通过消息摘要算法(又称哈希算法或散列算法),生成安全审计记录的散列值(又称数字指纹),可以用于检查当前记录是否被篡改。本实施例中的消息摘要算法使用MAC算法(Message Authentication Code,消息认证码算法)。
本方法中的全局唯一标识,即GUID(Globally Unique Identifier),GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。
本方法中命令主要是指所有对数据库服务本身和数据库对象的操作,包括对数据库服务的管理、客户端向数据库发出的SQL等。
数据库对象是指数据库中的对象,包括但不限于数据库、模式、表、视图、序列、存储过程、函数等。
当用户操作数据库的时候,安全审计模块会对用户的操作进行审计,并记录用户操作的操作来源的信息、数据库服务的信息、操作的数据库对象信息和命令执行的信息等,并将前一条安全审计记录的guid和摘要信息加入当前审计记录。然后,为当前审计记录生成guid并进行摘要信息的计算。最后,对审计记录数据中包含敏感信息的详情信息进行加密,生成一条完整的数据库安全审计记录数据。完整的数据库安全审计记录数据然后保存到安全可靠环境中的文件或者安全可靠的数据库中。
数据库安全审计记录数据,每一条都包含以下信息:
加密的审计详情信息detail_encrypted中包含:包括(1)命令来源的信息,包括命令来源的用户名、用户ID信息、IP和端口信息、应用名称;(2)记录审计信息的数据库节点的信息,包括节点名称、节点IP和服务端口信息、进程或线程ID;(3)用户操作的数据库对象的信息,包括对象全名称、对象ID;(4)用户操作执行的相关信息,包括执行的命令、命令的参数、执行的结果成功与否、执行结果影响行数或返回的数据、执行的时间;(5)跟审计记录数据相关的信息,包括当前记录的guid、事件发生时间、当前审计记录的摘要信息digest、前一条记录的guid(guid_prefix)、前一条信息的摘要信息等。该过程可参考图2所示的流程示图。
如图3所示,所述安全审计记录数据篡改检查的具体实现流程如下:
3.1)、读取安全审计记录数据;
3.2)、对审计记录详情信息进行解密,取出全局唯一标识和摘要信息,记为guid和digest;
3.3)、取出审计记录详情信息中的前一条审计记录数据的全局唯一标识和摘要信息,记为p_guid和p_digest;
3.4)、计算审计记录数据的摘要信息,记为digest1;未加密的guid记为guid1;
3.5)、判断是否digest==digest1且guid==guid1;是则继续步骤3.6);否则判定为审计记录被篡改;
3.6)、取出p_guid对应的前一条审计记录数据,并解密取出其digest和guid,记为p_digest1和p_guid1;
3.7)、判断是否p_digest==p_digest1且p_guid==p_guid1;是则继续步骤3.8);否则判定为审计记录被篡改;
3.8)、判断是否存在多条审计记录数据链,或存在游离的审计记录数据,是则判定为审计记录被篡改;否则判定为审计记录未被篡改。
该方法实现的具体步骤如下:
步骤1:数据库安全审计管理员创建用于数据库安全审计的非对称加密的私钥和公钥,即审计私钥和审计公钥,并将审计公钥配置到数据库安全审计模块,用于进行数据库安全审计记录数据详情信息的加密;
步骤2:当数据库执行命令完成之后,安全审计模块进行安全审计,记录安全审计数据;创建安全审计记录,将相关审计信息加入审计记录的详情信息;
步骤3:将上一条安全审计记录数据的全局唯一标识guid和摘要信息加入当前审计记录的详情信息中;
步骤4:为当前审计记录生成全局唯一标识guid,并放入审计记录和审计记录详情信息中;
步骤5:为当前审计记录计算摘要信息,并放入审计记录和审计记录详情信息中;
步骤6:对当前审计记录中包含敏感信息的审计记录详情使用审计公钥进行加密;
步骤7:将数据库审计记录数据保存到安全可靠环境中的文件或者安全可靠的数据库中;
步骤8:审计员需要查看安全审计记录数据的时候,通过审计私钥对安全审计记录数据进行解密查看;同时,可通过重新计算当前安全审计记录数据的摘要信息,与审计记录数据中的摘要信息以及解密出来的摘要信息进行对比,三者一致,表示当前审计记录数据没有被篡改;
步骤9:当需要检查安全审计记录数据的完整性的时候,可以对紧跟着的一条审计记录数据进行解密获取其上一条审计记录数据的摘要信息;然后将当前审计记录数据的摘要信息与之对比,两者一致,则中间未删除或新增审计记录数据。
通过以上的方法,每一条安全审计记录数据的敏感信息都经过了加密,避免接触审计记录数据文件就可以查看明文信息,降低了信息泄露风险。需要的时候,审计人员通过审计私钥可以查看安全审计记录数据。同时,通过以上步骤的处理,所有的审计记录数据按照事件发生的先后顺序,相互关联成一条链,关联信息经过了加密,如果中间被删除了一条审计记录数据就会导致链断开,如果中间被新增了一条审计记录数据,就会成为游离于单向链之外的信息。当需要验证安全审计记录数据完整性的时候,可以通过这种方法检测到删除或新增安全审计记录数据的篡改。
针对背景技术中提出的:1)数据库安全审计单条记录数据没有进行加密,能接触到审计记录数据文件的人能够看到明文数据,导致敏感数据泄露;2)数据库安全审计数据,目前的防篡改设计只能检查到当前记录是否被修改,无法检测到某条审计记录数据是否被删除的篡改,也无法检测到恶意新增审计记录数据的篡改。通过本方法,可以有效解决以上两个现存的问题,增强数据库安全审计数据的安全性和完整性检测,从而提高安全审计的可信度。
本发明实施例还提供了一种数据库安全审计系统,包括审计数据生成模块、审计数据保存模块和审计数据查看模块;
审计数据生成模块用于审计事件生成审计记录并对其详情信息进行加密;
审计数据保存模块用于保存安全审计记录数据;
审计数据查看模块用于检查安全审计记录是否被篡改;
该系统实现上述实施例所描述的数据库安全审计方法。
参考图1所示,所述审计数据生成模块,审计数据生成包括审计事件检测、创建审计记录、创建审计记录的全局唯一标识、创建审计记录的摘要信息、对审计记录补充前序guid和摘要、对审计数据进行加密;
所述审计数据保存模块包括安全环境的文件系统和安全可靠的数据库;
所述审计数据查看模块包括对审计数据进行解密、审计数据的查看和审计数据完整性检查。
通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
机译: 对象语义数据建模系统;一种用于创建相对于数据库存储数据的数据库模式的方法,一种在D中解释公式的方法,以及一种对象语义类型的数据模型的有效期的数据模型,该对象语义类型的数据模型包括多个对象语义。和系统来创建数据库架构
机译: 一种用于从数据库,特别是万维网上的特征短数据刻蚀中产生数据库数据集的方法,一种用于为预定搜索查询确定数据库中相关数据集的过程以及一种搜索系统用于执行该方法
机译: 记录了一种基于数据库的数据关联方法和一种基于数据库的数据关联系统以及基于数据库的数据关联方法,并且计算机可读记录介质包括计算机可读记录介质。