pgaudit 安装实践

下载

https://github.com/pgaudit/pgaudit/blob/REL9_6_STABLE/README.md

背景前提:

postgresql 安装包 目录为 :

/home/zhaowzh/pg966

 

1、解压pgaudit包

unzip pgaudit-REL9_6_STABLE.zip

2、mkdir -p /home/zhaowzh/pg966/contrib/pgaudit

3、将解压后的文件拷贝到 :

cp -R /home/zhaowzh/pgaudit-REL9_6_STABLE/*  /home/zhaowzh/pg966/contrib/pgaudit/

4、cd /home/zhaowzh/pg966/contrib/pgaudit

 make -s check

5、make install

6、配置

设置只能由超级用户修改。允许普通用户更改他们的设置将会破坏审计日志的重点。

可以全局(在postgresql.conf或使用ALTER SYSTEM ... SET),在数据库级别(使用ALTER DATABASE ... SET)或在角色级别(使用ALTER ROLE ... SET)指定设置。请注意,设置不会通过正常的角色继承继承,并且SET ROLE不会改变用户的pgAudit设置。这是角色系统的一个限制,而不是pgAudit固有的。

 

pgAudit扩展必须在shared_preload_libraries中加载。否则,加载时会出现错误,并且不会发生审计日志记录。另外,CREATE EXTENSION pgaudit必须在pgaudit.log设定之前调用。如果pgaudit扩展被删除并需要被重新创建,那么pgaudit.log必须首先解除扩展,否则会引发错误。

 

vim /usr/local/postgesql966/data/postgresql.conf  增加

#如果要安装多个扩展模块,模块间用 逗号隔开(pg_stat_statements,auto_explain,pgaudit)

shared_preload_libraries='pgaudit'  

pgaudit.role='dba' #审计 记录 dba角色

下列截图中标红的地方根据实际需要配置即可。

使用log_line_prefix添加满足您的审核日志要求所需的任何其他字段。典型的日志行前缀可能是'\%m \%u \%d: '为每个审计日志提供日期/时间,用户名和数据库名称。

7、重启数据库服务

su - postgres

pg_ctl -D /usr/local/postgresql966/data -l /usr/local/postgresql966/logfile-pg restart

8、创建 审计模块

postgresql=# create extension pgaudit;

9、查看审计日志

审计日志记录是默认被记录在 pg数据库启动时指定的logs日志文件中的。 比如

注:

pgaudit.log_level  取值:

Severity

Usage

syslog

eventlog

DEBUG1..DEBUG5

Provides successively-more-detailed information for use by developers.

DEBUG

INFORMATION

INFO

Provides information implicitly requested by the user, e.g., output from VACUUM VERBOSE.

INFO

INFORMATION

NOTICE

Provides information that might be helpful to users, e.g., notice of truncation of long identifiers.

NOTICE

INFORMATION

WARNING

Provides warnings of likely problems, e.g., COMMIT outside a transaction block.

NOTICE

WARNING

ERROR

Reports an error that caused the current command to abort.

WARNING

ERROR

LOG

Reports information of interest to administrators, e.g., checkpoint activity.

INFO

INFORMATION

FATAL

Reports an error that caused the current session to abort.

ERR

ERROR

PANIC

Reports an error that caused all database sessions to abort.

CRIT

ERROR

 

方案2

或下载 rpm

https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/repoview/letter_p.group.html

wget  https://yum.postgresql.org/9.6/redhat/rhel-7-x86_64/pgaudit_96-1.0.4-1.rhel7.x86_64.rpm

ll /usr/pgsql-9.6/share/extension |grep pgaudit

ll /usr/pgsql-9.6/lib |grep pgaudit

scp zhaowz@vlnx052150.foneshare.cn:/home/zhaowz/pgaudit_96-1.0.4-1.rhel7.x86_64.rpm /root

rpm -ivh pgaudit_96-1.0.4-1.rhel7.x86_64.rpm

cat  /var/lib/pgsql/9.6/data/postgresql.conf |grep shared_preload_libraries

[root@vlnx053150 data]#  vim /var/lib/pgsql/9.6/data/postgresql.conf

shared_preload_libraries='pgaudit,pg_stat_statements,auto_explain'

pgaudit.role='dba'

pgaudit.log='write,role,ddl,function,misc'

pgaudit.log_catalog=off

pgaudit.log_level=log

pgaudit.log_parameter=on

pgaudit.log_relation=on

pgaudit.log_statement_once=on

log_line_prefix='\%m \%u \%d:'

pg_stat_statements.max=1000

pg_stat_statements.track=all

重启pg服务

[root@vlnx053150 data]#  sudo systemctl restart postgresql-9.6

postgresql=# create extension pgaudit;

参数

pgaudit.log

可能的值是:

READ: SELECT and COPY when the source is a relation or a query.

WRITE: INSERT, UPDATE, DELETE, TRUNCATE, and COPY when the destination is a relation.

FUNCTION: Function calls and DO blocks.

ROLE: Statements related to roles and privileges: GRANT, REVOKE, CREATE/ALTER/DROP ROLE.

DDL: All DDL that is not included in the ROLE class.

MISC: Miscellaneous commands, e.g. DISCARD, FETCH, CHECKPOINT, VACUUM.

可以使用逗号分隔的列表来提供多个类,并且类可以通过使用一种来减少类来减少。

默认值为none。

pgaudit.log_catalog

指定在语句中的所有关系都在pg_catalog中的情况下,应该启用会话日志记录。禁用此设置将减少日志中的噪音,例如psql和PgAdmin等工具,这些工具对目录进行了大量查询。

默认值on 。

 

pgaudit.log_level

指定用于日志条目的日志级别 (see Message Severity Levels for valid levels) ,但注意ERROR、FATAL和PANIC。此设置用于进行回归测试,也可能对最终用户用于测试或其他目的使用。

默认值为log。

 

pgaudit.log_parameter

指定审核日志记录应该包含与语句传递的参数。当参数出现时,在语句文本之后,将以CSV格式包含。

缺省值off。

 

pgaudit.log_relation

指定会话审核日志记录是否应该为SELECT或DML语句中引用的每个关系(表、视图等)创建单独的日志项。这是在不使用对象审核日志记录的情况下进行穷举日志记录的一种有用的捷径。

缺省值已关闭。

 

pgaudit.log_statement_once

指定日志记录是否包含语句、文本和参数,其中包含statement/substatement组合的第一个日志条目,或与每个条目一起。禁用此设置将导致更少的日志记录,但可能会使确定生成日志项的语句变得更困难,尽管statement/substatement对和进程id应该足以标识使用上一个条目记录的语句文本。

缺省值off。

 

pgaudit.role

指定要用于对象审核日志记录的主角色。可以通过将多个审计角色授予主角色来定义多个审计角色。这就允许多个组负责审计日志记录的不同方面。

没有默认值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值