【openGauss数据库审计项配置审计日志维护】--略有小成

news2024/9/21 20:51:13

【openGauss数据库审计项配置&审计日志维护】--略有小成

    • 🔻 一、openGauss数据库审计
      • 🔰 1.1 关于openGauss审计功能
      • 🔰 1.2 openGauss审计功能开启
      • 🔰 1.3 配置具体的审计项
    • 🔻 二、查看审计结果
    • 🔻 三、维护审计日志
      • 🔰 3.1 审计日志相关配置参数
      • 🔰 3.2 记录审计内容的方式
      • 🔰 3.3 审计日志的维护
        • ⛳ 3.3.1 设置自动删除审计日志
        • ⛳ 3.3.2 手动备份审计文件
        • ⛳ 3.3.3 手动删除审计日志
    • 🔻 四、总结—温故知新

在这里插入图片描述


👈【上一篇】
💖The Begin💖 点点关注,收藏不迷路💖
【下一篇】👉

🔻 一、openGauss数据库审计

数据库安全对数据库系统来说至关重要。openGauss将用户对数据库的所有操作写入审计日志

数据库安全管理员可以利用这些日志信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等

🔰 1.1 关于openGauss审计功能

🌳1、审计总开关audit_enabled支持动态加载。在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。默认值为on,表示开启审计功能。

🌳2、除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。

🌳3、各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。

openGauss数据库审计项描述
用户登录、注销审计参数:audit_login_logout,默认值为7,表示开启用户登录、退出的审计功能。设置为0表示关闭用户登录、退出的审计功能。不推荐设置除0和7之外的值
数据库启动、停止、恢复和切换审计参数:audit_database_process,默认值为1,表示开启数据库启动、停止、恢复和切换的审计功能。
用户锁定和解锁审计参数:audit_user_locked,默认值为1,表示开启审计用户锁定和解锁功能。
用户访问越权审计参数:audit_user_violation,默认值为0,表示关闭用户越权操作审计功能。
授权和回收权限审计参数:audit_grant_revoke,默认值为1,表示开启审计用户权限授予和回收功能。
对用户操作进行全量审计参数:full_audit_users,默认值为空字符串,表示采用默认配置,未配置全量审计用户。
不需要审计的客户端名称及IP地址参数:no_audit_client,默认值为空字符串,表示采用默认配置,未将客户端及IP加入审计黑名单。
数据库对象的CREATE,ALTER,DROP操作审计参数:audit_system_object,默认值为67121159,表示只对DATABASE、SCHEMA、USER、DATA SOURCE这四类数据库对象的CREATE、ALTER、DROP操作进行审计。
具体表的INSERT、UPDATE和DELETE操作审计参数:audit_dml_state,默认值为0,表示关闭具体表的DML操作(SELECT除外)审计功能。
SELECT操作审计参数:audit_dml_state_select,默认值为0,表示关闭SELECT操作审计功能。
COPY审计参数:audit_copy_exec,默认值为1,表示开启copy操作审计功能。
存储过程和自定义函数的执行审计参数:audit_function_exec,默认值为0,表示不记录存储过程和自定义函数的执行审计日志。
执行白名单内的系统函数审计参数:audit_system_function_exec,默认值为0,表示不记录执行系统函数的审计日志。
SET审计参数:audit_set_parameter,默认值为0,表示关闭SET审计功能。
事务ID记录参数:audit_xid_info,默认值为0,表示关闭审计日志记录事务ID功能。

🔰 1.2 openGauss审计功能开启

###🍀1、以用户omm登录数据库节点、连接postgres数据库🍀###
[root@klgdj ~]# su - omm

[omm@klgdj ~]$ gsql -d postgres -p 15400

###🍀或者使用下面任一命令连接数据库

[omm@klgdj ~]$ gsql postgres://omm:omm用户密码@127.0.0.1:端口号/postgres -r
[omm@klgdj ~]$ gsql -d "host=127.0.0.1 port=端口号 dbname=postgres user=omm password=omm用户密码"


###🍀2、检查审计总开关audit_enabled状态🍀###
###🍀用show命令显示审计总开关audit_enabled的值🍀###

openGauss=# SHOW audit_enabled;
 audit_enabled 
---------------
 on
(1 row)

openGauss=# 

###🍀3、如果显示为off,执行‘\q’命令退出数据库🍀###

openGauss=# \q

###🍀4、开启审计功能,参数设置立即生效🍀###
取值范围:布尔型
on表示启动审计功能。
off表示关闭审计功能。

[omm@klgdj ~]$ gs_guc set -N all -I all -c "audit_enabled=on"

🔰 1.3 配置具体的审计项

🌳1、只有开启审计功能,用户的操作才会被记录到审计文件中

🌳2、各审计项的默认参数都符合安全标准,可以根据需要开启其他审计功能,但会对性能有一定影响

