MYSQL8安全之审计管理

这篇具有很好参考价值的文章主要介绍了MYSQL8安全之审计管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

审计概念

审计:记录用户的操作,方便以后查证,但生产环境数据库本身不建议开启,会影响性能,可以使用第三方实现审计。


一、MYSQL8开源审计mysql-audit

mysql5.7企业版自带审计功能,需要付费
社区版可以使用McAfee提供的开源软件mysql Audit Pluging
项目地址:https://github.com/trellix-enterprise/mysql-audit


mysql-audit安装配置


0、下载解压插件

# 下载插件压缩包
wget -c https://github.com/trellix-enterprise/mysql-audit/releases/download/v1.1.13/audit-plugin-mysql-8.0-1.1.13-1008-linux-x86_64.zip

# 解压
unzip audit-plugin-mysql-8.0-1.1.13-1008-linux-x86_64.zip

# 进入lib目录
cd audit-plugin-mysql-8.0-1.1.13-1008/lib

# 赋予可执行权限
chmod +x libaudit_plugin.so 

# 修改属主和属组为msyql:mysql
chown mysql:mysql libaudit_plugin.so 

1、查看mysql的插件位置

-- 查看插件的位置
SHOW global variables LIKE '%plugin_dir%';

image.png


2、上传库文件到插件目录

# 复制到插件目录
cp audit-plugin-mysql-8.0-1.1.13-1008/lib/libaudit_plugin.so /usr/lib64/mysql/plugin/

3. 修改my.cnf

# 停止mysqld服务
systemctl stop mysqld

修改my.cnf配置文件

[mysqld]
# 加载名为 libaudit_plugin.so 的AUDIT审计插件
plugin-load=AUDIT=libaudit_plugin.so
# 启用审计日志以JSON格式记录
audit_json_file=on
# 指定事件审计文件路径
audit_json_log_file=/var/log/mysql-audit.json
# 指定审计事件类型
## 如果不指定audit_record_cmds,所有DDL,DML全记录
audit_record_cmds='insert,delete,update,create,drop,alter,grant,truncate'

image.png
启动mysqld服务

-- 启动mysqld服务
systemctl start mysqld

4、安装插件

-- root登录mysql
mysql -uroot

-- 安装audit插件
install plugin audit soname 'libaudit_plugin.so'-- 查看audit插件版本
SHOW global status LIKE 'audit_version';

image.png


5、查看mysql-audit日志

json查看工具:https://blog.csdn.net/omaidb/article/details/125581170

# 查安装json查看工具jq
dnf install jq -y

# 查看最后100条日志
tail -100 /var/log/mysql-audit.json

# 用jq查看json格式日志
tail -100 /var/log/mysql-audit.json |jq

安装插件报错

安装libaudit_plugin.so插件报错。
image.png


解决办法:

计算mysqld偏移量,重新指定mysqld偏移量。


1、计算偏移量

# 安装gdb包
dnf install -y gdb

# 找到offset-extract.sh脚本

image.png

# 使用offset-extract.sh脚本计算偏移量
offset-extract.sh /usr/sbin/mysqld

2、将偏移量添加到my.cnf中

image.png

[mysqld]
audit_offsets=计算出的偏移量

image.png


3、添加偏移量依然报错

image.png


二、MYSQL自带的init-connect+binlog实现mysql审计


1、创建一份存放连接信息的表

-- 创建一份存放连接信息的表
CREATE database auditdb DEFAULT CHARSET utf8mb4;

-- 进入auditdb库
use auditdb;

-- 创建auditdb.accesslog(访问日志)表
CREATE TABLE auditdb.accesslog(
    ID INT PRIMARY KEY auto_increment,
    ConnectionID INT,
    ConnUserName VARCHAR(30),
    PrivMatchName VARCHAR(30),
    LoginTime timestamp
);

2、配置权限

-- 配置权限
-- 向mysql.db表中插入一条记录,授权所有用户在任意主机上访问auditdb数据库,并具有select和insert的操作权限。
-- host、db、user、select_priv和insert_priv是该表中的字段名;
-- %代表通配符,表示任何IP地址都可以使用此记录匹配;
-- 'auditdb'表示要授权的数据库名称,这里为auditdb;
-- ''表示要授权的用户名称,这里为空字符串,表示所有用户都能匹配上此记录;
-- YY表示该用户对auditdb数据库有select和insert操作的权限。
INSERT into mysql.db(host, db, user, select_priv, insert_priv)
values('%', 'auditdb', '', 'Y', 'Y');

-- 提交事务
cmomit;

-- 应用权限配置
FLUSH PRIVILEGES;

3、配置init-connect

image.png

# 此项配置可以用于记录所有数据库连接的基本信息,以方便审计和监控。
# init-connect:在每个新客户端连接成功后,将执行SQL语句
# 往名为"auditdb.accesslog"的表中插入一条记录,该记录包含连接ID(ConnectionID)、连接用户名(ConnUserName)、权限匹配名(PrivMatchName)和登录时间(LoginTime)等信息。
## connection_id()函数用于获取当前连接的ID,
## user()函数用于获取当前连接的用户名,
## current_use()函数用于获取当前连接所使用的权限匹配名
## now()函数则用于获取当前的系统时间。
init-connect='INSERT into auditdb.accesslog(ConnectionID,ConnUserName,PrivMatchName,LoginTime) values(connection_id(),user(),current_use(),now());'

# 指定binlog的存储路径和文件名前缀
## binlog记录所有对数据库的修改操作,包括插入、更新和删除
log_bin=/var/lib/mysql/binlog
# 指定binlog索引文件的存储路径和文件名
log_bin_index=/var/lib/mysql/binlog.index

