Oracle FGA細粒度審計——基於內容的資料庫審計(三)

realkid4發表於2011-06-28

 

在上面兩篇中,我們已經介紹了Oracle FGA細粒度審計的核心內容元件,以及如何檢視審計結果。此外,還有一些關於Oracle FGA使用中的細節問題需要注意。本篇將關注dbms_fga包的其他一些方法的方式。

 

4、  dbms_fga包其他方法解析

 

dbms_fga包是Oracle提供的FGA管理程式元件,藉助dbms_fga我們可以容易的進行FGA策略的制定、刪除和管理。

 

在上面兩篇系列的文章中,我們已經熟悉了dbms_fga包的add_policy儲存過程。使用該方法,我們可以方便的制定各種型別的FGA審計策略。下面介紹該包的其他方法。

 

ü        刪除Oracle FGA審計策略drop_policy

 

有新增策略的方法,就有對應的刪除方法。對新增進的Oracle FGA策略,可以使用drop_policy的方法進行刪除。下面是該方法的簽名。

 

 

  PROCEDURE drop_policy(object_schema IN VARCHAR2 := NULL,

                        object_name   IN VARCHAR2,

                        policy_name   IN VARCHAR2);

 

 

輸入指定的審計物件所屬schema、審計物件名稱以及對應的policy名稱,就可以實現刪除審計策略。

 

注意:筆者從這個方法中有一個感受,就是Oracle FGA策略policy是一種緊密圍繞審計物件的方法。透過審計物件schema、物件名稱和策略名稱唯一定位到一個審計策略。這是否也就意味著不同審計物件能夠擁有相同名稱的policy

 

下面是針對drop_policy的實驗。

 

 

SQL> select policy_name,policy_text from dba_audit_policies;

 

POLICY_NAME                    POLICY_TEXT

------------------------------ --------------------------------------------------------------------------------

POL_VID_LENGTH                 length(vid)>5

POL_VID_MODIFY                

POL_DT_DEL                     trunc(dt)

POL_VID_SELECT                 to_char(sysdate,'Day') in ('星期六','星期日')

 

 

之後實驗刪除。

 

 

SQL> exec dbms_fga.drop_policy(object_schema => 'SCOTT',object_name => 'T',policy_name => 'POL_VID_SELECT');

 

PL/SQL procedure successfully completed

 

SQL> select policy_name,policy_text from dba_audit_policies;

 

POLICY_NAME                    POLICY_TEXT

------------------------------ --------------------------------------------------------------------------------

POL_VID_LENGTH                 length(vid)>5

POL_VID_MODIFY                

POL_DT_DEL                     trunc(dt)

 

 

ü        Oracle FGA策略啟用禁用方法disable_policyenable_policy

 

在某些時候,需要臨時性的將審計策略進行終止使用。在dba_audit_policies檢視中,存在enabled列,表示當前policy是否啟用。

 

 

SQL> select policy_name,enabled,policy_text from dba_audit_policies;

 

POLICY_NAME          ENABLED POLICY_TEXT

-------------------- ------- --------------------------------------------------------------------------------

POL_VID_LENGTH       YES     length(vid)>5

POL_VID_MODIFY       YES    

POL_DT_DEL           YES     trunc(dt)

 

 

可以使用dbms_fga包的兩個方法進行策略啟用禁用的操作。方法API介面簽名如下:

 

  -- enable_policy - enable a security policy for a table or view

  --

  -- INPUT PARAMETERS

  --   object_schema   - schema owning the table/view, current user if NULL

  --   object_name     - name of table or view

  --   policy_name     - name of policy to be enabled or disabled

 

  PROCEDURE enable_policy(object_schema IN VARCHAR2 := NULL,

                          object_name   IN VARCHAR2,

                          policy_name   IN VARCHAR2,

                          enable        IN BOOLEAN := TRUE);

 

  -- disable_policy - disable a security policy for a table or view

  --

  -- INPUT PARAMETERS

  --   object_schema   - schema owning the table/view, current user if NULL

  --   object_name     - name of table or view

  --   policy_name     - name of policy to be enabled or disabled

 

  PROCEDURE disable_policy(object_schema IN VARCHAR2 := NULL,

                           object_name   IN VARCHAR2,

                           policy_name   IN VARCHAR2);

 

 

Oracle FGA策略一旦被disable掉,就不再進行審計工作。

 

//禁用對應的實驗Policy

SQL> exec dbms_fga.disable_policy(object_schema => 'SCOTT',object_name => 'T',policy_name => 'POL_VID_LENGTH');

 

PL/SQL procedure successfully completed

 

SQL> select policy_name,enabled,policy_text from dba_audit_policies;

 

POLICY_NAME          ENABLED POLICY_TEXT

-------------------- ------- --------------------------------------------------------------------------------

POL_VID_LENGTH       NO      length(vid)>5

POL_VID_MODIFY       YES    

POL_DT_DEL           YES     trunc(dt)

 

//之後進行插入(vid長度超過5

SQL> insert into t values (6,'fdsfdsff');

1 row inserted

 

SQL> commit;

Commit complete

 

 

SQL> select sysdate from dual;

 

SYSDATE

-----------

2011-6-26 2

 

SQL> select timestamp,sql_text from dba_fga_audit_trail;

 

TIMESTAMP   SQL_TEXT

----------- --------------------------------------------------------------------------------

2011-6-24 2 insert into t values (4,'k45545', sysdate)

2011-6-24 2 update t set vid='kkl' where id=1

2011-6-24 2 delete t where id=2

2011-6-25 2 select * from t

2011-6-25 2 select id from t

2011-6-25 2 select * from t

 

6 rows selected

 

 

結果發現,當策略被禁用之後,是不會進行審計操作的。

 

對禁用的policy,使用enable_policy可以方便的重新啟用。

 

SQL> exec dbms_fga.enable_policy(object_schema => 'SCOTT',object_name => 'T',policy_name => 'POL_VID_LENGTH');

 

PL/SQL procedure successfully completed

 

 

POLICY_NAME          ENABLED POLICY_TEXT

-------------------- ------- --------------------------------------------------------------------------------

POL_VID_LENGTH       YES     length(vid)>5

POL_VID_MODIFY       YES    

POL_DT_DEL           YES     trunc(dt)

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17203031/viewspace-700921/,如需轉載,請註明出處,否則將追究法律責任。

相關文章