###💯1、开启对数据库所有对象的增删改操作的审计开关###

[omm@klgdj ~]$ gs_guc reload -N all -I all -c "audit_system_object=12295"

----其中audit_system_object代表对数据库所有对象的增删改操作的审计开关,12295为该审计开关的值。
###💯2、开启用户访问越权审计###

[omm@klgdj ~]$ gs_guc reload -N all -I all -c "audit_user_violation=1"

----其中audit_user_violation代表审计项开关,
取值范围: 整型,0(关闭)、1(开启)。
###💯3、开启具体表的INSERT、UPDATE和DELETE操作审计###

[omm@klgdj ~]$ gs_guc reload -N all -I all -c "audit_dml_state=1"

----其中audit_dml_state参数取值范围:整型,0、1。
0表示关闭具体表的DML操作(SELECT除外)审计功能。
1表示开启具体表的DML操作(SELECT除外)审计功能。

------其他审计配置项的设置方法类似。根据参数值设置即可,但会对性能有一定影响

🔻 二、查看审计结果

前置条件:

🌳1、审计功能总开关已开启。需要审计的审计项开关已开启。

🌳2、数据库正常运行,并且对数据库执行了一系列增、删、改、查操作,保证在查询时段内有审计结果产生。

🌳3、数据库各个节点审计日志单独记录。

🌳4、只有拥有AUDITADMIN属性的用户才可以查看审计记录。

审计查询命令是数据库提供的sql函数pg_query_audit

pg_query_audit(timestamptz startime,timestamptz endtime,audit_log)

其中,参数startimeendtime分别表示审计记录的开始时间和结束时间,audit_log表示所查看的审计日志信息所在的物理文件路径,当不指定audit_log时,默认查看连接当前实例的审计日志信息


###🍀omm用户登录、查询审计记录🍀###
openGauss=# select * from pg_query_audit('2023-06-10 08:00:00','2023-06-22 23:00:00');

在这里插入图片描述

        time          |      type      | result | userid | username  | database  |     client_conninfo     |    object_name    |	detail_info	|     node_name     |            thread_id            | local_port | remote_port
------------------------+----------------+--------+--------+-----------+-----------+-------------------------+-------------------+--------------+-------------------+---------------------------------+------------+-------------
2023-06-18 16:36:03+08 | login_success  | ok     | 10     | omm       | postgres  | gs_ctl@192.168.181.71     | postgres    | login db(postgres) success,t
he current user is:omm, SSL=off                                                     | dn_6001   | 139918693103360@740392563434480 | 15401      | 43406

该条记录表明,用户omm在2023-06-18 16:36:03+08时间点登录数据库postgres。
其中client_conninfo字段在log_hostname启动且IP连接时,字符@后显示反向DNS查找得到的主机名。
SSL=on表示客户端通过SSL连接,SSL=off表示客户端没有通过SSL连接。

🔻 三、维护审计日志

🔰 3.1 审计日志相关配置参数

配置项含义默认值
audit_directory审计文件的存储目录/var/log/gaussdb/用户名/pg_audit
audit_resource_policy审计日志的保存策略on(表示使用空间配置策略)
audit_space_limit审计文件占用的磁盘空间总量1GB
audit_file_remain_time审计日志文件的最小保存时间90
audit_file_remain_threshold审计目录下审计文件的最大数量1048576

审计日志删除命令为数据库提供的sql函数pg_delete_audit

pg_delete_audit(timestamp startime,timestamp endtime)

其中,参数startime和endtime分别表示审计记录的开始时间和结束时间。

🔰 3.2 记录审计内容的方式

方式优点缺点
记录到表中不需要用户维护审计日志由于表是数据库的对象,如果一个数据库用户具有一定的权限,就能够访问到审计表。如果该用户非法操作审计表,审计记录的准确性难以得到保证。
记录到OS文件中比较安全,即使一个帐户可以访问数据库,但不一定有访问OS这个文件的权限需要用户维护审计日志

从数据库安全角度出发,openGauss采用记录到OS文件的方式来保存审计结果,保证了审计结果的可靠性。

🔰 3.3 审计日志的维护

⛳ 3.3.1 设置自动删除审计日志

审计文件占用的磁盘空间或者审计文件的个数超过指定的最大值时,系统将删除最早的审计文件,并记录审计文件删除信息到审计日志中。

审计文件占用的磁盘空间大小默认值为1024MB,可以根据磁盘空间大小重新设置参数。

###🍀1、以用户omm登录数据库节点、连接postgres数据库🍀###
[root@klgdj ~]# su - omm

[omm@klgdj ~]$ gsql -d postgres -p 15400

###🍀2、配置审计文件占用磁盘空间的大小(audit_space_limit)🍀###
###🍀查看已配置的参数🍀###
openGauss=# SHOW audit_space_limit;
 audit_space_limit 
