GaussDB A 审计功能简介

举报
xiaoyhou 发表于 2021/03/21 11:53:31 2021/03/21
【摘要】 数据库审计,指的是将用户对数据库的所有操作写入审计日志中,使得数据库安全管理员可以利用这些日志信息,找出非法操作的用户,时间和内容等。如何使用数据库审计,这里以审计事务功能为例:1. 设置审计配置项要使数据库能够审计到某项功能,需要打开审计的总开关(audit_operation_exec)和对应的审计项开关(audit_operation_exec),二者均支持动态加载,在数据库运行期间修...

数据库审计,指的是将用户对数据库的所有操作写入审计日志中,使得数据库安全管理员可以利用这些日志信息,找出非法操作的用户,时间和内容等。

如何使用数据库审计,这里以审计事务功能为例:

1. 设置审计配置项

要使数据库能够审计到某项功能,需要打开审计的总开关(audit_operation_exec)和对应的审计项开关(audit_operation_exec),二者均支持动态加载,在数据库运行期间修改该配置项的值会立即生效,无需重启数据库。

  1. 首先打开审计总开关audit_enabled(默认开启)。登录数据库,检查audit_enabled状态
    postgres=# show audit_enabled;
     audit_enabled 
    ---------------
     off
    (1 row)
    若为off ,则使用如下命令打开
    gs_guc reload -Z coordinator -Z datanode -N all -I all  -c "audit_enabled=on"
  2. 然后打开具体审计事务配置项
    gs_guc reload -Z coordinator -Z datanode -N all -I all  -c "audit_operation_exec='transaction'"
    postgres=# show audit_operation_exec;
     audit_operation_exec 
    ----------------------
     transaction
    (1 row)

 audit_operation_exec 默认的配置项有login, logout, database_process, user_lock, grant_revoke, set,如果想增加审计配置项,进行追加配置即可,目前支持的配置项有all,login,logout,database_process,user_lock,grant_revoke,ddl,select,copy,userfunc,set,transaction,vacuum,analyze,explain,specialfunc,insert,insert_filter,update,delete,merge,show,checkpoint,barrier,cluster,comment,cleanconn,prepare,constraints,cursor。有两点需要注意,其一如果审计ddl操作,需要另外配置audit_system_object 来审计具体某个对象的ddl 操作;其二如果是审计事务,事务内部的操作是否审计需要结合其具体的配置项是否配置。

 2. 查看审计日志。

审计查询命令是pg_query_audit, 其使用方法为


pg_query_audit(timestamptz startime,timestamptz endtime,audit_log)

startime 和 endtime 分别表示审计记录的开始时间和结束时间,audit_log 表示所查看的审计日志新的所在的物理文件路径,当不指定audit_log 时,默认查看连接当前实例的审计日志信息。

通过查询pgxc_query_audit 可以查询所有CN节点的审计日志信息:

pgxc_query_audit(timestamptz startime,timestamptz endtime)

 

除了上面审计成功的场景之外,还可以通过配置audit_operation_error 来审计失败的操作记录。默认的配置项有login,目前支持的配置项有syn_success,parse,login,user_lock,violation,grant_revoke,ddl,select,copy,userfunc,set,transaction,vacuum,analyze,explain,specialfunc,insert,update,delete,merge,show,checkpoint,barrier,cluster,comment,cleanconn,prepare,constraints,cursor,blacklist。当配置了该参数之后,其对应的失败操作也会被记录到审计日志当中,如下例

postgres=# create table t1(id int);
ERROR:  relation "t1" already exists
postgres=# 
postgres=# select * from pg_query_audit('2021-03-21','2021-03-30') order by endtime desc limit 1;
-[ RECORD 1 ]---+--------------------------------
begintime       | 2021-03-21 11:49:41.643+08
endtime         | 2021-03-21 11:49:41.652+08
operation_type  | ddl
audit_type      | ddl_table
result          | failed
username        | perfadm
database        | postgres
client_conninfo | gsql@[local]
object_name     | t1
command_text    | create table t1(id int);
detail_info     | relation "t1" already exists
transaction_xid | 0
query_id        | 1062177
node_name       | cn_5001
thread_id       | 139916885260032@669613657906735
local_port      | 6000
remote_port     | 

20210321-170346(WeLinkPC).png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。