教学文章
Technology Exchange
热门课程
400电话

免费咨询热线
400-090-9964

教学文章

oracle开启audit(审计)

时间:2020-02-26 来源:

  oracle开启audit(审计)

  1、查看审计功能是否开启(本机已经开启,如果audit_sys_operations值为FALSE就是没开审计)

  SQL> CONN /AS SYSDBA

  SQL> show parameter audit

  NAME TYPE VALUE

  ------------------------------------ ----------- ------------------------------

  audit_file_dest string F:\APP\ADMINISTRATOR\ADMIN\ORCL\ADUMP

  audit_sys_operations boolean TRUE

  audit_trail string DB_EXTENDED

  如果没有使用下面语句更改:

  SQL> alter system set audit_trail=db_extended scope=spfile;

  注意audit_trail要为DB_EXTENDED才记录执行的具体语句...

  2、重启实例

  SQL> shutdown immediate;

  SQL> startup

  3、针对某表的DML审计(错误的也记录)

  SQL> AUDIT UPDATE,DELETE,INSERT ON T_TEST by access;

  4、对该表做各种DML操作

  用scott用户登录

  SQL> conn scott/123

  SQL> create table t_test as select * from emp;

  SQL> update t_test set emp1='111';

  *

  第 1 行出现错误:

  ORA-00904: "EMP1": 标识符无效

  SQL> delete from t_test where rownum=1;

  已删除 1 行。

  SQL> commit;

  5、查询审计信息

  SQL> select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT

  SQL> from DBA_COMMON_AUDIT_TRAIL ORDER BY EXTENDED_TIMESTAMP DESC;

  或者

  SQL> select EXTENDED_TIMESTAMP,SESSION_ID,SQL_TEXT from DBA_COMMON_AUDIT_TRAIL

  SQL> where OBJECT_NAME='T_TEST'

  SQL> and STATEMENT_TYPE in ('INSERT','UPDATE','DELETE');

  ---结果:

  SQL> /

  EXTENDED_TIMESTAMP SESSION_ID SQL_TEXT

  ---------------------------------------- ---------- ----------------------------

  ------------

  14-8月 -12 04.14.45.187000 下午 +08:00 190125 update t_test set emp1='111'

  14-8月 -12 04.26.02.968000 下午 +08:00 190125 delete from t_test where rownum=1

  注意:审计一般只用于对普通用户操作,一般不审计SYS用户

  对于windows系统,对sys用户的审计信息并不存在AUDIT_FILE_DEST参数指定的目录里,而是在windows的事件管理器中。

  ---------------------------------------------------------------------------------------------------------------------

  另外通过细粒度审计FGA也可以实现上述审计:

  用法创建审计策略:

  Syntax

  DBMS_FGA.ADD_POLICY(

  object_schema VARCHAR2,

  object_name VARCHAR2,

  policy_name VARCHAR2,

  audit_condition VARCHAR2,

  audit_column VARCHAR2,

  handler_schema VARCHAR2,

  handler_module VARCHAR2,

  enable BOOLEAN );

  删除审计策略:

  DBMS_FGA.DROP_POLICY(

  object_schema VARCHAR2,

  object_name VARCHAR2,

  policy_name VARCHAR2 );

  启用审计策略:

  DBMS_FGA.ENABLE_POLICY(

  object_schema VARCHAR2 := NULL,

  object_name VARCHAR2,

  policy_name VARCHAR2,

  enable BOOLEAN := TRUE);

  禁用审计策略:

  DBMS_FGA.DISABLE_POLICY(

  object_schema VARCHAR2,

  object_name VARCHAR2,

  policy_name VARCHAR2 );

  首先,创建审计策略

  SQL> conn /as sysdba

  已连接。

  SQL> begin

  2 dbms_fga.add_policy

  3 (

  4 object_schema=>'SCOTT',object_name=>'T_TEST',

  5 policy_name=>'Test_audit'

  6 );

  7 end;

  8 /

  PL/SQL 过程已成功完成。

  SQL> conn scott/tigger

  进行查询

  SQL> select ename from t_test;

  使用SYS登录进行查询,

  SQL> select statement_type,SQL_TEXT from dba_fga_audit_trail;

  STATEME SQL_TEXT

  ------- ----------------------------------------

  SELECT select ename from t_test

  ------------

  注意: 经过测试发现审计到的SQL语句存在着大小写2种格式。

  直接执行的SQL语句,是什么样的语句,审计到的也就是什么样。

  在存储里执行的语句,审计到的全是大写的语句。

  存储里动态执行的语句,是什么样的语句,审计到的也就是什么样的语句。

  BEGIN

  EXECUTE immediate 'delete FrOm emp WHERE ROWNUM=1';

  END;

  审计到的就是

  DELETE delete FrOm emp WHERE ROWNUM=1;

  转自

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright ALL Rights Reserved 京ICP备11008061号-1

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com www.cuug.net

电话:010-59426307 010-59426319 邮政编码:100089

地址:北京市海淀区北清路164号28-38号院