1,什么是审计日志?
LightDB 审计扩展(ltaudit)通过标准的 LightDB 日志记录工具提供详细的会话和/或对象审计日志记录。
Ltaudit 的目标是为 LightDB 用户提供生成符合政府、财务或 ISO 认证要求的审计日志的能力。
审计是对个人或组织帐目的正式检查,通常由独立机构进行。由 ltaudit 收集的信息正确地称为审计跟踪或审计日志。本文档使用审计日志这一术语。
2,如何设置配置审计日志?
1,设置只能由超级用户修改。允许普通用户更改他们的设置将会破坏审计日志的要点。
2,可以在全局(在 lightdb.conf 中或使用 ALTER SYSTEM… SET)、数据库级别(使用 ALTER DATABASE… SET)或角色级别(使用 ALTER ROLE… SET)指定设置。请注意,设置不是通过正常的角色继承来继承的,SETROLE 不会更改用户的 ltaudit 设置。这是角色系统的一个局限性,而不是 Ltaudit 所固有的。
2.1,审计日志参数
指定会话审核日志将记录哪些类别的语句。可能的值是:
READ:当源是关系或查询时,执行 SELECt 和 COPY 操作。
WRITE:当目标是一个关系时,插入、更新、删除、截断和复制。
FUNCTION:函数调用和 DO 块。
ROLE:与角色和特权相关的语句: GRANT、 REVOKE、 CREATE/ALTER/DROP。
DDL:ROLE 类中未包含的所有 DDL。
MISC:杂项指令,例如丢弃、取出、检查点、真空、设定。
MISC_SET:其他 SET 命令,例如 SETROLE。
ALL:包括以上所有。
示例:
SQL:
set ltaudit.log = 'read, ddl'; create table account ( id int, name text, pdtext, description text ); insert into account (id, name, pd, description) values (1, 'user1', 'wuku', 'blah, blah'); select * from account;
Log Output 日志输出:
AUDIT: SESSION,1,1,DDL,CREATE TABLE,TABLE,public.account,create table account ( id int, name text, pdtext, description text );,AUDIT: SESSION,2,1,READ,SELECt,,,select * from account,,
对象审核日志记录影响特定关系的日志语句。只支持 SELECt、 INSERT、 UPDATE 和 DELETE 命令。对象审计日志记录中不包括 TRUNCATE。
对象级审计日志通过角色系统实现。Role 设置定义了将用于审计日志记录的角色。当审计角色对所执行的命令具有权限或从另一个角色继承权限时,将记录审计关系(TABLE、 VIEW 等)。这允许您有效地拥有多个审计角色,即使在任何上下文中只有一个主角色。
示例,将 ltaudit.role 设置为 auditor 并授予 Account 表上的 SELECT 和 DELETE 特权。帐户表上的任何 SELECT 或 DELETE 语句现在都将被记录:
set ltaudit.role = 'auditor'; grant select, delete on public.account to auditor;
示例
set ltaudit.role = 'auditor'; create table account ( id int, name text, pd text, description text ); grant select (pd) on public.account to auditor; select id, name from account; select pd from account; grant update (name, pd) on public.account to auditor; update account set description = 'yada, yada'; update account set pd= 'kuwu'; create table account_role_map ( account_id int, role_id int ); grant select on public.account_role_map to auditor; select account.pd, account_role_map.role_id from account inner join account_role_map on account.id = account_role_map.account_id
Log Output 日志输出:
AUDIT: OBJECT,1,1,READ,SELECt,TABLE,public.account,select pd from account,AUDIT: OBJECT,2,1,WRITE,UPDATe,TABLE,public.account,update account set pd= 'kuwu', AUDIT: OBJECT,3,1,READ,SELECT,TABLE,public.account,select account.pd, account_role_map.role_id from account inner join account_role_map on account.id = account_role_map.account_id, AUDIT: OBJECT,3,1,READ,SELECt,TABLE,public.account_role_map,select account.pd, account_role_map.role_id from account inner join account_role_map on account.id = account_role_map.account_id,
3,在lightdb数据库中实际操作:
3.1,配置lightdb.conf文件
3.2重启数据库,让配置生效,现在打印的日志全部是审计日志,因为在配置文件中配置后是全局生效
3.3在em中查看记录的审计日志,路径在 日志检索->SQL审计日志
输入关键字with后查询到相关的审计日志