GBase8c 数据库审计项配置审计日志维护

一、数据库审计

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

1.1 关于审计功能

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

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

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

数据库审计项描述
用户登录、注销审计参数: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 审计功能开启
[root@c1 ~]# # 1、以用户gbase登录数据库节点、连接gbase数据库
[root@c1 ~]# su - gbase
[gbase@c1 ~]$ gsql -r -d gbase -p 15400
gsql (single_node GBase8cV5 S5.0.0B17 build 32f8156d)
Non-SSL connection (SSL connection is recommended when requiring high-security) Type "help" for help.gbase=# -- 2、检查审计总开关audit_enabled状态
gbase=# -- 用show命令显示审计总开关audit_enabled的值
gbase=# show audit_enabled;audit_enabled
---------------off
(1 row)gbase=# -- 3、如果显示为off,代表未开启审计,执行‘\q’命令退出数据库
gbase=# \q[gbase@c1 ~]$ # 4、执行以下命令开启审计
[gbase@c1 ~]$ gs_guc set -N all -I all -c "audit_enabled=on"
The gs_guc run with the following arguments: [gs_guc -N all -I all -c audit_enabled=on set ].
Begin to perform the total nodes: 1.
Popen count is 1, Popen success count is 1, Popen failure count is 0.
Begin to perform gs_guc for datanodes.
Command count is 1, Command success count is 1, Command failure count is 0.Total instances: 1. Failed instances: 0.
ALL: Success to perform gs_guc!
1.3 配置具体的审计项

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

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

1.3.1 开启对数据库所有对象的增删改操作的审计开关
[gbase@c1 ~]$ gs_guc reload -N all -I all -c "audit_system_object=12295"-- 其中 audit_system_object 代表对数据库所有对象的增删改操作的审计开关,12295为该审计开关的值。
1.3.2 开启用户访问越权审计
[gbase@c1 ~]$ gs_guc reload -N all -I all -c "audit_user_violation=1"-- 其中audit_user_violation代表审计项开关,
取值范围: 整型,0(关闭)、1(开启)。
1.3.3 开启具体表的INSERT、UPDATE和DELETE操作审计
[gbase@c1 ~]$ 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、只有拥有 Sysadmin 属性的用户才可以查看审计记录。

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

pg_query_audit(timestamptz startime,timestamptz endtime,audit_log)

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

登录查询审计记录

gbase=# select * from pg_query_audit('2024-03-01 00:00:00','2024-03-02 24:00:00');
SELECT * FROM pg_query_audit(NOW() - INTERVAL '1 day',NOW());

三、维护审计日志

3.1 审计日志相关配置参数
配置项含义默认值
audit_directory审计文件的存储目录$GAUSSLOG/gbase/pg_audit
audit_resource_policy审计日志的保存策略on(表示使用空间配置策略);off (表示使用时间配置策略)
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这个文件的权限需要用户维护审计日志

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

3.3 审计日志的维护
3.3.1 设置自动删除审计日志

审计文件占用的磁盘空间或者审计文件的个数超过指定的最大值时,系统将删除最早的审计文件,并记录审计文件删除信息到审计日志中。审计文件占用的磁盘空间大小默认值为1024MB,可以根据磁盘空间大小重新设置参数。

[root@c1 ~]$ # 1、以用户gbase登录数据库节点、连接gbase数据库
[root@c1 ~]$ su - gbase[gbase@c1 ~]$ gsql -d postgres -p 15400gbase=# -- 2、配置审计文件占用磁盘空间的大小(audit_space_limit)
gbase=# -- 查看已配置的参数
gbase=# SHOW audit_space_limit;audit_space_limit 
-------------------1GB
(1 row)
gbase=# -- 4、配置审计文件个数的最大值(audit_file_remain_threshold)
gbase=# -- 查看已配置的参数
gbase=# SHOW audit_file_remain_threshold;audit_file_remain_threshold 
-----------------------------1048576
(1 row)gbase=# -- 如果显示结果不为1GB(1024MB),执行“\q”命令退出数据库gbase=# \q[gbase@c1 ~]$ # 3、设置 audit_space_limit 参数成默认值1024MB
[gbase@c1 ~]$ gs_guc reload -N all -I all -c "audit_space_limit=1024MB"
[gbase@c1 ~]$ # 如果显示结果不为 1048576,执行“\q”命令退出数据库
[gbase@c1 ~]$ # 5、设置 audit_file_remain_threshold 参数值成默认值 1048576
[gbase@c1 ~]$ gs_guc reload -N all -I all -c "audit_file_remain_threshold=1048576"
3.3.2 手动备份审计文件

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

