GBase 8c
运维管理
文章

南大通用 GBase 8c 审计功能参数详解与配置实践

发表于2026-08-19 16:08:39418次浏览2个评论

GBase 8c 多模多态数据库在安全审计方面提供了丰富的参数配置能力。合理配置审计参数,既能满足等保合规要求,又能平衡数据库性能与磁盘空间消耗。 本文以 GBase 8c 分布式架构为例,梳理审计功能的核心参数,并给出典型配置示例。

一、审计功能概述

GBase 8c 的审计功能可以对数据库的登录、退出、DML、DDL、授权、系统对象访问等操作进行记录,并将审计日志写入指定目录。审计日志为数据库安全事件追踪、责任认定和合规检查提供了重要依据。

审计相关参数主要分为以下几类:

  • 审计总开关与基础参数
  • 审计内容与对象参数
  • 审计日志存储与轮转参数
  • 性能与资源控制参数

下面分别进行说明。

二、常用审计参数详解

1. 审计总开关与基础参数

参数名 类型 说明
audit_enabled 布尔 审计总开关。设为 on 后数据库才记录审计日志,通常需要重启生效。
audit_directory 字符串 审计日志存放目录。需确保数据库运行用户有读写权限。
audit_data_format 字符串 审计日志格式,一般不建议修改。

2. 审计内容与对象参数

参数名 类型 说明
audit_login_logout 布尔 审计用户登录和登出事件。
audit_user_violation 布尔 审计用户越权访问、违规操作等事件。
audit_dml_state 布尔 审计 DML 操作,包括 INSERT、UPDATE、DELETE、MERGE 等。
audit_dml_state_select 布尔 审计 SELECT 查询操作。开启后可能产生大量日志,需谨慎。
audit_object_name_access 布尔 按对象名称审计数据库对象的访问情况。
audit_system_object 布尔 审计系统对象(如系统表、系统视图)的访问。
audit_grant_revoke 布尔 审计授权和回收权限操作。
audit_database_process 布尔 审计数据库的启动、停止、切换等过程事件。
audit_system_function 布尔 审计系统函数的调用。
audit_user_locked 布尔 审计用户被锁定、解锁的事件。

3. 审计日志存储与轮转参数

参数名 类型 说明
audit_rotation_size 整数 单个审计日志文件达到该大小后自动切换新文件。
audit_rotation_interval 整数 审计日志按时间轮转的间隔,如 1d、1h。
audit_space_limit 整数 审计日志总空间上限,单位为 KB。设为 0 表示不限制。建议生产环境设置。
audit_file_remain_time 整数 审计日志文件保留天数,超期自动清理。
audit_file_remain_threshold 整数 审计日志文件保留个数阈值,超过后清理最早文件。

4. 性能与资源控制参数

参数名 类型 说明
audit_thread_num 整数 审计日志写入线程数。高并发场景可适当调大,但会增加资源开销。
audit_resource_policy 布尔 审计资源限制策略开关。开启后如果审计日志达到空间上限,数据库会采取限制措施。

说明:不同版本参数名和默认值可能略有差异,请以实际环境的官方文档为准。

三、参数配置方法

GBase 8c 支持通过 gs_guc 工具或直接修改配置文件来调整审计参数。推荐使用 gs_guc 进行统一管理。

1. 查看当前参数

SHOW audit_enabled;
SHOW audit_directory;
SHOW audit_login_logout;
SHOW audit_dml_state;

也可以通过 gs_guc 查看:

gs_guc check -Z coordinator -N all -I all -c "audit_enabled"

2. 修改参数

以设置审计总开关和登录审计为例:

gs_guc set -Z coordinator -N all -I all -c "audit_enabled=on"
gs_guc set -Z coordinator -N all -I all -c "audit_login_logout=on"

对于数据节点也需要同步设置,可将 -Z coordinator 替换为 -Z datanode,或根据集群架构统一配置。

3. 生效方式

  • 部分参数支持 reload 动态生效,例如 audit_rotation_size、audit_space_limit 等。
  • 部分参数需要重启数据库才能生效,例如 audit_enabled、audit_directory。
gha_ctl restart all -l dcslist

四、典型审计策略配置示例

1. 最小合规审计

只审计登录登出、用户违规和授权操作,适合对性能敏感、日志量要求低的场景。

