日志审计(ltaudit)
ltaudit 的目标是为 LightDB 用户提供生成审计日志的能力,这些日志通常需要符合政府、金融或 ISO 认证。其可通过标准的 LightDB日志记录工具提供详细的会话和 (或) 对象审计日志记录。
当前ltaudit已内置集成在LightDB中,默认未启用。启用该功能步骤如下:
1. 修改$LTDATA/lightdb.conf配置文件中的shared_preload_libraries项,在其中增加ltaudit选项,如:
shared_preload_libraries='canopy,lt_stat_statements,lt_stat_activity,lt_prewarm,lt_cron,lt_hint_plan,lt_show_plans,lt_firewall,ltaudit'
修改完成后重启数据库
2. 在对应数据库中执行create extension ltaudit;
ltaudit具体参数如下:
1)ltaudit.log
- ALL 用于审计以下命令。
- MISC 用于审计其他命令,如 DISCARD、FETCH、CHECKPOINT、VACUUM、SET。
- DDL 用于审计未包含在 ROLE 类中的所有数据描述语言 (DDL)。
- ROLE 用于审计与角色和权限相关的语句,如 GRANT、REVOKE、CREATE/ALTER/DROP ROLE。
- FUNCTION 用于审计函数调用和 DO 数据块。
- WRITE 在目标为关系时审计 INSERT、UPDATE、DELETE、TRUNCATE 和 COPY。
- READ 在源为关系或查询时审计 SELECT 和 COPY。
默认是none不开启。
2)ltaudit.log_catalog
指定所有对象都在lt_catalog中时,是否记录到审计日志。如果禁用此设置,将减少ltsql等工具在大量查询时候的干扰。
3)ltaudit.log_client
指定日志消息对客户端(ltsql)是否可见。该设置通常应该保持禁用状态,但可能对调试或其他目的有用。默认off。
4)ltaudit.log_level
指定用于审计的日志级别,但注意不允许ERROR、FATAL和PANIC,,需注意ltaudit.log_level仅在ltaudit.log_client打开时才启用,否则将使用默认值log。
5)ltaudit.log_parameter
指定审计日志记录包括语句一起传递的参数。当参数出现时,它们将以CSV格式包含在语句文本之后,默认off。
6)ltaudit.log_relation
指定会话审计日志是否应该为SELECT或DML语句中引用的每个关系对象(TABLE、VIEW等)创建单独的日志条目。这是在不适用对象审计日志记录的情况下进行详尽日志记录的一种有用的快捷方式。
7)ltaudit.log_statement_once
指定日志记录是包含带有语句 / 子语句组合的第一个日志条目的语句文本和参数,还是包含每个条目。禁用此设置将减少冗长的日志记录,但可能会使确定生成日志条目的语句变得更加困难,尽管语句 / 子语句对以及进程 id 应该足以识别与前一个条目一起记录的语句文本,默认off。
8)ltaudit.role
指定用于对象审计日志记录的主角色。可以通过将多个审计角色授予主角色来定义它们。这允许多个组负责审计日志记录的不同方面,无默认值。
举例:
查看$LTDATA/log下的lightdb日志:
注意:根据设置的不同,ltaudit 可以生成大量日志记录,可能会对数据库性能产生影响。