国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

現實中的細粒度審計(2)

2024-07-21 02:08:27
字體:
來源:轉載
供稿:網友


收集最實用的網頁特效代碼!


現實中的細粒度審計(2)

管理 fga 策略

在前文中您看到了如何添加 fga 策略。要刪除策略,您可以使用以下語句:


begindbms_fga.drop_policy (object_schema => 'bank',object_name => 'accounts',policy_name => 'accounts_access' );end;



對于更改策略而言,沒有隨取隨用的解決方案。要更改策略中的任何參數,必須刪除策略,再使用更改后的參數添加策略。

有時您可能需要臨時禁用審計收集 — 例如,如果您希望將線索表移動到不同的表空間或者要刪除線索表。您可以按如下方法禁用 fga 策略:


begindbms_fga.enable_policy (object_schema => 'bank',object_name => 'accounts',policy_name => 'accounts_access',enable => false );end;



要重新啟用它,可使用同一函數,但是將參數 enable 設置為 true。

處理器模塊

fga 的功能不只是記錄審計線索中的事件;fga 還可以任意執行過程。過程可以執行一項操作,比如當用戶從表中選擇特定行時向審計者發送電子郵件警告,或者可以寫到不同的審計線索中。這種存儲代碼段可以是獨立的過程或者是程序包中的過程,稱為策略的處理器模塊。實際上由于安全性原因,它不必與基表本身處于同一模式中,您可能希望特意將它放置在不同的模式中。由于只要 select 出現時過程就會執行,非常類似于 dml 語句啟動的觸發器,您還可以將其看作 select 語句觸發器。以下參數指定將一個處理器模塊指定給策略:

handler_schema 擁有數據過程的模式
handler_module 過程名稱

處理器模塊還可以采用程序包的名稱來代替過程名稱。在這種情況下,參數 handler_module 在 package.procedure 的格式中指定。

fga 數據字典視圖

fga 策略的定義位于數據字典視圖 dba_audit_policies 中。表 2 包含該視圖中一些重要列的簡短描述。

審計線索收集在 sys 擁有的表 fga_log$ 中。對于 sys 擁有的任何原始表,此表上的某些視圖以對用戶友好的方式顯示信息。dba_fga_audit_trail 是該表上的一個視圖。表 3 包含該視圖中重要列的簡短描述。

一個重要的列是 sql_bind,它指定查詢中使用的綁定變量的值 — 這是顯著增強該工具功能的一項信息。

另一個重要的列是 scn,當發生特定的查詢時,它記錄系統更改號。此信息用于識別用戶在特定時間看到了什么,而不是現在的值,它使用了閃回查詢,這種查詢能夠顯示在指定的 scn 值時的數據。我將在本系列的第 2 部分中詳細說明這種功能強大的特性。

視圖和 fga

到目前為止我已經討論了在表上應用 fga;現在讓我們來看如何在視圖上使用 fga。假定在 accounts 表上定義視圖 vw_accounts 如下:


create view vw_accounts as select * from accounts;



現在,如果用戶從視圖中而不是從表中進行選擇:


select * from vw_accounts;



您將看到以下審計線索:


select object_name, sql_text from dba_fga_audit_trail;object_name sql_text----------- -------------------------------------------------accounts select * from vw_accounts



注意,是基表名稱而不是視圖名稱出現在 object_name 列中,因為視圖中的選擇是從基表中進行選擇。但是,sql_text 列記錄了用戶提交
的實際語句,而這正是您希望了解的。 接下來的步驟


閱讀有關 dbms_fga 程序包的更多信息

訪問 oracle 數據庫主頁

訪問 oracle 平臺安全性主頁




如果您只希望審計對視圖的查詢而不是對表的查詢,可以對視圖本身建立策略。通過將視圖名稱而不是表的名稱傳遞給打包的過程 dbms_fga.add_policy 中的參數 object_name,可以完成這項工作。隨后 dba_fga_audit_trail 中的 object_name 列將顯示視圖的名稱,并且不會出現有關表訪問的附加記錄。

其它用途

除了記錄對表的選擇訪問,fga 還可用于某些其它情況:

