oracle 細顆粒審計FGA

FGA ---Fine-Grained Audit   ---每個FGA審計只能針對一個表或者視圖


grant execute on DBMS_FGA to scott
conn scott/tiger


--建立觸發的存儲過程
set serveroutput on 
CREATE or replace PROCEDURE  log_emps_salary
(schema# varchar2, table# varchar2, policy# varchar2)
iS
BEGIN
dbms_output.put_line('用戶 '||schema#||' 的表 '||table#||' 被查看了,觸發了 '||policy#); 
END;
/




--增加FGA審計
begin
dbms_fga.add_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary',
audit_condition=> 'deptno=10',
audit_column => 'sal',
handler_schema => 'scott',
handler_module => 'log_emps_salary',
enable => TRUE,
statement_types=> 'select' );
end;
/


這個審計策會記錄任何用戶訪問了emp表的deptno爲10的sal值得select操作
************************************************************************************************************************************************************
DBMS_FGA.ADD_POLICY (                                                                                                     *
  object_schema       VARCHAR2,  --schema的名字,表或視圖的擁有者                                                                                     *
  object_name         VARCHAR2, --對象名,表或視圖的名字                                                                                     *
  policy_name         VARCHAR2,  --審計策略名字,它和數據庫中其他對象一樣,需要有一個不重複,唯一的名字                                             *
  audit_condition     VARCHAR2,  --篩選條件比如可以選擇哪些符合條件的操作被記錄                                                                             * 
  audit_column        VARCHAR2, --表中的某一列,可以只記錄對錶中某一列的操作.如果不指定表示審計所有的列                                                                 * 
  handler_schema      VARCHAR2,  --是下面的handler_module的擁有者,其實也只能是創建policy的用戶,而上面的object_schema可以是任意用戶   *
  handler_module      VARCHAR2,--可以是一個一個存儲過程或函數,但監測到任何一條符合條件的操作時執行它.                                      *
  enable              BOOLEAN,  --true 或false表示policy是開啓或關閉狀態,如果是false表示不進行審計                                                                                      *
  statement_types     VARCHAR2, --表示哪些操作將被審計,可以填上select,insert,update,delete中的一個或幾個                                                                *
  audit_trail         BINARY_INTEGER IN DEFAULT,--有參數db,xml表示審計到的信息保存到數據庫中或是以xml文件形式保存到磁盤上                           *
  audit_column_opts   BINARY_INTEGER IN DEFAULT); --和audit_conlumn配合使用,any_columns,all_columns兩個選項                                        *
*************************************************************************************************************************************************************

select * from emp;
select ename from emp;


--刪除審計
EXEC dbms_fga.drop_policy ( -
 object_schema => 'scott', -
 object_name => 'emp', -
 policy_name => 'audit_emps_salary');


--啓用審計
begin
dbms_fga.enable_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary' );
end;
/


--禁用審計
begin
dbms_fga.disable_policy (
object_schema => 'scott',
object_name => 'emp',
policy_name => 'audit_emps_salary' );
end;
/



----fga相關的數據字典-------------------
DBA_FGA_AUDIT_TRAIL        --查看審計記錄
ALL_AUDIT_POLICIES
DBA_AUDIT_POLICIES

USER_AUDIT_POLICIES








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章