熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

細粒度訪問原則

2013-11-13 15:24:24  來源: Oracle 

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

From:http://tw.wingwit.com/Article/program/Oracle/201311/16647.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.