ORACLE的数据库审计 audit
2016-08-10 20:57
519 查看
数据库审计audit
13.1 审计的功能:监控特定用户在database 的action(操作)
13.2 审计种类:
1)标准数据库审计(语句审计、权限审计、对象审计)
2)基于值的审计(Value-Based, 触发器审计)
3)精细审计(FGA)
13.3 启用审计(默认不启用)
09:55:23 SQL> show parameter audit
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/admin/timran11g/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string DB
SQL>
audit_trail参数三个选项
1)none 不启用audit
2)db 将审计结果放在数据字典基表sys.aud$中,(一般用于审计非sys用户,也可以移出system表空间,在DB中的好处是方便检索)
3)os 将审计结果存放到操作系统的文件里(由audit_file_dest指定的位置, 一般用于审计sys)
审计sys
1)Oracle强制审计sys用户的特权操作,如启动和关闭数据库,结果记录在参数audit_file_dest指向的.aud文件中。
2)指定参数audit_sys_operations = true 和 audit_trail = os
13.4 标准数据库审计的三个级别
查看标准审计结果可以通过视图dba_audit_taile, 该视图读取aud$内容。
13.4.1 语句审计
按语句来审计,比如audit table会审计数据库中所有的create table, drop table, truncate table语句,执行成功或不成功都可审计。
SQL> audit table;
13.4.2 权限审计
按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a; 当用户a访问了用户b的表时(如select * from b.t;)
会用到select any table权限,故会被审计。用户访问自己的表不会被审计。
SQL> audit select any table;
13.4.3 对象审计
按对象审计,只审计on关键字指定对象的相关操作,如:aduit alter,delete,drop,insert on cmy.t by scott; 这里会对cmy用户的t表进行审
计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。
SQL> audit update on scott.emp;
13.5 基于值的审计。
它拓展了标准数据库审计,不仅捕捉审计事件,还捕捉那些被insert,update和delete的值。由于基于值的审计是通过触发器来实现。所以你可以选择哪些信息进入审计记录,比如,只记录提交的信息,或不记录已改变的数据等。(注意点)
例,记录下scott的登录轨迹。
linux下sys:
SQL> truncate table aud$;
SQL> audit session by scott;
SQL> select count(*) from aud$;
COUNT(*)
----------
0
cmd下scott:
C:\Documents and Settings\timran>sqlplus scott/scott@timran11g
linux下sys:
SQL> select count(*) from aud$;
COUNT(*)
----------
1
col username for a10;
col userhost for a30;
SQL> select username,userhost,timestamp,action_name from dba_audit_trail;
USERNAME USERHOST TIMESTAMP ACTION_NAME
---------- ------------------------------ -----------------------------------------------
SCOTT WORKGROUP\TIMRAN-222C75E5 2014-01-09 13:35:53
LOGON
SQL> noaudit session by scott;
13.6 精细审计Fine Grained Auditing (FGA)。它拓展了标准数据库审计,捕捉准确的SQL语句。
EM中只有标准数据库审计,目前还没有包括基于值的审计和精细审计。
13.6.1 举例:精细审计Fine Grained Auditing (FGA),审计访问特定行或特定行的特定列。操作可以使用dbms_fga包。
sys:
SQL> create table scott.emp1 as select * from scott.emp;
SQL> grant all on scott.emp1 to tim;
1)添加一个精细度审计策略
begin
dbms_fga.add_policy(
object_schema=>'scott',
object_name=>'emp1',
policy_name=>'chk_emp1',
audit_condition =>'deptno=20',
audit_column =>'sal',
statement_types =>'update,select');
end;
/
2)测试一下步骤,再查看审计结果
scott:
SQL> select * from emp1 where deptno=20;
tim:
SQL>update scott.emp1 set sal=8000 where empno=7902;
SQL>select empno,ename from scott.emp1 where deptno=20;//缺少sal列,不审计
sys:
SQL> select empno,ename,sal from scott.emp1 where deptno=20; //虽然符合条件,但sys默认不审计
3)验证审计结果
11:32:24 SQL> conn /as sysdba
SQL> select db_user,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') "time" ,sql_text from dba_fga_audit_trail;
DB_USER time SQL_TEXT
------------------------------ ------------------- -------------------------------------------------------------------------
SCOTT 2013-08-17 16:57:36
select * from emp1 where deptno=20
TIM 2013-08-17 16:57:52
update scott.emp1 set sal=8000 where empno=7902
可以看出,必须同时满足了所有审计条件(前面定义的)才能入选。另外没有审计SYS.
SQL> truncate table fga_log$; //清除审计记录
SQL> select db_user,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') "time" ,sql_text from dba_fga_audit_trail;
no rows selected
4)删除FGA的PL/SQL API命令
exec dbms_fga.drop_policy(object_schema=>'scott',object_name=>'emp1',policy_name=>'chk_emp1');
注意点: 视图DBA_AUDIT_TRIAL显示标准数据库审计,DBA_FGA_AUDIT_TRIAL显示FGA,DBA_COMMON_AUDIT_TRIAL则两者都显示.要查看触发器审核结果,必须创建处理自己定义的表的自定义视图。
13.1 审计的功能:监控特定用户在database 的action(操作)
13.2 审计种类:
1)标准数据库审计(语句审计、权限审计、对象审计)
2)基于值的审计(Value-Based, 触发器审计)
3)精细审计(FGA)
13.3 启用审计(默认不启用)
09:55:23 SQL> show parameter audit
NAME TYPE
VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/admin/timran11g/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string DB
SQL>
audit_trail参数三个选项
1)none 不启用audit
2)db 将审计结果放在数据字典基表sys.aud$中,(一般用于审计非sys用户,也可以移出system表空间,在DB中的好处是方便检索)
3)os 将审计结果存放到操作系统的文件里(由audit_file_dest指定的位置, 一般用于审计sys)
审计sys
1)Oracle强制审计sys用户的特权操作,如启动和关闭数据库,结果记录在参数audit_file_dest指向的.aud文件中。
2)指定参数audit_sys_operations = true 和 audit_trail = os
13.4 标准数据库审计的三个级别
查看标准审计结果可以通过视图dba_audit_taile, 该视图读取aud$内容。
13.4.1 语句审计
按语句来审计,比如audit table会审计数据库中所有的create table, drop table, truncate table语句,执行成功或不成功都可审计。
SQL> audit table;
13.4.2 权限审计
按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a; 当用户a访问了用户b的表时(如select * from b.t;)
会用到select any table权限,故会被审计。用户访问自己的表不会被审计。
SQL> audit select any table;
13.4.3 对象审计
按对象审计,只审计on关键字指定对象的相关操作,如:aduit alter,delete,drop,insert on cmy.t by scott; 这里会对cmy用户的t表进行审
计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。
SQL> audit update on scott.emp;
13.5 基于值的审计。
它拓展了标准数据库审计,不仅捕捉审计事件,还捕捉那些被insert,update和delete的值。由于基于值的审计是通过触发器来实现。所以你可以选择哪些信息进入审计记录,比如,只记录提交的信息,或不记录已改变的数据等。(注意点)
例,记录下scott的登录轨迹。
linux下sys:
SQL> truncate table aud$;
SQL> audit session by scott;
SQL> select count(*) from aud$;
COUNT(*)
----------
0
cmd下scott:
C:\Documents and Settings\timran>sqlplus scott/scott@timran11g
linux下sys:
SQL> select count(*) from aud$;
COUNT(*)
----------
1
col username for a10;
col userhost for a30;
SQL> select username,userhost,timestamp,action_name from dba_audit_trail;
USERNAME USERHOST TIMESTAMP ACTION_NAME
---------- ------------------------------ -----------------------------------------------
SCOTT WORKGROUP\TIMRAN-222C75E5 2014-01-09 13:35:53
LOGON
SQL> noaudit session by scott;
13.6 精细审计Fine Grained Auditing (FGA)。它拓展了标准数据库审计,捕捉准确的SQL语句。
EM中只有标准数据库审计,目前还没有包括基于值的审计和精细审计。
13.6.1 举例:精细审计Fine Grained Auditing (FGA),审计访问特定行或特定行的特定列。操作可以使用dbms_fga包。
sys:
SQL> create table scott.emp1 as select * from scott.emp;
SQL> grant all on scott.emp1 to tim;
1)添加一个精细度审计策略
begin
dbms_fga.add_policy(
object_schema=>'scott',
object_name=>'emp1',
policy_name=>'chk_emp1',
audit_condition =>'deptno=20',
audit_column =>'sal',
statement_types =>'update,select');
end;
/
2)测试一下步骤,再查看审计结果
scott:
SQL> select * from emp1 where deptno=20;
tim:
SQL>update scott.emp1 set sal=8000 where empno=7902;
SQL>select empno,ename from scott.emp1 where deptno=20;//缺少sal列,不审计
sys:
SQL> select empno,ename,sal from scott.emp1 where deptno=20; //虽然符合条件,但sys默认不审计
3)验证审计结果
11:32:24 SQL> conn /as sysdba
SQL> select db_user,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') "time" ,sql_text from dba_fga_audit_trail;
DB_USER time SQL_TEXT
------------------------------ ------------------- -------------------------------------------------------------------------
SCOTT 2013-08-17 16:57:36
select * from emp1 where deptno=20
TIM 2013-08-17 16:57:52
update scott.emp1 set sal=8000 where empno=7902
可以看出,必须同时满足了所有审计条件(前面定义的)才能入选。另外没有审计SYS.
SQL> truncate table fga_log$; //清除审计记录
SQL> select db_user,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') "time" ,sql_text from dba_fga_audit_trail;
no rows selected
4)删除FGA的PL/SQL API命令
exec dbms_fga.drop_policy(object_schema=>'scott',object_name=>'emp1',policy_name=>'chk_emp1');
注意点: 视图DBA_AUDIT_TRIAL显示标准数据库审计,DBA_FGA_AUDIT_TRIAL显示FGA,DBA_COMMON_AUDIT_TRIAL则两者都显示.要查看触发器审核结果,必须创建处理自己定义的表的自定义视图。
相关文章推荐
- 数据库安全 Oracle审计Audit
- Oracle datanbase 数据库审计 audit
- [Oracle] 数据库安全之 - 审计Audit
- Oracle datanbase 数据库审计 audit
- nullnullOracle 审计audit 的技巧使用,追踪oracle后台数据库的DML动作
- Oracle 审计audit 的技巧使用,追踪oracle后台数据库的DML动作
- 关于Oracle审计(audit)
- 使用Oracle的审计功能监控数据库中的可疑操作
- Oracle Audit 审计 说明
- Oracle Audit 审计 说明
- Oracle 审计参数AUDIT_SYSLOG_LEVEL介绍
- Oracle 11g数据库审计
- Oracle 审计参数AUDIT_SYSLOG_LEVEL介绍
- ORACLE 数据库 (DBA)之 标准审计AUDITING (审计)
- Oracle Audit 审计
- 监控和审计 Oracle 数据库错误
- SnapAudit(Database Audit Platform) 数据库统一审计管理解决方案
- Oracle Audit 审计 说明
- 审计业务中大型数据库的海量数据采集(Oracle/Sybase)
- Oracle 审计功能 Audit