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;

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Oracle数据库中,可以通过以下步骤开启审计策略: 1. 确认审计参数:使用以下SQL查询语句查看是否启用了审计功能并确定审计参数的设置。 ``` SELECT * FROM dba_audit_mgmt_config_params; ``` 2. 创建审计策略:使用以下SQL语句创建审计策略,其中包括审计级别、审计选项、审计对象等。 ``` BEGIN DBMS_AUDIT_MGMT.create_audit_policy ( audit_policy_name => 'my_audit_policy', audit_trail => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, audit_condition => 'SYS_CONTEXT(''USERENV'',''SESSION_USER'') = ''HR''', audit_column => 'SALARY', handler_schema => NULL, enable => TRUE, statement_types => DBMS_AUDIT_MGMT.ALL_STATEMENTS, audit_column_opts => DBMS_AUDIT_MGMT.DB_EXTENDED, audit_object_opts => DBMS_AUDIT_MGMT.AUDIT_OPT_OBJECT_SCHEMA, audit_object => 'HR' ); END; ``` 上述SQL语句创建了一个名为“my_audit_policy”的审计策略,该策略审计HR用户对SALARY列的所有活动,包括SELECT、INSERT、UPDATE和DELETE操作。 3. 启用审计策略:使用以下SQL语句启用审计策略。 ``` BEGIN DBMS_AUDIT_MGMT.enable_audit_policy ( audit_policy_name => 'my_audit_policy', success => TRUE, failure => TRUE ); END; ``` 上述SQL语句启用了名为“my_audit_policy”的审计策略,并记录成功和失败的活动。 需要注意的是,Oracle数据库审计策略应该根据具体的安全需求和风险情况进行制定和调整。同时,审计记录的保护和访问控制也是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值