[gbase@c1 ~]$ # 1、使用show命令获得审计文件所在目录(audit_directory)
[gbase@c1 ~]$ gsql -d postgres -p 15400
gbase=# SHOW audit_directory;audit_directory
-----------------------------------------------------/dbdata/single_alone/log/omm/gbase/pg_audit/dn_6001
(1 row)gbase=# \q[gbase@c1 ~]$ # 2、将审计目录整个拷贝出来进行保存
[gbase@c1 ~]$ ls /dbdata/single_alone/log/omm/gbase/pg_audit/dn_6001
3.3.3 手动删除审计日志

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

[gbase@c1 ~]$ # 删除2023-06-18到2023-06-22之间的审计记录
gbase=# SELECT pg_delete_audit('2023-06-18 00:00:00','2023-06-22 23:59:59');pg_delete_audit 
-----------------(1 row)gbase=# \q
3.3.4 配置时间策略审计管理
gbase=# -- 调整audit_resource_policy策略为off,即表示使用时间配置策略
gbase=# show audit_resource_policy;audit_resource_policy
-----------------------on
(1 row)gbase=# -- 调整 audit_file_remain_time 审计日志保存时间,即自动保留三个月的审计日志;
gbase=# show audit_file_remain_time ;audit_file_remain_time
------------------------90
(1 row)

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

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

相关文章

C++(Qt)软件调试---符号转换工具cv2pdb (24)

C(Qt)软件调试—符号转换工具cv2pdb (24) 文章目录 C(Qt)软件调试---符号转换工具cv2pdb (24)[toc]1、概述🐜2、下载cv2pdb🪲3、qt程序使用cv2pdb🦧1.1 方法1:命令行1.2 方法2&#…

MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中

MySQL技巧之跨服务器数据查询:高级篇-先调用A数据库的MySql存储过程再复制到B数据库的表中 基础篇已经描述:借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的…

ReactPress与WordPress:两大开源发布平台的对比与选择

ReactPress与WordPress:两大开源发布平台的对比与选择 在当今数字化时代,内容管理系统(CMS)已成为各类网站和应用的核心组成部分。两款备受欢迎的开源发布平台——ReactPress和WordPress,各自拥有独特的优势和特点&am…

Python多进程间通讯(包含共享内存方式)

