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】

gaussdb 安全维护【数据库审计安全策略】【08】