-------------------
 1GB
(1 row)

openGauss=# 

###🍀如果显示结果不为1GB(1024MB),执行“\q”命令退出数据库🍀###
###🍀3、设置audit_space_limit参数成默认值1024MB🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "audit_space_limit=1024MB"


###🍀4、配置审计文件个数的最大值(audit_file_remain_threshold)🍀###
###🍀查看已配置的参数🍀###
openGauss=# SHOW audit_file_remain_threshold;
 audit_file_remain_threshold 
-----------------------------
 1048576
(1 row)

openGauss=# 

###🍀如果显示结果不为1048576,执行“\q”命令退出数据库🍀###
###🍀5、设置audit_file_remain_threshold参数值成默认值1048576🍀###
[omm@klgdj ~]$ gs_guc reload -N all -I all -c "audit_file_remain_threshold=1048576"

⛳ 3.3.2 手动备份审计文件

当审计文件占用的磁盘空间或者审计文件的个数超过配置文件指定的值时,系统将会自动删除较早的审计文件,因此需要周期性地对比较重要的审计日志进行保存。

###🍀1、使用show命令获得审计文件所在目录(audit_directory)🍀###
openGauss=# SHOW audit_directory;
          audit_directory          
-----------------------------------
 /var/log/omm/omm/pg_audit/dn_6001
(1 row)

openGauss=# 

###🍀2、将审计目录整个拷贝出来进行保存🍀###

在这里插入图片描述

⛳ 3.3.3 手动删除审计日志

当不再需要某时段的审计记录时,可以使用审计接口命令pg_delete_audit进行手动删除。

###💯 删除2023-06-18到2023-06-22之间的审计记录###
openGauss=# SELECT pg_delete_audit('2023-06-18 00:00:00','2023-06-22 23:59:59');
 pg_delete_audit 
-----------------
 
(1 row)

openGauss=# 

🔻 四、总结—温故知新

❓ openGauss数据库---审计功能、有关审计参数详解
❓ openGauss数据库---审计功能开启和关闭
❓ openGauss数据库---配置有关具体审计项
❓ openGauss数据库---审计结果查看
❓ openGauss数据库---审计日志相关参数配置
❓ openGauss数据库---审计日志维护(自动删除、手动删除、审计日志备份)

👈【上一篇】
💖The End💖 点点关注,收藏不迷路💖
【下一篇】👉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/675324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day13_类中成员之一:构造器

由来 我们发现我们new完对象时,所有成员变量都是默认值,如果我们需要赋别的值,需要挨个为它们再赋值,太麻烦了。我们能不能在new对象时,直接为当前对象的某个或所有成员变量直接赋值呢。可以,Java给我们提…

详解c++---map和set的封装

目录标题 前言红黑树的基本代码map和set的封装红黑树迭代器红黑树迭代器- -begin和end函数代码测试const迭代器方括号的实现 前言 通过之前的学习我们知道set容器中存储的数据是k,map容器中存储的数据是k和v,但是这两个容器底层都是通过红黑树来进行实现…

blfs:为lfs虚拟机增加桌面01

vmware中克隆一份lfs,扩大硬盘分区再操作。 1、硬盘拓展容量,分区挂载到/home(已有的大小在后面编译桌面系统会捉襟见肘) 使用fdisk进行分区 fdisk /dev/sda 执行p w分区并保存 mkfs -v -t ext4 /dev/sda4 转ext4格式 让/…

uniapp中使用mixins(混入)

mixins 选项接收一个混入对象的数组。这些混入对象可以像正常的实例对象一样包含实例选项,这些选项将会被合并到最终的选项中,使用的是和 Vue.extend() 一样的选项合并逻辑。也就是说,如果你的混入包含一个 created 钩子,而创建组…

如何使用ffmpeg将BDMV(m2ts)转换成MKV、MP4等其他格式的文件

BDMV 是蓝光碟使用的格式。这种格式没有办法使用播放软件播放,必须要用硬盘播放器,也就是专门的设备。但是最经典的 ffmpeg 可以将其转换成其他格式,并且保持相同的码率和清晰度,这样就可以很方便的查看了。 本文使用 macOS 进行…

加速度计的原理与应用

什么是加速度计 加速度计是一种传感器,可以测量物体所受加速的大小和方向。 加速度计的工作原理 传统加速度计利用质量和弹簧的相互作用来感应加速度,当物体收到加速度时,弹簧会发生变形,通过衡量这种变形来测量加速度的大小。 …

postgresql | 数据库| 生成2000W条的简单测试表

前言: 数据库学习的过程中,很可能需要数据量比较大的表来进行模拟测试,那么,测试表的创建需要遵循的是贴近实际的生产环境,尽量的模仿实际的生产环境。 因此,学习数据库的时候,快速的创建一个…