gs_guc set -Z coordinator -N all -I all -c "audit_enabled=on"
gs_guc set -Z coordinator -N all -I all -c "audit_login_logout=on"
gs_guc set -Z coordinator -N all -I all -c "audit_user_violation=on"
gs_guc set -Z coordinator -N all -I all -c "audit_grant_revoke=on"

2. 全量对象审计

审计所有 DML 和 SELECT 操作,适合核心业务表变更追踪,但会产生大量日志。

gs_guc set -Z coordinator -N all -I all -c "audit_enabled=on"
gs_guc set -Z coordinator -N all -I all -c "audit_dml_state=on"
gs_guc set -Z coordinator -N all -I all -c "audit_dml_state_select=on"
gs_guc set -Z coordinator -N all -I all -c "audit_object_name_access=on"

3. 登录与系统事件审计

重点审计数据库启停、用户锁定和系统对象访问,适合安全事件追踪。

gs_guc set -Z coordinator -N all -I all -c "audit_enabled=on"
gs_guc set -Z coordinator -N all -I all -c "audit_database_process=on"
gs_guc set -Z coordinator -N all -I all -c "audit_user_locked=on"
gs_guc set -Z coordinator -N all -I all -c "audit_system_object=on"

4. 设置日志存储策略

gs_guc set -Z coordinator -N all -I all -c "audit_directory='/gbase8c/auditlog'"
gs_guc set -Z coordinator -N all -I all -c "audit_rotation_size=100MB"
gs_guc set -Z coordinator -N all -I all -c "audit_rotation_interval=1d"
gs_guc set -Z coordinator -N all -I all -c "audit_space_limit=50GB"
gs_guc set -Z coordinator -N all -I all -c "audit_file_remain_time=30"
gs_guc set -Z coordinator -N all -I all -c "audit_file_remain_threshold=2000"

配置完成后,重启或 reload 数据库使参数生效。

五、审计日志验证

配置完成后,可以执行一些测试操作,然后检查审计日志是否正常记录。

1. 创建测试用户和表

CREATE USER audit_test PASSWORD 'Test@123';
CREATE TABLE audit_test.t1(id int, name varchar(20));
INSERT INTO audit_test.t1 VALUES(1, 'gbase');
UPDATE audit_test.t1 SET name = 'gbase8c' WHERE id = 1;
SELECT * FROM audit_test.t1;
DELETE FROM audit_test.t1 WHERE id = 1;

2. 查看审计日志文件

ls -l

3. 检索审计记录

grep "audit_test" *.log | tail -20

如果看到对应的登录、INSERT、UPDATE、SELECT、DELETE 等操作记录,说明审计参数配置成功。

六、最佳实践与注意事项

  1. 按需开启审计项 审计会带来额外的 I/O 和 CPU 开销。尤其是 audit_dml_state_select 和 audit_system_object,开启后日志量可能急剧增加,建议只在确有合规或排查需求时开启。
  2. 独立审计目录 将 audit_directory 配置到独立磁盘或挂载点,避免审计日志写满数据目录所在磁盘,影响数据库正常运行。
  3. 设置空间上限 生产环境务必设置 audit_space_limit,防止审计日志无限增长导致磁盘空间耗尽。同时配合 audit_file_remain_time 和 audit_file_remain_threshold 实现自动清理。
  4. 合理调整轮转大小 根据业务量设置 audit_rotation_size。过小会导致频繁切换文件,过大则单文件过大不利于检索和归档。一般建议 100MB~1GB。
  5. 定期归档审计日志 对于需要长期保存的审计日志,应定期归档到专用日志服务器或存储系统,避免本地堆积。
  6. 注意生效方式 修改 audit_enabled、audit_directory 等关键参数后,务必确认是否需要重启数据库。动态参数修改后可通过 SHOW 或 gs_guc check 验证。
  7. 版本差异 不同版本 GBase 8c 的审计参数名和默认值可能存在差异,配置前建议查阅对应版本的官方文档。

七、总结

GBase 8c 的审计参数体系覆盖了登录、对象访问、DML、授权和系统事件等多个维度。通过合理组合这些参数,可以构建灵活、高效的数据库审计策略。配置时应充分考虑性能影响、磁盘空间和日志保留周期,实现安全审计与系统稳定运行的平衡。

希望本文能帮助你快速理解和配置 GBase 8c 的审计功能。如有具体场景的配置疑问,欢迎在社区中交流讨论。

评论

登录后才可以发表评论
用户头像
GBase用户28017发表于 2个月前
实用的配置。
GBase用户51829发表于 2个月前
审计是很实用的,很多场景都要开启,谢谢分享