数据库审计系统在加密传输场景下的应用-星瑞格数据库

2022-01-28 00:00:00 数据 数据库 方式 密钥 加密

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上进行部署和审计。

 2、  dbAudit的数据捕获原理

       不论是哪家数据库企业的数据库审计系统,其进行数据捕获基本原理都是相同的,主要存在如下三种方式:

(1)数据流量镜像:通过交换机将数据库操作报文镜像到解析模块进行数据的解码分析。如图一所示的一种旁路部署方式。


图 1 一种镜像方式的旁路审计部署方式

 (2)探针模块安装:该方法通过在与数据库同一主机安装Agent模块,对数据库流量进行监控并转发给数据解析模块。如下图二所示的一种采用探针进行数据捕获的网络拓扑。  

图 2 一种采用探针进行数据捕获的网络拓扑

 (3)反向代理:这种方式下客户端不直接与数据库服务器通信,客户的数据库请求消息和数据库返回给客户的消息都经由数据解析模块进行转发。

       前两种数据捕获方式都属于旁路部署的方式,采用这种方式不需要对现有的数据库的部署方式进行改造,不论对客户还是对数据库来说,都没有直接影响,属于透明部署,目前大部分的数据库审计系统都采用这种方式进行安装。此外,采用探针模块安装的方式适用于网络拓扑较为复杂的场景,适应范围更广。

 3、  dbAudit解析数据库的传输数据

       dbAudit系统在进行数据库传输协议的解析时,如果数据库使用明文传输,dbAudit在捕获数据传输报文后,对报文进行数据库协议的解析,之后记录数据库的操作,后根据用户的设定执行相关策略;但是目前除了部分仅允许在内网进行访问且对性能要求较高的数据库网络部署场景,大部分数据库都配置使用了加密的数据传输,在数据库加密场景下,dbAudit需要对加密数据解密之后才能进行数据库协议的解析。数据库传输过程的加密一般使用的都是传输层安全(Transport Layer Security,TLS)协议,不同的数据库根据目前的支持请客使用的版本存在差异。

 (1)  传输层安全TLS

       为了避免传输数据被非法监听,大多数数据库都支持对传输过程加密。数据库的传输过程加密一般使用TLS进行加密。TLS是一种安全协议,为互联网通信提供安全以及数据完整性保障。TLS协议采用主从式架构模型,用于在两个应用程序之间通过协商建立加密的安全连接,避免应用程序之间数据传输被窃听和篡改。

       我们经常用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。

  (2)  dbAudit对加密数据的解析

 (2-1)TLS1.2以及之前版本的数据解密方法

       对于应用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进行解密和重新加密,再转发给目的主机。

       这种方法的特点是可选择任何加密套件进行传输,并保证足够的安全性,但由于数据在从数据库客户端和数据库服务器传输的过程中经历了两次加解密转换,对于数据量较大的场景,不可避免地影响了数据存储的性能,且这种方式不可避免地需要修改网络拓扑,对整个网络具有一定的入侵性,增加了部署的难度。

相关文章