chatgpt赋能python:Python求单词长度:基于字符串操作的简单实现

Python求单词长度:基于字符串操作的简单实现 Python作为一种广泛应用于各个领域的编程语言,其强大的字符串操作功能在文本处理中经常被使用。本篇文章将介绍基于Python的字符串操作实现单词长度的方法。 什么是单词长度 在文本处理中,单词…

【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】

目录 一、NoSQL 和 SQL 区别二、认识 Redis三、Redis 的数据结构介绍四、Redis 通用命令五、String 类型六、key 的格式七、Hash(散列)类型八、List 类型九、Set 类型十、SortedSet 类型(可排序) 一、NoSQL 和 SQL 区别 二、认识 …

macOS Sonoma编译OpenCV源码输出IOS平台库

1.macOS下载并编译OpenCV源码: 克隆源码: 主仓: git clone https://github.com/opencv/opencv.git 扩展仓: git clone https://github.com/opencv/opencv_contrib.git 编译xcode源码需要CMake与XCode命令行工具 确认已安装CMake 确认已安装XCode 安装xcode command l…

UNZIP

目录 搭建环境 做题开始 通过ln直接创建 通过mkdir 后进行ln 搭建环境 这次是在自己的靶机环境里面搭建 cd /var/www/html index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</ti…

罗技k380键盘教程

在智能手机和平板电脑上享受台式电脑般舒适便捷的输入体验。罗技蓝牙™ 多设备键盘 K380 是一款小巧独特的键盘&#xff0c;让您在家中任何地方都能使用个人设备进行沟通和创作。 借助便捷的易于切换™ 按钮&#xff0c;可以通过蓝牙™ 无线技术同时连接最多三台设备&#xff…

【LeetCode】动态规划 刷题训练(一)

文章目录 面试题 08.01. 三步问题题目解析状态转移方程完整代码 746. 使用最小花费爬楼梯题目解析状态转移方程完整代码 91. 解码方法题目解析状态转移方程情况1&#xff1a;让i位置的数&#xff0c;单独去解码情况2&#xff1a;让i位置的数 和i-1位置的数 结合 一起去解码 完整…

安全合规进入场景细分时代

2022年6月1日&#xff0c;《中华人民共和国网络安全法》&#xff08;以下简称《网络安全法》&#xff09;正式实施迎来5周年。 作为国家实施网络空间管辖的第一部法律&#xff0c;《网络安全法》标志着我国网络安全工作有了基础性的法律框架&#xff0c;意味着建设网络强国的制…

chatgpt赋能python:Python清空:如何在Python中使用清空来删除变量和数据结构中的所有元素

Python清空&#xff1a;如何在Python中使用清空来删除变量和数据结构中的所有元素 在Python编程中&#xff0c;我们常常需要删除变量和数据结构中的元素。Python提供了多种方法来实现这一点&#xff0c;其中最常用的方法之一就是使用清空功能。在本文中&#xff0c;我们将介绍…

【期末总复习】机器学习(公式推导与代码实现)鲁伟

【第一章】机器学习预备知识 1、了解机器学习的发展简史 2、复述出训练集、验证集和测试集的作用 训练集&#xff08;Training set&#xff09; 作用是用来拟合模型&#xff0c;通过设置分类器的参数&#xff0c;训练分类模型。后续结合验证集作用时&#xff0c;会选出同一参…

chatgpt赋能python:Python教程:求反向位置的字母

Python教程&#xff1a;求反向位置的字母 在这篇文章中&#xff0c;我们将介绍如何使用Python编程语言来找到给定字符串中的反向位置的字母。这是一个有趣的编程问题&#xff0c;特别是对于那些喜欢解决有趣问题的人来说&#xff0c;同时本文也将从SEO的角度来讲解如何优化文本…

LNMP搭建

一、编译安装nginx1.1 关闭防火墙&#xff0c;将安装nginx所需软件包传到/opt目录下并解压1.2 安装依赖包1.3 创建运行用户与组1.4 编译安装Nginx1.5 检查配置文件是否配置正确&#xff0c;并启动nginx服务 二、安装 MySQL 服务2.1 安装Mysql环境依赖包2.2 创建运行用户2.3 编译…

前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件

前端Vue自定义简单好用商品分类列表组件 侧边栏商品分类组件 &#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13148 效果图如下&#xff1a; # cc-defineCateList #### 使用方法 使用方法 <!-- data:商品列表数组…

C专家编程 —— 链接的思考

文章目录 编译器的作用动态链接和静态链接动态链接动态链接的优点 函数库链接的几个小秘密 编译器的作用 通常编译器被氛围六七个小的程序&#xff1a; C预处理器&#xff0c;得到main.i文件前端做语法语义分析&#xff0c;然后后端生成汇编的指令代码main.s文件优化器可以放…