数据库审计数据采集方案调研

本文涉及的产品
对象存储 OSS,20GB 3个月
文件存储 NAS,50GB 3个月
对象存储 OSS,内容安全 1000次 1年
简介: 在互联网,云计算,大数据快速发展的背景下,数据的规模也有了前所未有的增长,数据库在企业数据中几乎占有着核心地位。同时SQL注入,敏感操作,不规范使用等问题也一直伴随着数据库的使用,数据库安全也一直的数据库管理的重要工作,主要包括数据库漏扫,数据库加密,数据库防火墙,数据库脱敏,数据库安全审计等领域,本文将从数据库审计角度来介绍数据库审计的概念及审计数据的采集方案。

前言

在互联网,云计算,大数据快速发展的背景下,数据的规模也有了前所未有的增长,数据库在企业数据中几乎占有着核心地位。同时SQL注入,敏感操作,不规范使用等问题也一直伴随着数据库的使用,数据库安全也一直的数据库管理的重要工作,主要包括数据库漏扫,数据库加密,数据库防火墙,数据库脱敏,数据库安全审计等领域,本文将从数据库审计角度来介绍数据库审计的概念及审计数据的采集方案。


数据库审计是什么

先来看下百科对数据库审计的描述:

数据库审计(简称DBAudit)以安全事件为中心,以全面审计和精确审计为基础,实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行实时告警。它通过对用户访问数据库行为的记录、分析和汇报,来帮助用户事后生成合规报告、事故追根溯源,同时通过大数据搜索技术提供高效查询审计报告,定位事件原因,以便日后查询、分析、过滤,实现加强内外部数据库网络行为的监控与审计,提高数据资产安全。

从描述可以看出来,数据库的审计是从安全角度出发,通过记录数据库的活动,发现数据库中潜在或者正在发生的危险,并进行实时的告警,同时还可以生成各类审计报告,定位事件根因。

一个数据库审计系统的工作流程可以概括为审计数据采集,审计报告生成,监控与告警,事后分析/故障定位等。下文主要调研审计过程的前半段,采集部分的技术。

数据库要审计什么

在审计中,经常会用到5W1H分析法,基本可以概括需要数据库审计的内容:

  • Who:数据库的使用者和访问者,甚至可以关联到业务系统中用户
  • Where:数据库的客户端信息,服务端信息,行为从哪个地方来,访问了哪个数据库。
  • When:访问数据库行为的时间
  • What:访问时操作对象是哪个表,哪行数据,返回了哪些数据,耗时多久。
  • How:执行的SQL语句或者其他命令,覆盖DDL,DML,Query,登录等活动。
  • Why:通过分析SQL语句,对于有危险的SQL及时分辨出来,了解访问动机。

一些审计的例子:

  • 敏感信息泄露:比如用户姓名手机号等信息,通过对SQL的分析,识别返回结果中的敏感信息,及时告警。
  • 业务人员误操作:可能在业务系统中使用了不规范的SQL,权限滥用等。
  • SQL注入:需要对SQL语句进行注入识别,并且找出是哪些用户在注入。

数据库审计采集实现方案

数据库审计通过对数据库的运行活动进行采集,然后进行风险分析,生成审计报告,告警通知等,审计数据的获取有多种方案,接下来主要对审计数据的采集方案进行调研。主要包括插件方案和旁路方案,每种方案各有优劣。总体而言,旁路方案比较适合作为成熟的数据库审计方案。

插件方案

插件是指在数据库中增加使用使用审计插件,往往需要依赖数据库本身的支持,例如对于MySQL为例,MySQL企业版提供了审计插件,社区版没有直接提供审计插件,插件列表如下:

  • MySQL Enterprice Audit Plugin(企业版)
  • Percona Audit Plugin(三方插件)
  • MariaDB Audit Plugin(三方插件)
  • McAfee MySQL Audit Plugin(三方插件)

一些云厂商内部也集成了三方插件,例如AWS RDS和京东云RDS都使用了MariaDB Audit Plugin,由此可以看出审计插件还是一定的市场。

优点
  • 数据库原生支持,插件一般比较成熟,格式规整,利于分析。
  • 实现简单,不需要过多的开发量,开箱即用。
挑战
  • 数据库支持不全,比如社区版MySQL,不提供原生审计插件,需要自行安装,版本兼容性及维护等是一个挑战
  • 由于插件是运行在数据库服务器进程中,对数据库性能会产生一定影响。
  • 插件的安装一般由数据库管理员安装,并非审计人员可控,未起到职责分离的作用。
  • 每种数据库的插件需要单独部署,在对多种数据库进行审计时,维护成本较高。

除了插件之外,还会有一些数据库内置方法来进行审计:

  • General Log:MySQL中开启General Log,会对MySQL的所有查询更新操作进行记录;可以对General Log进行分析,缺点是数据量访问量大的情况下,General Log会快速膨胀,并对数据库性能产生影响。
  • Binlog+init_connect:通过binlog来记录对数据库的操作信息,但是没有记录用户的登录信息,借助init_connect可以记录每个连接创建时的信息,结合两个信息可以进行数据库审计,缺点是binlog不会记录select信息,审计内容会产生一部分缺失,不能作为完整的审计方案。