您可以對數據倉庫使用 fga,以捕獲特定的表、視圖或物化視圖上發生的所有語句,這有助于計劃索引。您不需要到 v$sql 視圖去獲取這些信息。即使 sql 語句已經超出了 v$sql 的期限,在 fga 審計線索中將會始終提供它。



由于 fga 捕獲綁定變量,它可以幫助您了解綁定變量值的模式,這有助于設計直方圖集合等。



前文已經提到,處理器模塊可以向審計者或 dba 發送警告,這有助于跟蹤惡意應用程序。



由于 fga 可以作為 select 語句的觸發器,您可以在需要這種功能的任何時候使用它。


結論

fga 使您在 oracle 數據庫中支持隱私和職能策略。因為審計發生在數據庫內部而不是應用程序中,所以無論用戶使用的訪問方法是什么(通過諸如 sql*plus 等工具或者應用程序),都對操作進行審計,允許進行非常簡單的設置。

下一次我將討論高級 fga 技術以及 oracle database 10g 中的新特性,這些特性使 fga 的功能極為強大,適用于所有類型的審計情況。

arup nanda ([email protected]) 是 intelliclaim 的首席數據庫設計人員,該公司位于 connecticut 的 norwalk,提供對衛生保健保險索賠管理高度安全和基于規則的優化。他是 2003 年度 oracle dba 獎的獲得者,并與他人合作編著了即將出版的 oracle 隱私安全性審計(rampant techpress 出版,2003)。

表 1:演示何時審計操作以及何時不審計操作的各種情況 sql 語句審計狀態select balance from accounts;進行審計。用戶選擇了在添加策略時所指定的審計列 balance。select * from accounts;進行審計。即使用戶沒有明確指定列 balance,* 也隱含地選擇了它。select cust_id from accounts where balance < 10000;進行審計。即使用戶沒有明確指定列 balance,where 子句也隱含地選擇了它。select cust_id from accounts;不進行審計。用戶沒有選擇列 balance。select count(*) from accounts;不進行審計。用戶沒有明確或隱含地選擇列 balance。



表 2:數據字典視圖 dba_audit_policies 中重要的列 object_schema對其定義了 fga 策略的表或視圖的所有者object_name表或視圖的名稱policy_name策略的名稱 — 例如,accounts_accesspolicy_text在添加策略時指定的審計條件 — 例如,balance >= 11000policy_column審計列 — 例如,balanceenabled如果啟用則為 yes,否則為 no pf_schema擁有策略處理器模塊的模式(如果存在)pf_package處理器模塊的程序包名稱(如果存在)pf_function處理器模塊的過程名稱(如果存在)


表 3:dba_fga_audit_trail 視圖中重要的列 session_id審計會話標識符;與 v$session 視圖中的會話標識符不同timestamp審計記錄生成時的時間標記db_user發出查詢的數據庫用戶os_user操作系統用戶userhost用戶連接的機器的主機名client_id客戶標識符(如果由對打包過程 dbms_session.set_identifier 的調用所設置)ext_name外部認證的客戶名稱,如 ldap 用戶object_schema對該表的訪問觸發了審計的表所有者object_name對該表的 select 操作觸發了審計的表名稱policy_name觸發審計的策略名稱(如果對表定義了多個策略,則每個策略將插入一條記錄。在此情況下,該列顯示哪些行是由哪個策略插入的。)scn記錄了審計的 oracle 系統更改號sql_text由用戶提交的 sql 語句 sql_bind由 sql 語句使用的綁定變量(如果存在)

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐清市| 乾安县| 醴陵市| 宜兰市| 岢岚县| 黔西| 曲阳县| 江北区| 绥宁县| 广饶县| 章丘市| 耒阳市| 胶南市| 克拉玛依市| 团风县| 荥阳市| 清水河县| 房山区| 梧州市| 灵石县| 水城县| 壤塘县| 衡水市| 巩义市| 开化县| 安仁县| 南丰县| 南安市| 南城县| 清徐县| 舟曲县| 达州市| 翁牛特旗| 泾源县| 广宁县| 乡宁县| 宝应县| 佛冈县| 连南| 元谋县| 武威市|