数据库审计系统在加密传输场景下的应用(SinoDB)
1、 简介
数据的保存和访问离不开数据库软件,数据库作为数据集中存放的区域,数据库的安全防范就显得尤为重要。数据库审计系统也称为dbAudit(后续均使用dbAaudit指代数据库审计系统),主要用于数据库的安防控制,它的主要功能是对数据库的操作进行实时监控和记录,用于事后的分析和问题追溯。目前,大部分数据库都内置了审计功能,但一般都仅支持SQL记录回溯,功能较为局限。外置的数据库审计系统不仅可同时对多种数据库进行SQL回溯还兼具有过滤并阻断危险操作、检测SQL注入等功能;审计系统在侦测到数据库发生危险操作时能及时阻断数据库的连接,另外,还可在检测到可能的非法操作时发起实时的邮件或者短信告警,避免数据遭受破坏以及敏感数据的泄漏。
随着国产数据库软件的成熟,包括星瑞格、安华金和、启明星辰等多家国产数据库企业都发布了自己的数据库审计系统。其中星瑞格是一家成立自2015年的国产数据软件,在数据库行业深耕多年,发布了包括SinoDB、dbSonar、SinoRepl以及dbAudit等多个数据库相关软件,覆盖多种数据库使用场景,针对客户痛点,提供了完善的解决方案。其中的dbAudit软件提供丰富的数据库软件审计支持,包括Informix、Oracle、DB2、Sybase、MS SQL, MySQL, MariaDB、MongoDB、 PostgreSQL, Greenplum及国产数据库SinoDB、达梦、人大金仓等,同时在支持在多种操作系统如Unix, Linux以及windows上进行部署和审计。
(1)数据流量镜像:通过交换机将数据库操作报文镜像到解析模块进行数据的解码分析。如图一所示的一种旁路部署方式。
图 1 一种镜像方式的旁路审计部署方式
图 2 一种采用探针进行数据捕获的网络拓扑
前两种数据捕获方式都属于旁路部署的方式,采用这种方式不需要对现有的数据库的部署方式进行改造,不论对客户还是对数据库来说,都没有直接影响,属于透明部署,目前大部分的数据库审计系统都采用这种方式进行安装。此外,采用探针模块安装的方式适用于网络拓扑较为复杂的场景,适应范围更广。
我们经常用SSL(Secure Socket Layer, 安全套接层)来指代TLS,但目前大部分流行的数据库厂商都已经不再使用SSL进行加密,实际使用的都是TLS。TLS1.0和TLS1.1分别在1999年和2006年发布,并于2021年弃用,目前较为通用的是TLS1.2,包括Sap HANA、SQL Server、Oracle。部分数据库已经同步更新支持TLS1.3,如Mysql 8.0、Postgresql。
对于应用TLS1.2以及之前版本的数据库,一般的方法是提前将服务器的私钥导入到dbAudit系统中,通过对Server的IP进行匹配到提前导入的密钥,监控客户端和服务器的密钥协商过程,根据配置的私钥解码出生成的随机数,之后得到此次会话的共享对称密钥。后,便可利用该密钥进行加密传输报文的解析,进一步根据数据库协议解析出执行的SQL语句等。如上方式一般适用于采用RSA作为密钥交换的协商过程。
利用这种方法的特点是,该加密方式不具备前向安全性,只要拥有私钥文件,就可以对历史的记录数据报文进行解码。TLS1.2所支持多种不具有前向兼容性的加密套件,因此,随着对安全需求的升级,IETF组织在2018年发布了新的TLS1.3版本。
旁路监听由于不需要对现有的网络拓扑进行较大改造,仅需要监听交互报文,具有入侵性小,安装方便的特点。
(2-2)TLS1.3的数据解密方案讨论
TLS通常会在服务器和客户端之间进行协商选择使用的密码套件,并根据选择的密钥交换算法生成用于后续加密传输数据的对称密钥。在2018年公布的TLS1.3协议中,IETF组织重新定义了所使用的身份验证和密钥交换算法,其所使用的密钥交换算法大部分基于Diffie-Hellman算法,其原理是利用离散对数进行密钥的协商,当其中参与协商的参数足够大时(超过100位),对当前的人类资源来说,是一种不可破解的算法,能够给数据传递提供足够的安全性。
当数据库选择TLS1.3进行数据传输的加密保护时,TLS1.3基于安全的考虑,放弃了许多不安全和过时特性的支持,采用临时密钥来保证完善的前向安全性,应用在每次建立连接进行会话协商时,服务器都会重新生成的协商参数。这样,dbAudit在使用旁路镜像进行数据捕获的场景下,即使知道此次会话的协商参数,也无法成功对后续和之前的加密数据进行解码。
在无法通过导入密钥的方式进行数据解码时,dbAudit一般采用反向代理的方式进行数据解析。反向代理即使用dbAudit作为客户端和服务器的中间商,dbAudit分别与客户端和服务器建立连接,数据经由dbAudit进行解密和重新加密,再转发给目的主机。
这种方法的特点是可选择任何加密套件进行传输,并保证足够的安全性,但由于数据在从数据库客户端和数据库服务器传输的过程中经历了两次加解密转换,对于数据量较大的场景,不可避免地影响了数据存储的性能,且这种方式不可避免地需要修改网络拓扑,对整个网络具有一定的入侵性,增加了部署的难度。
相关文章