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

1. 设置数据库审计安全策略

GaussDB支持审计功能,它将用户对数据库的特定操作写入审计日志,例如:用户登录和注销、数据库启动、停止、恢复和切换等。数据库安全管理员可以利用审计信息,重现导致数据库现状的一系列事件,找出非法操作的用户、时间和内容等。

1.以gaussdba用户身份登录GaussDB服务器。
2.检查审计总开关是否打开。
以连接默认数据库postgres为例,端口号是5432,使用如下命令:

gsql -d postgres -p 5432

用show命令显示审计总开关audit_enabled的值。

show audit_enabled;
 audit_enabled
---------------
 on
(1 row)

如果其值为off,执行如下命令并重启服务器以开启审计功能:

gs_guc set -c audit_enabled=on

3.配置具体的审计项。

说明:

  • 只有开启审计功能,用户的操作才会被记录到审计文件中。
  • 各审计项的默认参数都符合安全标准,您可以根据需要开启其他审计功能,但会对性能有一定影响。
  • 数据库各审计项的参数如表1所示,由于各审计项配置方法相似,以开启对客户端登录成功、失败和注销的审计为例,命令格式如下:
gs_guc reload -c audit_login_logout=7
  • 表1 配置审计项
配置项 描述
安全配置变更审计(表2) GaussDB在运行过程中,安全相关参数值发生变化时,
审计进程会做一次审计记录。GaussDB启动前,
安全参数值的变更不会被审计。
安全相关参数及默认值请参见表2。

说明:
审计总开关开启后,此审计项自动开启,不需要重新配置。
用户登录、注销审计 参数:audit_login_logout

默认值为7,表示开启用户登录、退出的审计功能。设置为0表示关闭用户登录、退出的审计功能。不推荐设置除0和7之外的值。
数据库启动、停止、恢复和切换审计 参数:audit_database_process

默认值为1,表示开启GaussDB启动、停止、恢复和切换的审计功能。
用户锁定和解锁审计 参数:audit_user_locked

默认值为1,表示开启审计用户锁定和解锁功能。
用户访问越权审计 参数:audit_user_violation

默认值为0,表示关闭用户越权操作审计功能。
授权和回收权限审计 参数:audit_grant_revoke

默认值为1,表示开启审计用户权限授予和回收功能。
数据库对象的CREATE,ALTER,DROP操作审计 参数:audit_system_object

默认值为7,表示只对DATABASE、SCHEMA、USER这三类数据库对象的CREATE、ALTER、DROP操作进行审计。
具体表的INSERT、UPDATE、DELETE操作审计 参数:audit_dml_state

默认值为0,表示关闭具体表的DML操作(SELECT 除外)审计功能。

如果想查看select相关日志记录(设置慢sql记录参数即可,postgresql.conf)。也可以通过pg_stat_activity视图查看当前数据库中正在运行的sql。

开启审计功能对数据库性能有一定的影响。


  • 表2 安全相关参数及默认值
参数名 默认值
ssl off
ssl_ciphers ALL:!ADH:!LOW:!EXP:!MD5:@STRENGH
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
audit_rotation_interval 1d(1440min)
audit_rotation_size 10MB(10*1024KB)
audit_space_limit 1024MB(1024*1024KB)
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

4.后续操作

当系统发生故障或异常时,可以使用审计日志跟踪系统关键操作,及时定位故障发生的原因,以便及时进行故障修改,保证数据库正常业务。

说明:
只有拥有审计管理权限的用户才可以查看审计记录。
以查询2012-09-20 00:00:00到23:59:59这段时间的记录为例:

select * from pg_query_audit('2012-09-20 08:00:00','2012-09-20 23:59:59');

查询结果如下:

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);

2. 设置审计日志安全策略

审计功能开启时会不断产生大量的审计日志,占用磁盘空间。您可以根据磁盘空间的大小设置审计日志维护策略。

目前常用的记录审计内容的方式有两种:记录到数据库的表中、记录到OS文件中。

方式 优点 缺点
记录到表中 不需要用户维护审计日志。 由于表是数据库的对象,如果一个数据库用户具有一定的权限,就能够访问到审计表。如果该用户非法操作审计表,审计记录的准确性难以得到保证。
记录到OS文件中 比较安全,即使一个账户可以访问数据库,但不一定有访问OS这个文件的权限。 需要用户维护审计日志。

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

审计日志维护方式

维护方式 说明 使用方法
设置自动删除审计日志 审计文件占用的磁盘空间或者审计文件的个数超过指定的最大值时,系统将删除最早的审计文件,并记录审计文件删除信息到审计日志中。

说明:
审计文件占用的磁盘空间大小默认值为1024MB,您可以根据磁盘空间大小重新设置参数。

审计文件个数最大值默认值为1024,您可以根据需要设置更高的参数值,但会对性能有一定影响。
配置审计文件占用的磁盘空间大小(audit_space_limit)。

1.查看已配置的参数。
POSTGRES=# show audit_space_limit;
 audit_space_limit
-------------------
 1GB
(1 row)

2.如果显示结果不为1GB(1024MB),建议执行如下命令设置成默认值1024MB。
gs_guc reload -c audit_space_limit=1024MB

配置审计文件个数最大值(audit_file_remain_threshold)。

1.查看已配置的参数。
POSTGRES=# show audit_file_remain_threshold;
 audit_file_remain_threshold
-----------------------------
 1024
(1 row)

2.如果显示结果不为1024,建议执行如下命令设置成默认值1024。
gs_guc reload -c audit_file_remain_threshold=1024
手动备份审计文件 当审计文件占用的磁盘空间或者审计文件的个数超过配置文件指定的值时,系统将会自动删除较早的审计文件,因此建议用户周期性地对比较重要的审计日志进行保存。 1.使用show命令获得审计文件所在目录(audit_directory)。
show audit_directory;

2.将审计目录整个拷贝出来进行保存。
手动删除审计日志 当不再需要某时段的审计记录时,可以使用审计接口命令pg_delete_audit进行手动删除。 以删除2012/9/20到2012/9/21之间的审计记录为例:
select pg_delete_audit('2012-09-20 ','2012-09-21');

你可能感兴趣的:(GaussDB)