oracle开启audit(审计)
2012-08-14 16:44
363 查看
1、查看审计功能是否开启(本机已经开启,如果audit_sys_operations值为FALSE就是没开审计)
如果没有使用下面语句更改:
注意audit_trail要为DB_EXTENDED才记录执行的具体语句...
2、重启实例
3、针对某表的DML审计(错误的也记录)
4、对该表做各种DML操作
用scott用户登录
5、查询审计信息
或者
---结果:
注意:审计一般只用于对普通用户操作,一般不审计SYS用户
对于windows系统,对sys用户的审计信息并不存在AUDIT_FILE_DEST参数指定的目录里,而是在windows的事件管理器中。
---------------------------------------------------------------------------------------------------------------------
另外通过细粒度审计FGA也可以实现上述审计:
用法创建审计策略:
删除审计策略:
启用审计策略:
禁用审计策略:
首先,创建审计策略
进行查询
使用SYS登录进行查询,
------------
注意: 经过测试发现审计到的SQL语句存在着大小写2种格式。
直接执行的SQL语句,是什么样的语句,审计到的也就是什么样。
在存储里执行的语句,审计到的全是大写的语句。
存储里动态执行的语句,是什么样的语句,审计到的也就是什么样的语句。
审计到的就是
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;
相关文章推荐
- oracle开启audit审计功能
- Oracle中开启某张表的审计(audit)
- oracle开启audit(审计)
- Oracle 审计失败的用户登陆(Oracle audit)
- Oracle datanbase 数据库审计 audit
- Oracle Audit 审计 说明
- Oracle 审计功能 Audit
- Oracle Audit 审计 说明
- [Oracle] 数据库安全之 - 审计Audit
- 数据库安全 Oracle审计Audit
- Oracle Audit 审计
- oracle 10g开启审计
- Oracle 审计功能 Audit
- Oracle Audit 审计功能-入门基础
- 配置Oracle安全审计选项audit
- 关于Oracle审计(audit)
- Oracle 审计失败的用户登陆(Oracle audit)
- Oracle 审计audit 的技巧使用,追踪oracle后台数据库的DML动作
- Oracle 审计参数AUDIT_SYSLOG_LEVEL介绍
- Oracle学习(12)---审计(Audit)