审计截断和丢弃

Posted

技术标签:

【中文标题】审计截断和丢弃【英文标题】:Audit truncate and drop 【发布时间】:2017-09-22 05:22:47 【问题描述】:

我想在一张表上捕获截断和删除语句。

在一些谷歌搜索中,我发现它无法执行:

audit truncate, drop on schema.table;

所以我尝试了:

audit table;

据我了解,这应该捕获所有表的创建、删除和截断。

所以,我的问题:

    这真的是最好的方法吗?我只想要一张特定的桌子。 即使使用该语句 - 在我对表执行截断后,它也不会被捕获。

DBA_AUDIT_TRAIL

保持没有数据..

非常感谢。

【问题讨论】:

【参考方案1】:

是的,您可以在特定表上审核 DROP TABLE 和 TRUNCATE TABLE。

这是我的 audit_trail 参数及其值。

SQL> conn / as sysdba
SQL> show parameter audit

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest              string  /u01/app/oracle/admin/orcl/adu
                         mp
audit_sys_operations             boolean     TRUE
audit_syslog_level           string
audit_trail              string  DB, EXTENDED
unified_audit_sga_queue_size         integer     1048576

我创建了名为 tbl1 的表。

SQL> conn jay
Password:

Connected.
SQL> create table tbl1(id number);

Table created.

现在,让我们在该表上启用审核。如果您在表上指定ALL,那么oracle 将审核CREATE TABLEDROP TABLETRUNCATE TABLE 操作。如果您希望 oracle 为每个审计语句和操作写入一条记录,请指定 BY ACCESS

SQL> conn / as sysdba
SQL> audit all on jay.tbl1 by access; -- or  just audit all on jay.tbl1

Audit succeeded.

使用 Jay 用户创建新会话并执行一些操作。

SQL> conn jay

SQL> truncate table tbl1; 

Table truncated.

SQL> drop table tbl1;

Table dropped.

让我们检查审计跟踪。

SQL> conn / as sysdba

SQL> select action_name from dba_audit_trail where obj_name='TBL1';

ACTION_NAME
----------------------------
DROP TABLE
TRUNCATE Table 

【讨论】:

谢谢。但这对我不起作用……我在用户 A 中创建了表。然后我对它执行了全部审计。然后执行命令。select、insert等都写在dba_audit_trail里。但截断只是不.. 最后,我用 my_user 的审计表来做;谢谢! 我在 Oracle 12.2 上测试了上面的代码,如答案所示,效果很好。我认为您使用的是不同的版本。 也许吧。我正在使用oralce 11g。

以上是关于审计截断和丢弃的主要内容,如果未能解决你的问题,请参考以下文章

PHP代码审计分段讲解

代码审计-弱类型整数大小比较绕过

PHP文件包含

Oracle审计功能

日志审计系统和数据库审计系统的区别

数据库审计和日志审计的三大区别分析