重启mysqld服务

# 重启msyql服务
systemctl restart mysqld

4、记录和跟踪测试

如果是root登录,不会记录信息。

# 使用 mysqlbinlog 工具读取名为 binlog.000001 的二进制日志文件
## --start-datetime 和 --stop-datetime 参数分别指定了要搜索的时间范围,即从 2018 年 4 月 12 日 16:53:00 开始,到 2018 年 4 月 12 日 16:55:00 结束
## -i 参数表示忽略大小写
## grep -B 20 显示匹配的前20行
mysqlbinlog --start-datetime='2018-04-12 16:53:00' --stop-datetime='2018-04-12 16:55:00' binlog.000001 |grep -i '关键字' -B 20

image.png
image.png
image.png

-- 查看访问日志表
slect * from auditdb.accesslog;

image.png文章来源地址https://www.toymoban.com/news/detail-492981.html

到了这里,关于MYSQL8安全之审计管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL修炼手册14:用户权限管理:安全保障与数据隔离

    欢迎来到MySQL修炼手册的第14篇,本篇将深入探讨MySQL中用户权限管理的重要性以及如何通过合理的权限控制实现安全保障与数据隔离。在数据库管理中,用户权限的设置至关重要,不仅可以有效保护数据的安全,还能够合理分配数据访问权限,确保数据库的正常运作。让我们

    2024年01月24日
    浏览(36)
  • MySQL8.0 创建用户、配置用户权限、添加外网访问

    添加用户、外网访问 在MySQL 8.0中,root用户的外网访问权限默认是被禁止的。要修改root用户的外网访问权限,您需要进行以下步骤: 连接到MySQL服务器。您可以使用MySQL命令行客户端或其他数据库管理工具。 使用以下命令以root身份登录MySQL: 然后输入您的root用户密码。 输入

    2024年02月12日
    浏览(32)
  • 企业内部安全:利用 ADAudit Plus 管理与加强安全审计

    在现代数字化时代,企业面临着日益复杂和不断变化的安全威胁。为了保护敏感数据、遵守合规要求以及防范内部威胁,企业需要有效的安全审计解决方案。ADAudit Plus 是一款强大而全面的安全审计工具,可以帮助企业管理和加强内部安全。  ADAudit Plus ADAudit Plus 提供了一系列

    2024年02月13日
    浏览(39)
  • MySQL8.0.33主从复制配置记录

    官网:https://dev.mysql.com/downloads/mysql/ 在线下载或者下载到本地再上传 准备wget下载工具: 进入MySQL的bin目录 初始化并得到密码 ./mysqld: error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory 报错,缺依赖:::: yum install -y libaio yum -y install numactl 再初始

    2024年02月02日
    浏览(32)
  • MySQL8.0.22安装过程记录(个人笔记)

    1.点击下载MySQL 2.解压到本地磁盘(注意路径中不要有中文) 3.在解压目录创建my.ini文件 文件内容为 4.配置环境变量 找到系统变量path,选中编辑再新建,把本地磁盘mysql的bin路径复制进来 5.管理员运行cmd 6.切换到MySQL的安装路径 7.输入初始化命令 注意要记住此时生成的密码

    2024年02月10日
    浏览(27)
  • 在CentOS上用yum方式安装MySQL8过程记录

    此文参考官方文档一步一步记录安装到正常运行全过程 安装环境:centos7 mysql版本:8.0.35 安装过程主要参考下面两边文章: 1.官方文档 https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html 2.linux yum安装mysql8 安装过程大概有以下几步: 1.查找mysql源链接 2.安装mysql源(仓库)

    2024年02月07日
    浏览(37)
  • Mysql8.0 安全配置

            目前业界的MySQL主流分支版本有Oracle官方版本的MySQL、Percona Server for mysql、MariaDB 。每个分支都有自己的特色,功能也存在不同的差异。我们平常使用的官方版本是指的ORACLE官方版本的Mysql, 官方版本主要分为社区版和企业版 , 两者的差异主 要在一些定制插件方面

    2024年02月17日
    浏览(32)
  • MYSQL8安全之SSL认证

    SSL(Secure Socket Layer: 安全套接字) 利用数据加密,身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议。 SSL协议提供的功能主要有: 数据传输的机密性;利用对称密钥算法对传输的数据进行加密 身份验证机制:基于证书利用数字签名方法对服务器和客户端进行

    2024年02月09日
    浏览(31)
  • 在CentOS上用yum方式安装MySQL8真实全过程记录(顺利版本)

    此文参考我前面的文章《在CentOS上用yum方式安装MySQL8过程记录》,之前比较曲折,现在再安装一台mysql。 因为之前很多坑已经走过,加上这台Linux之前没安装过MYSQL,所以整个过程算是非常顺利。 安装环境:centos7 mysql版本:8.0.35 (为方便理解,以下为完整过程 ) 然后直接使

    2024年02月07日
    浏览(39)
  • MYSQL8安全之SSL认证_mysql ssl(2),网络安全外包是如何转正网易的

    2、配置SSL证书 https://blog.csdn.net/Sn_Keys/article/details/126425869 [mysqld] ssl-ca=/path/to/ca.pem ssl-cert=/path/to/server_cert.pem ssl-key=/path/to/server_key.pem [client] ssl-ca=/path/to/ca.pem ssl-cert=/path/to/client_cert.pem ssl-key=/path/to/client_key.pem 重启mysql服务 systemctl restart mysqld 检查状态 – 检查数据库是否启用S

    2024年04月11日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包