PG数据库如何通过插件pgaudit做审计

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

PG数据库如何通过插件pgaudit做审计

一 pgaudit和postgresql版本兼容性匹配列表

pgAudit v1.5.X is intended to support PostgreSQL 13

pgAudit v1.4.X is intended to support PostgreSQL 12

pgAudit v1.3.X is intended to support PostgreSQL 11

二 安装插件pgaudit-1.4.1

下载zip包上传后解压

https://github.com/pgaudit/pgaudit/archive/refs/tags/1.4.1.zip



unzip pgaudit-1.4.1.zip



指定pg_config安装

cd pgaudit-1.4.1/

make install USE_PGXS=1 PG_CONFIG=/var/postgresql/soft/pg12.8/bin/pg_config

注意:pg_config替换成对应的绝对路径



扩展插件

参数文件postgresql.conf参数shared_preload_libraries新增pgaudit

参考pg_auto_failover高可用架构维护操作如下

https://vip.kingdee.com/article/296690452542608128

cat postgresql.conf |grep shared_preload_libraries



重启数据库服务

systemctl restart postgresql

扩展pgaudit

create extension pgaudit



三 参数说明

select name,setting from pg_settings where name ~ '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, SET.

MISC_SET: Miscellaneous SET commands, e.g. SET ROLE.

ALL: Include all of the above.

pgaudit.log_catalog

指定所有对象都在pg_catalog中时,是否记录到审计日志。如果禁用此设置,将减少psql和pgadmin等工具在大量查询时的干扰。

pgaudit.log_client

指定日志消息对客户端(如psql)是否可见,默认值是off。

注意: pgaudit.log_level仅在pgaudit.log_client打开时才启用。

pgaudit.log_level

指定用于审计的日志级别,不允许error,fatal和panic。

注意:pgaudit.log_level只在pgaudit.log_client打开时启用,否则将使用默认值log。

pgaudit.log_level 取值如下


SeverityUsagesyslogeventlog
DEBUG1…DEBUG5Provides successively-more-detailed information for use by developers.DEBUGINFORMATION
INFOProvides information implicitly requested by the user, e.g., output from VACUUM VERBOSE.INFOINFORMATION
NOTICEProvides information that might be helpful to users, e.g., notice of truncation of long identifiers.NOTICEINFORMATION
WARNINGProvides warnings of likely problems, e.g., COMMIT outside a transaction block.NOTICEWARNING
ERRORReports an error that caused the current command to abort.WARNINGERROR
LOGReports information of interest to administrators, e.g., checkpoint activity.INFOINFORMATION
FATALReports an error that caused the current session to abort.ERRERROR
PANICReports an error that caused all database sessions to abort.CRITERROR


pgaudit.log_parameter

指定审计日志记录包括语句一起传递的参数。当参数传入时,将以csv格式包含在语句的文本之后,默认值是off。

pgaudit.log_relation

指定会话审计日志是否应该为select或dml语句中引用的每个关系对象(如table、view等)创建单独的日志条目。在不使用对象审计日志记录情况下进行详尽日志记录的一种有用的快捷方式。

pgaudit.log_statement_once

指定日志记录是包含带有语句/子语句组合的第一个日志条目的语句文本和参数,还是包含每个条目。禁用此设置将减少冗长的日志记录,但可能会使确定生成日志条目的语句变得更加困难,尽管语句/子语句对以及进程id应该足以识别与前一个条目一起记录的语句文本。

默认值是off

pgaudit.role

指定记录具有相关对象权限的role,没有默认值。

四 配置开启审计

会话审计日志记录

会话审计日志提供用户在后端执行的所有语句的详细日志,使用pgaudit.log设置启用会话日志记录。

postgres=# set pgaudit.log = 'write, ddl';

postgres=# set pgaudit.log_relation = on;

postgres=# set pgaudit.log_client=on;




select name,setting,source from pg_settings where name like 'pgaudit%';



postgres=# create table test1(a int);

CREATE TABLE

postgres=# insert into test1 values (1);

INSERT 0 1

postgres=# update test1  set a=2;

UPDATE 1

postgres=# delete from test1;

DELETE 1

postgres=# drop table test1;

DROP TABLE

日志输出如下



对象审计日志记录

影响特定关系的对象审计日志记录语句。

只支持 select,insert,update和delete命令。

对象审计日志中不包括 truncate

创建角色keeper

create role keeper with password 'keeper'

配置pgaudit

set pgaudit.log = ''

set pgaudit.role = 'keeper'

select name,setting from pg_settings where name like 'pgaudit%'



授予tt表的select和delete权限(tt表上的任何select或delete语句都将被记录)

grant select,delete on public.tt to keeper



select * from information_schema.role_table_grants where grantee='keeper'



日志输出如下








































select * from information_schema.role_table_grants where grantee='keeper';



日志输出如下






















PG数据库如何通过插件pgaudit做审计

一 pgaudit和postgresql版本兼容性匹配列表pgAudit v1.5.X is intended to support PostgreSQL 13pgAudit v1.4.X is intended t...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息