2

dba+开源工具:轻量级数据库审计日志平台,违规操作无所遁形(附下载) - 更多 - dbap...

 1 year ago
source link: https://dbaplus.cn/news-160-4581-1.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

dba+开源工具:轻量级数据库审计日志平台,违规操作无所遁形(附下载)

dbaplus社群 2022-06-27 10:08:54

工具研发者介绍

贺春旸,凡普金科和爱钱进DBA团队负责人,《MySQL管理之道:性能调优、高可用与监控》第一、二版作者,曾任职于中国移动飞信、安卓机锋网。四次荣获dbaplus年度MVP,致力于MariaDB、MongoDB等开源技术的研究,主要负责数据库性能调优、监控和架构设计。本文摘自作者即将发布的新书《MySQL运维进阶指南》,敬请期待。

工具下载:

https://loganalyzer.adiscon.com/download/

数据库审计日志平台简介

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

目前有两种技术方案:

第一种:部署在数据库服务器所在的网络,采用旁路监听方式截取用户访问数据库的TCP头报文,该系统是由数据采集、数据处理和安全检测三个模块组成。

第二种:依赖于开启MariaDB Audit Plugin插件的审计方法,存在的弊端是数据库审计功能的开启会影响数据库本身的性能、审计日志以txt文本格式存放在本地磁盘里,对于审计数据的挖掘和迅速定位是个棘手问题。

在MariaDB 10.6版本里,可以通过使用Rsyslog日志系统将审计日志汇总至一台专用的MySQL数据库里,并且可以自定义事件记录,比如我们想追溯某时刻谁误删除了数据,可以禁止记录select查询操作,然后借助Loganalyzer做展示,架构如下图所示:

图片

注:LogAnalyzer是一款syslog日志和其它网络事件数据的Web前端,提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。

审计日志数据从专用存放syslog的数据库中获取,所以LogAnalyzer不需要改变现有的架构。通过对数据库的SQL语义分析,提取出SQL中相关的要素(用户、SQL操作、表、字段、时间)实时监控来自各个层面的所有数据库活动(包括来自应用系统发起的数据库操作请求、来自数据库客户端工具的操作请求,以及通过远程登录服务器后的操作请求等),让管理人员对用户的行为一目了然,真正做到数据库操作行为可监控、违规操作可追溯。

本文以第二种方案进行介绍,借助LogAnalyzer打造轻量级数据库审计日志平台。

部署步骤

环境概述:

  1. MySQL/MariaDB主库安装Audit Plugin插件;

  2. MySQL/MariaDB主库配置Rsyslog使用ommysql模块;

  3. 准备一台专用存放syslog审计日志的MySQL数据库服务器;

  4. 准备LAMP环境,运行web可视化日志分析软件LogAnalyzer,可与专用存放syslog审计日志的MySQL数据库服务器部署在一起。

数据库审计日志平台部署:

1、要启用MySQL/MariaDB主库节点的审计,我们首先需要将 MariaDB审计插件server_audit.so文件复制到每个服务器的插件目录中,然后可以在所有节点上加载插件。

MySQL>  INSTALL PLUGIN server_audit SONAME 'server_audit.so';

2、配置审计插件:MariaDB审计插件还支持使用Rsyslog来记录事件。Rsyslog本身为我们提供了很多选项,其中之一是将日志条目转发到远程Rsysog进程。为了能够使用本地syslog,我们需要更改参数变量server_audit_output_type的值。

MySQL>  SET GLOBAL server_audit_output_type = syslog;

3、由于我们只想转发由MariaDB审计插件创建的syslog日志,我们将使用变量 server_audit_syslog_facility来为syslog配置过滤器。

MySQL>  SET GLOBAL server_audit_syslog_facility = LOG_LOCAL6;

4、想追溯某时刻谁误删除误更改了数据,我们可以禁止记录select查询操作,需要更改参数变量server_audit_events的值。

MySQL>  SET GLOBAL server_audit_events = 'QUERY_DDL ,QUERY_DML_NO_SELECT';

只会记录增删改、DDL操作。

5、开启审计日志的记录。

MySQL>  SET GLOBAL server_audit_logging = 1;

6、安装Rsyslog连接至MySQL的驱动模块:现在为MariaDB审计插件已经配置完毕。我们可以启用审计,但它只会写入本地系统日志/var/log/messages文件里,无法推送远程专用存放syslog审计日志的MySQL数据库服务器里。

Shell>  yum install rsyslog-mysql -y

7、在专用存放syslog审计日志的MySQL数据库准备syslog的用户账号。

MySQL>  GRANT ALL ON Syslog.* TO 'rsyslog'@'localhost' IDENTIFIED BY 'rsyslogpass';MySQL>  GRANT ALL ON Syslog.* TO 'rsyslog'@'%' IDENTIFIED BY 'rsyslogpass';

8、生成存放syslog数据的库和表。

Shell>  rpm -ql  rsyslog-mysql/usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql
Shell>  mysql  -h127.0.0.1  -ursyslog  -prsyslogpass            <  /usr/share/doc/rsyslog-8.24.0/mysql-createDB.sql

9、配置Rsyslog使用ommysql模块,将所期望的日志信息记录于MySQL数据库中。

Shell>  vim /etc/rsyslog.conf#### MODULES ####
......
$ModLoad imudp           #加载udp的模块$UDPServerRun 514         #允许接收udp 514的端口传来的日志$ModLoad imtcp           #加载tcp的模块$InputTCPServerRun 514        #允许接收tcp 514的端口传来的日志$ModLoad ommysql          #加载mysql的模块

10、配置RULES,将所期望的日志信息记录于专用存放syslog审计日志的MySQL数据库服务器。

Shell>  vim /etc/rsyslog.conf#### RULES ####$ActionOmmysqlServerPort  3306local6.*       :ommysql:192.168.198.239,Syslog,rsyslog,rsyslogpass

注:192.168.198.239这个IP,是syslog审计日志MySQL服务器地址,3306是MySQL端口号,ryslog是库名,ryslog是用户名,rsyslogpass是密码。

11、重启rsyslog服务。

Shell>  systemctl restart rsyslog

至此rsyslog服务已经配置完毕。在MySQL/MariaDB主库上执行增删改、DDL操作,就会把审计日志推送至syslog审计日志MySQL服务器的Syslog库systemevents表里。

12、安装web可视化的日志分析软件loganalyzer。

Shell>  yum -y install httpd php php-mysql php-gdShell>  systemctl start httpd.serviceShell>  cd /var/www/html/Shell>  wgethttps://download.adiscon.com/loganalyzer/loganalyzer-4.1.12.tar.gzShell>  tar  zxvf  loganalyzer-4.1.12.tar.gzShell>  mv  loganalyzer-4.1.12  loganalyzerShell>  touch  loganalyzer-4.1.12/src/config.phpShell>  chmod  755  loganalyzer-4.1.12/src/config.php

打开浏览器,配置loganalyzer软件,输入网址:http://yourip/loganalyzer/src/install.php

  • source type:选MYSQL Native

  • select view:选Syslog Fields

  • Table type:选MonitorWare

  • database host:127.0.0.1

  • database name:Syslog

  • database tablename:SystemEvents

  • database user:syslog

  • database password:写上之前你设定的sysylog用户的数据库密码

最后点Next按钮,完成初始化loganalyer。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK