【问题标题】:Enabling audit logs in YugabyteDB YSQL在 YugabyteDB YSQL 中启用审计日志
【发布时间】:2022-06-15 01:32:46
【问题描述】:

[用户在YugabyteDB Community Slack上发布的问题]

我为我的 yb Universe 启用了审核日志,并且我能够启用它。但是,我想知道审计日志在哪里被捕获?例如,我尝试在 tserver 甚至 pgsql 日志中查找以下日志的任何部分,但没有找到。审计日志在哪里捕获?

NOTICE: AUDIT: SESSION,2,1,DDL,CREATE TABLE,TABLE,public.employees,
"create table employees ( empno int, ename text, address text, salary int,
account_number text );",<not logged>
CREATE TABLE

【问题讨论】:

    标签: yugabyte-db


    【解决方案1】:

    这是关于 YSQL(基于 PostgreSQL)审计的。 YSQL 中的审计是由一个扩展提供的。默认情况下不安装此扩展,因此要使用必须首先在 YSQL 中启用。这是使用create extension 命令完成的,例如create extension if not exists pgaudit;

    这提供了审计功能,但是为了让 YSQL 执行审计,它必须被配置。 pgaudit 扩展向数据库添加了一些参数,这些参数可以在数据库启动时设置,或者由超级用户动态设置。这些参数是pgaudit.{role, log_relation, log_statement_once, log_parameter, log_level, log_catalog, log}

    例如:为了审计所有语句,执行:set pgaudit.log='ALL'; 开始审核,然后select 1+1

    审计在每个 tserver 的“log”目录中的 PostgreSQL 日志文件中执行,并包含本地审计的命令。基本路径由 tserver 标志--fs-data-dirs 设置,服务器日志文件的路径为 yb-data/tserver/logs。

    举个例子,我刚试过这个:

    ./bin/yugabyted destroy
    ./bin/yugabyted start
    ./bin/ysqlsh
    
    CREATE EXTENSION IF NOT EXISTS pgaudit;
    SET pgaudit.log='ALL';
    select 1;
    select 'a';
    

    然后获取日志:

    ./bin/yugabyted collect_logs
    

    进入 zip 文件,并检查 .postgresql 日志,您应该会看到如下内容:

    I0603 10:36:36.737246 17050 pg_client.cc:130] S 1: Session id acquired
    2022-06-03 10:37:04.029 UTC [17050] LOG:  AUDIT: SESSION,1,1,MISC,SET,,,SET pgaudit.log='ALL';,<not logged>
    2022-06-03 10:37:25.901 UTC [17050] LOG:  AUDIT: SESSION,2,1,READ,SELECT,,,select 1;,<not logged>
    2022-06-03 10:37:33.204 UTC [17050] LOG:  AUDIT: SESSION,3,1,READ,SELECT,,,select 'a';,<not logged>
    

    【讨论】:

      猜你喜欢
      • 2022-10-17
      • 1970-01-01
      • 2018-04-26
      • 2018-01-25
      • 2022-07-22
      • 2015-11-26
      • 2019-12-01
      • 2018-09-17
      • 2012-08-31
      相关资源
      最近更新 更多