Oracle 12c new feature: Unified Audit

1 篇文章 0 订阅
1 篇文章 0 订阅

RDBMS Server
Unified Audit is a major architectural change: fast, easy, and impossible for the DBA to bypass. On upgrade to Oracle 12c, you really should enable it. The earlier method that we all use is pretty awful.

Consider the standard audit that we all know. In particular, consider how bad the implementation really is. First, performance. Awful. If you configure audit for an action (UPDATE on a table, for example) when a session does an UPDATE on that table, the session has to write the audit record. In effect, this is an autonomous transaction: the session has to stop what it is doing, write a row to SYS.AUD ,generatingredoandundoasitdoesthis,andCOMMIT.Thenitcanreturntotheworkitwasmeanttobedoing.Thatsaprettybadhitontheperformanceofthestatement.Second,thinkabouthowsecuretheaudittrailreallyis.AnythingwrittentotheSYS.AUD , g e n e r a t i n g r e d o a n d u n d o a s i t d o e s t h i s , a n d C O M M I T . T h e n i t c a n r e t u r n t o t h e w o r k i t w a s m e a n t t o b e d o i n g . T h a t ′ s a p r e t t y b a d h i t o n t h e p e r f o r m a n c e o f t h e s t a t e m e n t . S e c o n d , t h i n k a b o u t h o w s e c u r e t h e a u d i t t r a i l r e a l l y i s . A n y t h i n g w r i t t e n t o t h e S Y S . A U D table can changed by the DBA. That isn’t very secure, is it? Sure, you can audit to the OS instead. And then the SysAdmin can remove it, which isn’t much better. Furthermore, reading those OS audit records is an awful job. They are slow to write, too.
Unified audit solves both these problems. First, performance. It is astronomically fast. Why? because the session doesn’t write the audit record to the table. All it does is put a message on a buffered queue. The performance hit of writing the record to the table and generating the undo and redo is taken by a background process, GEN0, which creates the audit record asynchronously with respect to the calling action. Removing the writing of audit from the calling session solves the performance problem. Second, the audit table really is impossible to hack. Not even SYS can bypass the controls.

Here’s how to do it:

  1. Relink the Oracle executable.
    On Windows, copy in the appropriate DLL:
    cd %ORACLE_HOME%\bin
    copy orauniaud12.dll.dbl orauniaud12.dll
    and restart the Windows service for all instances.
    On Unix, relink:
    cd $ORACLE_HOME/rdbms/lib
    make -f ins_rdbms.mk uniaud_on ioracle
    and restart your Oracle instances.
  2. Configure Unified Audit policies
    You need a role to do this, AUDIT_ADMIN. Just a simple example: the equivalent of AUDIT UPDATE ON SCOTT.EMP and AUDIT CREATE ANY TRIGGER by users SYS and SYSTEM is,
    orclz>
    orclz> create audit policy mypol1
    2 privileges create any trigger
    3 actions update on scott.emp;

Audit policy created.

orclz>
orclz> audit policy mypol1 by sys,system;

Audit succeeded.

orclz>

  1. Query the audit trail
    The audit trail is exposed through the view UNIFIED_AUDIT_TRAIL. You need a role to see this, AUDIT_VIEWER. Then:
    orclz>
    orclz> select dbusername,event_timestamp,sql_text from unified_audit_trail
    2 where unified_audit_policies=’MYPOL1’;

DBUSERNAME EVENT_TIMESTAMP SQL_TEXT


SYSTEM 10-MAY-14 11.58.45 update scott.emp set sal=1000 where ename=’KING’
SYS 10-MAY-14 12.01.06 create trigger scott.trig after update on scott.emp

                          begin
                          null;
                          end;

orclz>

4.What about security?
The audit table is in a new Oracle maintained schema, and not even SYS can tamper with it:
orclz>
orclz> conn / as sysdba
Connected.
orclz> select table_name from dba_tables where owner=’AUDSYS’;

TABLE_NAME

CLI_SWP 67b5bb1a 67 b 5 b b 1 a 1$1

orclz> delete from audsys.”CLI_SWP 67b5bb1a 67 b 5 b b 1 a 1 1;deletefromaudsys.CLISWP 1 ” ; d e l e t e f r o m a u d s y s . ” C L I S W P 67b5bb1a 1 1 1”
*
ERROR at line 1:
ORA-55941: DML and DDL operations are not allowed on table “AUDSYS”.”CLI_SWP67b5bb1a1$1”

orclz> drop user audsys cascade;
drop user audsys cascade
*
ERROR at line 1:
ORA-28050: specified user or role cannot be dropped

orclz>

The only way to trim the audit trail is with the DBMS_AUDIT_MGMT package, access to which can be limited with the usual discretionary access control. And, of course, any operation against the audit trail is itself audited.

All together, Unified Audit is an important new feature, and a good motivator for the 12c upgrade.

原文链接:http://www.orafaq.com/node/2894

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值