oracle FGA的學習
Oracle9i Database 推出了一種稱為細粒度審計 (FGA) 的新特性,可以審計所有DML語句
[@more@]Oracle9i Database 推出了一種稱為細粒度審計 (FGA) 的新特性,可以審計所有DML語句
例示:
1.用sys帳號建立使用者並賦許可權
SQL>grant connect,resource to bank identified by bank;
2.登入bank帳號建立accounts表
create table accounts(
acct_no number not null,
cust_id number not null,
balance number(15,2));
3.用sys帳號建立審計規則
begin
dbms_fga.add_policy (
object_schema=>'BANK',
object_name=>'ACCOUNTS',
policy_name=>'ACCOUNTS_ACCESS'
);
end;
4.bank帳號查詢accounts表
select * from bank.accounts;
(經測試sys使用者查詢此表時不會記錄在審計資訊中,其它使用者訪問時則會記錄)
5.sys使用者查詢審計資訊
SQL> select timestamp,
2 db_user,
3 os_user,
4 object_schema,
5 object_name,
6 sql_text
7 from dba_fga_audit_trail;
TIMESTAMP DB_USER OS_USER OBJECT_SCHEMA OBJECT_NAM SQL_TEXT
-------------- ---------- --------------- --------------- ---------- -----------------------------
21-9月 -07 BANK QHTLUJGuser BANK ACCOUNTS select * from accounts
可以增加審計列和審計條件,如下:
begin
dbms_fga.add_policy (
object_schema=>'BANK',
object_name=>'ACCOUNTS',
policy_name=>'ACCOUNTS_ACCESS',
audit_column => 'BALANCE',
audit_condition => 'BALANCE >= 11000'
);
end;
刪除審計策略
begin
dbms_fga.drop_policy (
object_schema => 'BANK',
object_name => 'ACCOUNTS',
policy_name => 'ACCOUNTS_ACCESS'
);
end;
停用審計策略
begin
dbms_fga.enable_policy (
object_schema => 'BANK',
object_name => 'ACCOUNTS',
policy_name => 'ACCOUNTS_ACCESS',
enable => FALSE
);
end;
要重新啟用它,可使用同一函式,但是將引數 enable 設定為 TRUE。
也可以對儲存過程進行審計,用以下兩個引數:
handler_schema 擁有資料過程的模式
handler_module 過程名稱
FGA 資料字典檢視
FGA 策略的定義位於資料字典檢視 DBA_AUDIT_POLICIES 中。
審計線索收集在 SYS 擁有的表 FGA_LOG$ 中。DBA_FGA_AUDIT_TRAIL 是該表上的一個檢視。
10G FGA的擴充套件
在 Oracle 9i Database 下,這個策略只能審計 SELECT 語句。然而,在 Oracle Database 10g 中,您可以擴充套件它,使它包含 INSERT、UPDATE 和 DELETE。您可以透過指定一個新的引數來實現這個目的:
statement_types => 'INSERT, UPDATE, DELETE, SELECT'
statement_type 引數預設情況下只審計 SELECT 語句。
在 FGA 審計線索中,獲取賦值變數的值:audit_trail = DB_EXTENDED,停止獲取audit_trail => DB,預設情況下,捕獲賦值變數,這個引數的值為 DB_EXTENDED。
FGA 和常規審計:差異
如果標準審計和細粒度審計在 Oracle Database 10g 中是類似的,您可能要問,在什麼情況下,FGA 將是更好的選擇?好的,讓我們研究一下它們的差異。
標準審計必須用引數 AUDIT_TRAIL 在資料庫級啟用。這個引數不是動態的;您必須重啟資料庫來使其生效。相比而言,FGA 不需要任何引數修改。
一旦被設定在一個物件上,標準審計將保持在那裡。要解除它,您必須用 NOAUDIT 命令刪除審計選項。這可能很不方便,因為在一個表上丟棄審計選項也將丟棄後設資料資訊。然而,FGA 可以臨時禁用和啟用,不丟失任何後設資料資訊。
FGA 只能夠處理四種型別的語句:SELECT、INSERT、UPDATE 和 DELETE。相比而言,常規審計可以處理其它許多語句和許可權,甚至會話連線和斷開。
標準審計每次會話只建立一條記錄(按會話)或每次訪問物件建立一條記錄(按訪問)這種佔用資源很少的方式對於控制審計線索表中的空間非常重要。FGA 並不是同樣節省資源;它每次訪問執行一次 — 使得線索更大。
透過記錄線索,標準審計可以用來檢測任何中斷企圖,如果企圖沒有成功,則將產生錯誤程式碼。而 FGA 不能。
標準審計可以寫資料庫表或 OS 檔案。後者在審計員(不是資料庫管理員)能夠訪問線索時非常有用。在 Windows 下,非資料庫審計線索記錄在事件日誌中,並且可以用不同的方式對其進行訪問。這個選項保護了審計線索的完整性。然而,FGA 日誌僅寫到資料庫表 FGA_LOG$ 中。您可以在 FGA 中建立使用者自定義的審計處理程式來寫 OS 檔案,但它們的完整性不能保證。
標準審計可以設定用於預設物件。當表是在執行期建立時,這個功能變得極為有用:預設的審計選項允許沒有資料庫管理員干預的審計。這在 FGA 中是不可能的,使用者必須在一個現有的表上建立策略,上述的情況只能在表已建立之後才可能發生。
在 FGA 中,審計更加靈活 — 僅當訪問某些列,當某個特定的條件為真時等等。這種多功能性在您需要控制線索的增長時非常方便。
在 FGA 中,SQL 賦值變數預設被捕獲。在常規審計中,必須把初始化引數 audit_trail設為 db_extended,以啟用這一功能。
許可權差異:常規審計需要審計系統或語句許可權;FGA 只需要 dbms_fga 程式包上的執行許可權。
透過上面的比較,您將瞭解為什麼可以證明 FGA 在某些情況下很有用。利用 Oracle Database 10g 中的增強的常規審計特性,一些以前認為不可能的任務 — 例如捕獲賦值變數的值 — 變得十分容易。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/271283/viewspace-970829/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle FGAOracle
- Oracle FGA稽核Oracle
- ORACLE VPD AND FGAOracle
- Oracle FGA審計功能Oracle
- Oracle FGA 的使用和cleanup audit trailsOracleAI
- oracle 細粒度審計(fga)Oracle
- oracle fga審計(欄位級)Oracle
- 利用Oracle FGA實現審計Oracle
- Oracle 11g DBMS_FGA包的使用Oracle
- Oracle Undo的學習Oracle
- 學習oracle的度Oracle
- Oracle學習Oracle
- [zt] Oracle Undo的學習Oracle
- oracle的學習方法論Oracle
- oracle學習筆記--oracle常用的命令Oracle筆記
- oracle學習一二Oracle
- oracle學習指南Oracle
- oracle學習列表Oracle
- Oracle Datapump 學習Oracle
- Oracle Profile學習Oracle
- oracle的profile檔案學習Oracle
- oracle 的學習路線圖Oracle
- DBMS_FGA簡介
- oracle 學習筆記 (ORACLE NET )Oracle筆記
- Oracle FGA細粒度審計——基於內容的資料庫審計(一)Oracle資料庫
- Oracle FGA細粒度審計——基於內容的資料庫審計(二)Oracle資料庫
- Oracle FGA細粒度審計——基於內容的資料庫審計(三)Oracle資料庫
- 【FGA】將FGA細粒度審計功能的審計結果記錄在資料庫中資料庫
- 【FGA】將FGA細粒度審計功能的審計結果記錄在XML檔案中XML
- 學習oracle sql loader 的使用OracleSQL
- oracle學習筆記-常用的命令Oracle筆記
- 有助於Oracle學習的網站Oracle網站
- Oracle學習路線Oracle
- Oracle學習總結Oracle
- oracle學習文章(IP)Oracle
- Oracle開發學習Oracle
- 天天學習oracle(一)Oracle
- 天天學習ORACLE(二)Oracle