- 論壇徽章:
- 0
|
分區(qū)細粒度訪問控制
例如:在一個控制環(huán)境中,這個特性被用來控制兩個公司對sales表的訪問.每一個公司擁有的獨立的應(yīng)用程序sell_it和prod_opt,需要擁有不同的安全策略.第一個公司的sell_it應(yīng)用程序認證的用戶需要只能訪問表中來自他們相同地區(qū)的記錄;那就是sales.cust_id+customer.country的聯(lián)合校驗必須符合這個用戶的地區(qū)相吻合.第二個公司的prod_opt應(yīng)用程序的訪問權(quán)限被設(shè)置為只能訪問最近事務(wù)提交的記錄上.也就是與sales.time_id相關(guān)聯(lián).在8i中,在一個細粒度訪問控制中擁有這兩個策略將需要開發(fā)公司共同協(xié)作部署.如果兩個產(chǎn)品來自競爭的兩個公司,這實際上是不可行的.依靠定義"應(yīng)用程序設(shè)置"來強行控制對基本objects的一些特殊規(guī)定,每一個應(yīng)用程序現(xiàn)在能夠?qū)崿F(xiàn)一系列私有的安全策略.
二:細粒度審計.
...一個提供擴展的入侵檢測,捕獲sql執(zhí)行語句,而不是返回數(shù)據(jù)的工具.
...可以將審計策略捆綁在帶有where條件的select語句的表或視圖上.
...oracle用自治事務(wù)來處理用戶自定義的審計事件.
...一個基于列的審計特性減少了錯誤審計的發(fā)生.
數(shù)據(jù)庫管理系統(tǒng)中的審計經(jīng)常被用來監(jiān)控數(shù)據(jù)的訪問.審計紀錄是驗證違反數(shù)據(jù)訪問權(quán)限的基礎(chǔ).新的細粒度審計機制從事于執(zhí)行更細小級別的審計.
新的審計原則是基于簡單的用戶定義關(guān)于表的查詢條件的sql謂詞. 謂詞可以在當查詢結(jié)果中返回了指定的值得時候進行審計.
在基于查詢值的審計中,也有一些情形下管理員只關(guān)心某一個特定的被引用和訪問列情況.因為無論一個列的查詢審計發(fā)生在dml的任何部分都可以進行審計,所以oracle對這個查詢的審計將不存在任何問題.
在8i中,審計項只能被設(shè)置用來監(jiān)控對對象的訪問權(quán),只有一些固定的情況,比如用戶id,時間戳,對象名稱會被記錄在審計跟蹤里.
細粒度審計可以調(diào)用一個存儲過程來作為審計過程的一部分.
-----------------------------------------------------------------------------------
如何進行細粒度審計
...安全管理員用dbms_fga包來為有問題的表建立審計原則.
dbms_fga.add_policy(),dbms_fga.enable_policy(),dbms_fga.disable_policy(),dbms_fga.drop_policy().
-------------------------------------------------------------------------------------
PROCEDURE ADD_POLICY
參數(shù)名稱 類型 輸入/輸出默認值?
OBJECT_SCHEMA VARCHAR2 IN DEFAULT
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
AUDIT_CONDITION VARCHAR2 IN DEFAULT
AUDIT_COLUMN VARCHAR2 IN DEFAULT
HANDLER_SCHEMA VARCHAR2 IN DEFAULT
HANDLER_MODULE VARCHAR2 IN DEFAULT
ENABLE BOOLEAN IN DEFAULT
--------------------------------------------------------------------------
PROCEDURE DISABLE_POLICY
參數(shù)名稱 類型 輸入/輸出默認值?
OBJECT_SCHEMA VARCHAR2 IN DEFAULT
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
------------------------------------------------------------------------------
PROCEDURE DROP_POLICY
參數(shù)名稱 類型 輸入/輸出默認值?
OBJECT_SCHEMA VARCHAR2 IN DEFAULT
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
------------------------------------------------------------------------------
PROCEDURE ENABLE_POLICY
參數(shù)名稱 類型 輸入/輸出默認值?
OBJECT_SCHEMA VARCHAR2 IN DEFAULT
OBJECT_NAME VARCHAR2 IN
POLICY_NAME VARCHAR2 IN
ENABLE BOOLEAN IN DEFAULT
-------------------------------------------------------------------------------
...用表dba_audit_policies來列出已定義的原則.
...用表dba_fga_audit_trail來放置審計紀錄.這個表包括觸發(fā)審計的用戶名,SQL語句,
審計名稱,會話ID號,時間戳,和其他一些屬性.
...管理員可以定義審計事件處理器來處理發(fā)生的時間,比如像管理員傳送警告頁.
--------------------------------------------------------------------------------------
下面列舉一個新的細粒度原則的例子,從這個例子我們可以看出9I細粒度審計原則與8I的區(qū)別.
如果我們的原則設(shè)為:AUDIT_CONDITION='SALARY>;10000'
這個時候我們看一下我們執(zhí)行
SELECT last_name,salary FROM employees WHERE last_name = ’Russell’
盡管我們選擇的查詢條件中沒有包含SALARY列,但是由于我們的對SALARY列進行查詢,如果RUSELL的SALARY值大于10000,那么這條記錄將被審計.
審計紀錄如下
'SELECT LAST_NAME,SALARY FROM EMPLOYEES WHERE LAST_NAME='RUSSELL',<TIMESTAMP>;,<SCN>;,
<USERNAME>;,........
如果我們執(zhí)行
SELECT LAST_NAME,SALARY FROM EMPLOYEES WHERE SALARY<9000
那么盡管這條語句訪問,查詢了SALARY列,但是由于他訪問的值未達到審計閥值,那么將不被審計.
-------------------------------------------------------------------------------------
細粒度審計只對一個有WHERE條件的SELECT語句有效,并且只能設(shè)定一個被審計的列.
上面的查詢語句觸發(fā)的事件不是造成用戶無法查詢到這些語句,這些SALARY>;10000實際上被返回
給查詢用戶,但是同時一個審計事件被寫到審計跟蹤里,包括完整的SQL語句,時間戳等信息.
細粒度審計并不自動的捕獲返回給查詢用戶的查詢結(jié)果,但是你可以用細粒度審計原則結(jié)合閃回
查詢重建返回給用戶的紀錄.
細粒度審計能夠?qū)崿F(xiàn)數(shù)據(jù)庫系統(tǒng)的入侵監(jiān)測功能.例如,開發(fā)人員可以為一個審計增加一個事件處理器來通知管理員,是否有被審計的事件發(fā)生.非SQL的訪問是不被審計的,例如:如果你使用DIRECT PATH EXPORT,這種方式繞過了數(shù)據(jù)庫的SQL層,審計條件將不被觸發(fā).
------------------------------------------------------------------------------------
細粒度審計事件處理器
如何創(chuàng)建.
CREATE PROCEDURE catchlog (schema_name VARCHAR2,table_name VARCHAR2,policy VARCHAR2)
AS BEGIN
-- send an alert note to my pager
UTIL_ALERT_PAGER(’CatchLog:’||Table_name||SYSDATE);
END;
/
如何添加
DBMS_FGA.ADD_POLICY ( ...HANDLER_SCHEMA=>;’HRMGR’, HANDLER_MODULE=>;’CATCHLOG’);
細粒度審計事件處理器總結(jié):
在上面的例子中,用戶HRMGR創(chuàng)建了一個存儲過程CATCHLOG,參數(shù)的類型和我們的例子必須
一致,但是名字可以改變.
審計事件處理器的添加需要一個擁有權(quán)限的用戶
當?shù)谝粋我們關(guān)心的行被取得時,審計事件紀錄將被記錄并存放下來,審計函數(shù)HRMGR.CATCHLOG
被調(diào)用. |
|