1. 设置数据库审计
审计概述
数据库的安全对数据库系统来说至关重要。GaussDB支持审计功能,它将用户对数据库的所有操作写入审计日志。数据库安全管理员可以利用审计信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。
目前,GaussDB支持的审计项如下:
- 用户登录、注销审计
- 数据库启动、停止、恢复和切换审计
- 用户锁定和解锁审计
- 用户访问越权审计
- 授权和回收权限审计
- 数据库对象(数据库、表、schema 等)增删改审计
- 具体表的insert、delete、update操作审计
- 安全配置变更审计
- 注意 1:
安全相关参数及默认值请参见表1。
安全配置变更审计是指GaussDB在运行过程中,安全相关参数值发生变化时,审计进程会做一次审计记录。 GaussDB启动前,安全参数值的变更不会被审计。 - 注意 2:
GaussDB系统管理员删除文件审计是指GaussDB启动后,系统管理员通过高级包接口 UTL_FILE.FREMOVE 删除文件时,审计进程做一次审计操作。
表1 安全相关参数及默认值
参数名 | 默认值 | 说明 |
ssl | off | - |
ssl_ciphers | ALL | - |
ssl_cert_file | server.crt | - |
ssl_key_file | server.key | - |
ssl_ca_file | NULL | - |
ssl_crl_file | NULL | - |
password_policy | 1 | - |
password_reuse_time | 60 | - |
password_reuse_max | 0 | - |
password_lock_time | 1 | - |
failed_login_attempts | 10 | - |
password_encryption_type | 1 | - |
audit_enabled | on | - |
audit_directory | pg_audit | 参考维护审计日志 |
audit_data_format | binary | 审计日志文件的格式,当前仅支持二进制格式(binary)。 |
audit_rotation_interval | 1d | 决定创建一个新审计日志文件的时间间隔。当现在的时间减去上次创建一个审计日志的时间超过了audit_rotation_interval的值时,将生成一个新的审计日志文件。 |
audit_rotation_size | 10MB | 决定审计日志文件的最大容量。当审计日志消息的总量超过审计日志文件容量时,服务器将生成一个新的审计日志文件。 |
audit_space_limit | 1024MB | 参考维护审计日志 |
audit_file_remain_threshold | 1024 | 参考维护审计日志 |
audit_login_logout | 7 | 参考用户和权限审计 |
audit_database_process | 1 | 参考操作审计 |
audit_user_locked | 1 | 参考用户和权限审计 |
audit_user_violation | 0 | 参考用户和权限审计 |
audit_grant_revoke | 1 | 参考用户和权限审计 |
audit_system_object | 7 | 参考操作审计 |
audit_dml_state | 0 | 参考操作审计 |
2.开启审计功能
背景信息
- 审计总开关audit_enabled不支持动态加载。默认值为on,表示开启审计功能。在数据库运行期间修改该配置项的值不会立即生效,必须要重启数据库。
- 除了审计总开关,各个审计项也有对应的开关。只有开关开启,对应的审计功能才能生效。
- 各审计项的开关支持动态加载。在数据库运行期间修改审计开关的值,不需要重启数据库便可生效。
用show命令显示审计总开关audit_enabled的值。
show audit_enabled;
如果其值为off ,执行如下命令并重启服务器以开启审计功能:
gs_guc set -c audit_enabled=on
以开启对数据库所有对象的增删改操作的审计为例,修改配置项的方法如下,其他配置项的修改方法与此相同:
gs_guc reload -c audit_system_object=511
3. 查看审计结果
背景信息
-
只有拥有审计管理权限的用户才可以查看审计记录,审计用户的创建参考用户权限管理章节。
-
审计查询命令为GaussDB提供的sql函数pg_query_audit,其原型为:
pg_query_audit(timestamp startime,timestramp endtime),参数startime和endtime分别表示审计记录的开始时间和结束时间。 -
说明:
startime和endtime的差值代表要查询的时间段,其有效值为从startime日期中的00:00:00开始到endtime日期中的23:59:59之间的任何值。请正确指定这两个参数,否则将查不到需要的审计信息。
调用审计查询命令查询审计记录。
select* from pg_query_audit('2012-09-20 08:00:00','2012-09-20 23:59:33');
查询结果如下:
time | type | result | user | database | client_conninfo | object_name | detail_info
2012-09-20 10:47:07+08| ddl_table | ok | jack | POSTGRES | gsql@[local] | products |CREATE TABLE products (product_no integer,name text,price numeric);
该条记录表明,用户jack在2012-09-20 10:47:07向数据库中新增了表products。
4. 维护审计日志
审计日志相关配置参数
含义 | 配置项 | 取值 | 默认值 |
审计文件存储目录 | audit_directory | 一个相对于数据目录data的路径,可自行指定 | pg_audit |
审计文件占用的磁盘空间总量 | audit_space_limit | 取值范围:整型,1024kB~1024GB | 1024MB |
审计目录下审计文件个数最大值 | audit_file_remain_threshold | 取值范围:整型,1~1048576 | 1024 |
相关参考
gaussdb 数据库参数说明【审计开关、用户和权限审计、 操作审计】【10】
https://blog.csdn.net/qq_42226855/article/details/108780801
gaussdb 安全维护【数据库审计安全策略】【08】
https://blog.csdn.net/qq_42226855/article/details/109554205