南大通用 GBase 8c 审计功能参数详解与配置实践
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 等操作记录,说明审计参数配置成功。
六、最佳实践与注意事项
- 按需开启审计项
审计会带来额外的 I/O 和 CPU 开销。尤其是
audit_dml_state_select和audit_system_object,开启后日志量可能急剧增加,建议只在确有合规或排查需求时开启。 - 独立审计目录
将
audit_directory配置到独立磁盘或挂载点,避免审计日志写满数据目录所在磁盘,影响数据库正常运行。 - 设置空间上限
生产环境务必设置
audit_space_limit,防止审计日志无限增长导致磁盘空间耗尽。同时配合audit_file_remain_time和audit_file_remain_threshold实现自动清理。 - 合理调整轮转大小
根据业务量设置
audit_rotation_size。过小会导致频繁切换文件,过大则单文件过大不利于检索和归档。一般建议 100MB~1GB。 - 定期归档审计日志 对于需要长期保存的审计日志,应定期归档到专用日志服务器或存储系统,避免本地堆积。
- 注意生效方式
修改
audit_enabled、audit_directory等关键参数后,务必确认是否需要重启数据库。动态参数修改后可通过SHOW或gs_guc check验证。 - 版本差异 不同版本 GBase 8c 的审计参数名和默认值可能存在差异,配置前建议查阅对应版本的官方文档。
七、总结
GBase 8c 的审计参数体系覆盖了登录、对象访问、DML、授权和系统事件等多个维度。通过合理组合这些参数,可以构建灵活、高效的数据库审计策略。配置时应充分考虑性能影响、磁盘空间和日志保留周期,实现安全审计与系统稳定运行的平衡。
希望本文能帮助你快速理解和配置 GBase 8c 的审计功能。如有具体场景的配置疑问,欢迎在社区中交流讨论。
评论
热门帖子
- 12025-12-01浏览数:183737
- 22023-05-09浏览数:26443
- 42023-09-25浏览数:20111
- 52020-05-11浏览数:18840