Oracle Audit & FGA

Oracle的审计功能主要用来追踪敏感的数据操作,其应用包含两部分类容:

(1),普通的审计

(2),FGA细粒度审计

(3),对sys用户行为的审计

相互独立,FGA是对审计的扩充.


1,普通审计

包括对象审计,权限审计,语句审计,下面普通审计以对象审计为例子.
(1),审计对象:HR用户的所有表

(2),参数设置audit_trail
SQl>alter system set audit_trail = db scope = spfile;
SQL>shutdown immediate;
SQL>startup;

(3),启用对用户HR的审计

审计表的增,删,改;经过启用,HR会对其所有表的增,删,改进行行为记录,包括那些没有修改成功的操作.如:更新一条记录,但没有更新成功,也会被记录.
SQL>audit insert table,update table,delete table by HR;

审计存储过程的执行情况.
SQL>audit execute procedure by HR;

(4)验证
SQL> select os_username,username,to_char(extended_timestamp,'dd-mon-yyyy hh24:mi:ss') timestamp,owner,obj_name,action_name from dba_audit_trail where owner = 'HR' order by timestamp;
OS_USERNAME     USERNAME                       TIMESTAMP            OWNER               OBJ_NAME        ACTION_NAME
--------------- ------------------------------ -------------------- ------------------------------ ---------------
oracle          HR                             10-mar-2012 14:48:18 HR                   EMPLOYEES       UPDATE
oracle          HR                             10-mar-2012 14:50:24 HR                   EMPLOYEES       UPDATE
oracle          HR                             10-mar-2012 15:03:51 HR                   EMPLOYEES       UPDATE
oracle          HR                             10-mar-2012 15:04:07 HR                   EMPLOYEES       UPDATE
oracle          HR                             10-mar-2012 15:04:18 HR                   EMPLOYEES       UPDATE
oracle          HR                             10-mar-2012 16:39:57 HR                   EMPLOYEES       UPDATE
jeron           HR                             10-mar-2012 16:55:20 HR                   EMPLOYEES       UPDATE
oracle          HR                             10-mar-2012 19:16:53 HR                   ACCOUNTS        DELETE
6 rows selected.

只要是HR对表有任何增,删,改;视图dba_audit_trail中都可以查询出来;底层表为AUD$.

2,FGA审计
(1),审计的粒度比普通的审计要细,可以针对具体用户,具体的表,具体的列,具体的操作进行审计.

(2),参数设置audit_trail与普通审计完全一致,同上设置.

(3),启用对用户HR的employees表中,salary薪水这一列的增,删,改进行审核.
BEGIN
DMBS_FGA.ADD_POLICY(
OBJECT_SCHEMA=>'HR',
OBJECT_NAME=>'EMPLOYEES',
POLICY_NAME=>'FGA_EMP_SALARY',
AUDIT_CONDITION=>NULL,
AUDIT_COLUMN=>'SALARY',
STATEMENT_TYPES=>'INSERT,UPDATE,DELETE');
END;
/
执行成功后,表示上述要求的审计已经启用.

(4),查看设置结果
查看创建的FGA策略,名字与详细情况.
SQL>desc dba_audit_policies;
SQL>select policy_name,object_schema,object_name,policy_column,sel,ins,upd,del from dba_audit_policies;
POLICY_NAME          OBJECT_SCHEMA        OBJECT_NAME          POLICY_COLUMN        SEL INS UPD DEL
-------------------- -------------------- -------------------- -------------------- --- --- --- ---
FGA_EMP_SALARY       HR                   EMPLOYEES            SALARY               NO  YES YES YES

查看审计执行的情况
SQL>desc dba_fga_audit_trail;
SQL>select to_char(timestamp,'mm-dd-yyyy hh24:mi:ss') time,db_user,sql_text from dba_fga_audit_trail order by time;
TIME                 DB_USER    SQL_TEXT
-------------------- ---------- ------------------------------------------------------------------------------------------
03-10-2012 16:39:58  HR         update employees set salary = 9000 where first_name = 'Jerron' and last_name = 'Peng'
03-10-2012 16:55:20  HR         update employees set salary = 9100 where first_name = 'Jerron' and last_name = 'Peng'
03-10-2012 20:13:16  HR         delete from employees where employee_id = 200

可以看出什么时候,什么用户执行了什么操作,被FGA审计记录.

(5),上面的这些视图的基表为fga_log$

注意:以上的两个基表aud$,fga_log$都是在system表空间,最好将至转移到独立的表空间中.


3,sys审计
audit_sys_operations参数可以帮助数据库对sys用户的行为进行审计,官方的解释如下
参见http://docs.oracle.com/cd/E11882_01/server.112/e25513/initparams015.htm#REFRN10005
当启用该参数时,数据库重启生效,但Windows和Linux服务器对该审计记录访问的方式不同
Linux会将audit trail保存在audit_file_dest;
Windows的audit trail保存在系统日志的application中,此时audit_file_dest在Windows中并不生效
.







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值