文章目录 1 通过非共享内存配合队列方式2 通过共享内存配合队列方式 注:本博文测试环境为Linux系统。 1 通过非共享内存配合队列方式 下面是一个常见的生产者与消费者的模式示例,这里分别启动了两个子进程,一个为生产者(producer…

djang5 官网_polls_app_05( 关于代码测试)

这篇教程从 教程4 结束的地方开始。已经构建了一个网络投票应用程序,现在将为其创建一些自动化测试。 1. 原因: 雅各布卡普兰-莫斯(Jacob Kaplan-Moss),Django的原始开发者之一,说过:“没有测…

准双向/弱上拉(标准8051输出模式)、仅为输入(高阻)、开漏输出、推挽输出、上拉电阻、下拉电阻都是什么?

准双向/弱上拉(标准8051输出模式): 弱上拉:即输出的1驱动能力是有限的 准双向:可以输入也可以输出 为什么是弱上拉呢? 当三极管断开的时候,“内部输入”处应该是高电平(前提的后端…

Linux高阶——1110—死锁问题原子访问线程控制与调度线程同步

目录 1、旋转锁 2、死锁问题 死锁问题举例: 1、双线程死锁 代码 成功截图 2、单线程死锁 死锁问题处理: 死锁问题预防: 有向图 3、原子访问 1、原子访问概念 2、原子访问可用函数 原代码 未加锁代码输出 修改后代码 修改后截…

python入门3

IDE的概念 IDE(Integrated Development Environment)又被称为集成开发环境。说白了,就是有一款图形化界面的软件,它集成了编辑代码,编译代码,分析代码,执行代码以及调试代码等功能。在我们Python开发中,最常…

Ollama—87.4k star 的开源大模型服务框架!!

这一年来,AI 发展的越来越快,大模型使用的门槛也越来越低,每个人都可以在自己的本地运行大模型。今天再给大家介绍一个最厉害的开源大模型服务框架——ollama。 项目介绍 Ollama 是一个开源的大语言模型(LLM)服务工具…

mysql中的EXISTS和NOT EXISTS使用详解

本文来编写一个实例说下mysql中的EXISTS和NOT EXISTS使用详解 文章目录 exists用法SQL中in, not in, exists, not exists的区别使用实例本文小结 exists用法 exists: 如果括号内子查询语句返回结果不为空,说明where条件成立,就会执行主SQL语句。如果括号…

海量数据去重的哈希与布尔过滤器

目录 散列表 hash与平衡二叉树比较: 散列表组成: hash函数 作用&#xff1a; 怎么选择hash&#xff1a; 选择标准: 常用hash: hash的操作: hash冲突 产生原因 如何描述冲突程度: 解决冲突: 在合理范围内:used < size: 不在合理范围内&#xff08;used > s…

快速掌握——python类 封装[私有属性方法]、继承【python进阶】(内附代码)

1.类的定义 与 实例化对象 在python中使用class关键字创建一个类。 举例子 class Stu(object):id 1001name 张三def __init__(self):passdef fun1(self):pass# 实例化对象 s1 Stu() s2 Stu() print(s1.name) print(s2.name) 第一个方法 __init__是一种特殊的方法&#x…

PO 证书链

提到服务器间证书交换会不会头大,这两天遇到一个B2B接口的通讯证书问题,借机涨姿势,分享之 通常服务器之间通讯证书使用有两种方式: 如果不是生产机,可以简单的使用自签名证书,自签名证书就是下面这两个信息相同,都是自己,工具这里就不介绍了,多的是。双方互换证书,你…

HarmonyOS App 购物助手工具的开发与设计

文章目录 摘要引言功能需求分析技术方案与设计架构设计技术选型 代码示例Demo数据抓取模块数据存储模块历史价格查询和数据可视化模块完整界面布局和调用示例代码详解 QA环节总结参考资料 摘要 随着促销活动的增多&#xff0c;用户面临真假折扣的困惑&#xff0c;特别是在一些…

MPTCP协议

介绍 多路径TCP或 MPTCP协议是标准的扩展传输控制协议并在中进行了描述 RFC 8684号文件它允许设备同时使用多个接口通过单个MPTCP连接发送和接收TCP数据包。MPTCP可以聚合多个接口的带宽&#xff0c;也可以选择延迟最低的接口。它还允许在一条路径断开时进行故障切换&#xff…

1. 初始认识 Spring Cloud

1. 初始认识 Spring Cloud 文章目录 1. 初始认识 Spring Cloud前言2. Spring Cloud 基本介绍3. 系统架构的演变过程3.1 单机架构3.2 动静分离架构&#xff1a;静态缓存 文件存储3.3 分布式架构&#xff1a;业务拆分 负载均衡3.4 微服务架构&#xff1a;使用 Spring Cloud 4. …

网络学习第四篇

引言&#xff1a; 我们在第三篇的时候出现了错误&#xff0c;我们要就行排错&#xff0c;那么我们要知道一下怎么配置静态路由实现ping通&#xff0c;这样子我们才知道下一跳到底是什么&#xff0c;为什么这样子做。 实验目的 理解和掌握静态路由的基本概念和配置方法。 实…

【rf】robotframework自动化测试环境搭建

robotframework自动化测试环境搭建 前言&#xff1a; 1、在2019年之前&#xff0c;robotframework-ride的版本一直是1.5.2.1&#xff0c;是2016年1月份的版本&#xff0c;只能安装在python2.7的环境上&#xff0c;导致如果想同时使用robotframework做测试且又需要python3环境…

opencv入门学习总结

opencv学习总结 不多bb&#xff0c;直接上代码&#xff01;&#xff01;&#xff01; 案例一&#xff1a; import cv2 # 返回当前安装的 OpenCV 库的版本信息 并且是字符串格式 print(cv2.getVersionString()) """ 作用&#xff1a;它可以读取不同格式的图像文…

《DiffusionDet: Diffusion Model for Object Detection》ICCV2023

摘要 本文提出了一种新的框架DiffusionDet&#xff0c;它将目标检测任务表述为从带噪声的边界框到目标边界框的去噪扩散过程&#xff08;如图一所示&#xff09;。在训练阶段&#xff0c;目标边界框逐渐扩散到随机分布&#xff0c;模型学习逆转这一加噪过程。在推理阶段&#…