旁路方案

旁路监听

旁路监听也可以叫流量镜像模式,主要是通过抓取应用与数据库交互过程中网络包,对网络包进行解析,可以将解析出SQL语句,执行延时,返回结果行数等。然后将解析结果发送给审计系统。几乎所有成熟的数据库审计方案都支持旁路监听的部署方式。

旁路监听模式也是多数据库审计系统的实现方式,在部署方式上一般部署在数据库服务器所在的主机或者交换机上进行流量监听。

优点
  • 不需要在数据库系统安装审计插件,对数据库性能不影响
  • 无需与业务系统关联,不需要提供数据库的账号密码
  • 可以支持多种数据库,审计系统可以进行无损升级
挑战
  • 对于抓包性能要求较高,在数据库大流量访问时,丢包率过高会对审计结果产生影响。
  • SQL解析能力要求较高,特别是对于长语句,绑定变量等复杂操作语句的解析及审计。
  • 高性能的审计数据采集,在数据库流量较高时,可以及时的采集到审计系统中。

代理模式

代理模式是指在应用系统与数据库系统之间加一层代理,代理除了完成正常的命令分发和调度之外,还可以在代理上部署审计服务,通过对代理流量的拦截,也可以使用与旁路监听的类似的实现方式。其优点和挑战与旁路监听类似,一些不同点如下:

优点
  • 可以进行全流量的拦截和解析。
  • 可以有集群部署的数据库系统的拓扑结构。
挑战
  • 对代理性能和稳定性要求极高,如果代理出现问题,会直接影响业务系统。

总结

通过对上述的审计采集方案的描述,可以看出旁路监听的方式,对于数据库审计的数据采集是比较理想的方式,由于数据库系统和审计系统的分开部署模式,对两者进行了解耦,也让数据库系统和审计系统分别的维护和升级更加便捷。

在旁路监听的基础上,还可以辅助其他的日志或者业务系统的可观测性对数据库审计进行增强,比如将慢日志,错误日志,性能数据也可以上传到审计系统,可以对数据库有更完整的审计和故障追溯时的排查。

文中主要介绍了数据审计方案的采集部分,对于后续风险识别,告警通知,故障根源追溯等没有进行过多的介绍,这些也是数据库审计方案不可缺少的重要组成部分。

参考

https://www.datasunrise.com/audit/mysql/

https://mdnice.com/writing/ddb03d5b23c1446d8848bc7fe760bb36

https://www.infoq.cn/article/oxhgkfxwmrrta2tzefhd

https://www.sec-un.org/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AE%A1%E8%AE%A1%E4%BA%A7%E5%93%81%E8%BF%9B%E5%8C%96%E5%8F%B2/

https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AE%A1%E8%AE%A1/7882064?fr=aladdin

https://old.ankki.com/Product_111.html

https://www.anhengcloud.com/product/dbAudit/

目录
相关文章
|
6月前
|
中间件 关系型数据库 Java
MySQL数据库分库分表方案
MySQL数据库分库分表方案
289 0
MySQL数据库分库分表方案
|
2月前
|
消息中间件 canal 缓存
项目实战:一步步实现高效缓存与数据库的数据一致性方案
Hello,大家好!我是热爱分享技术的小米。今天探讨在个人项目中如何保证数据一致性,尤其是在缓存与数据库同步时面临的挑战。文中介绍了常见的CacheAside模式,以及结合消息队列和请求串行化的方法,确保数据一致性。通过不同方案的分析,希望能给大家带来启发。如果你对这些技术感兴趣,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
161 6
项目实战:一步步实现高效缓存与数据库的数据一致性方案
|
2月前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
3月前
|
关系型数据库 MySQL 数据库
|
3月前
|
存储 机器学习/深度学习 自然语言处理
LangChain与向量数据库:高效的信息检索方案
【8月更文第4天】随着自然语言处理技术的发展,特别是深度学习的进步,我们能够更加高效地处理大量的文本数据。LangChain 作为一种强大的工具链,旨在简化和加速构建复杂的自然语言处理应用程序。结合向量数据库,LangChain 可以实现高效且精准的信息检索功能。本文将探讨这一组合的工作原理,并通过一个具体的实现案例来展示其在实际应用中的效果。
456 2
|
20天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
2月前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
422 15
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
4月前
|
关系型数据库 MySQL 数据库
|
5月前
|
canal 缓存 关系型数据库
高并发场景下,6种方案,保证缓存和数据库的最终一致性!
在解决缓存一致性的过程中,有多种途径可以保证缓存的最终一致性,应该根据场景来设计合适的方案,读多写少的场景下,可以选择采用“Cache-Aside结合消费数据库日志做补偿”的方案,写多的场景下,可以选择采用“Write-Through结合分布式锁”的方案,写多的极端场景下,可以选择采用“Write-Behind”的方案。
1296 0
|
6月前
|
存储 SQL NoSQL
关系数据库与非关系数据库:选择适当的数据存储方案
关系数据库与非关系数据库:选择适当的数据存储方案
下一篇
无影云桌面