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

首頁 > 開發 > 綜合 > 正文

FGA 策略(細粒度審計)

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

  FGA 策略(細粒度審計)
  
  增加 FGA 策略 
  
   審計表
  GRANT RESOURCE,CONNECT TO BANK IDENTIFIED BY BANK;
  
  CREATE TABLE BANK.ACCOUNTS
  ( 
   ACCT_NO NUMBER PRIMARY KEY,
   CUST_ID NUMBER NOT NULL ,
   BALANCE NUMBER(15,2) NULL
  );
  insert into bank.accounts values(1,1,10000);
  insert into bank.accounts values(2,2,20000);
  commit;
  
  Begin
  dbms_fga.drop_policy (
   object_schema=>'BANK',
   object_name=>'ACCOUNTS',
   policy_name=>'ACCOUNTS_access');
  dbms_fga.add_policy (
   object_schema=>'BANK',
   object_name=>'ACCOUNTS',
   policy_name=>'ACCOUNTS_ACCESS');
  end;
  /
  
  select * from bank.accounts; 
  select timestamp, db_user,os_user,object_schema,object_name,sql_text from dba_fga_audit_trail;
  
   審計列和審計條件, 在add_policy中加入
    audit_column => 'BALANCE'
    audit_condition => 'BALANCE >= 11000'
  Begin
  dbms_fga.drop_policy (
   object_schema=>'BANK',
   object_name=>'ACCOUNTS',
   policy_name=>'ACCOUNTS_ACCESS');
  
  dbms_fga.add_policy (
   object_schema=>'BANK',
   object_name=>'ACCOUNTS',
   audit_column => 'BALANCE',
   audit_condition => 'BALANCE >= 11000',
   policy_name=>'ACCOUNTS_ACCESS');
  end;
  /
  
   這個不可用,Why?
  select BALANCE from bank.accounts; 
  select timestamp, db_user,os_user,object_schema,object_name,sql_text from dba_fga_audit_trail;
  
  
  治理 FGA 策略 
  要刪除策略,您可以使用以下語句: 
  begin
  dbms_fga.drop_policy (
  object_schema => 'BANK',
  object_name => 'ACCOUNTS',
  policy_name => 'ACCOUNTS_ACCESS'
    );
  end;
  /
  
   對于更改策略而言,沒有隨取隨用的解決方案。要更改策略中的任何參數,必須刪除策略,再使用更改后的參數添加策略?!?br />   需要臨時禁用審計收集 — 例如,假如您希望將線索表移動到不同的表空間或者要刪除線索表。您可以按如下方法禁用 FGA 策略: 
  begin
  dbms_fga.enable_policy (
  object_schema => 'BANK',
  object_name => 'ACCOUNTS',
  policy_name => 'ACCOUNTS_ACCESS',
  enable => FALSE
    );
  end;
  /
   重新啟用很簡單 enable => TRUE
  
  演示何時審計操作以及何時不審計操作的各種情況 SQL 語句 審計狀態 
  
  select balance from accounts;  進行審計。用戶選擇了在添加策略時所指定的審計列 BALANCE?!?br />  select * from accounts;     進行審計。即使用戶沒有明確指定列 BALANCE,* 也隱含地選擇了它?!?br />  select cust_id from accounts where balance < 10000; 進行審計。即使用戶沒有明確指定列 BALANCE,where 子句也隱含地選擇了它?!?br />  select cust_id from accounts;  不進行審計。用戶沒有選擇列 BALANCE。 
  select count(*) from accounts; 不進行審計。用戶沒有明確或隱含地選擇列 BALANCE。 
  
  
  處理器模塊 
   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 是該表上的一個視圖。
   一個重要的列是 SQL_BIND,它指定查詢中使用的綁定變量的值 — 這是顯著增強該工具功能的一項信息?!?br />   另一個重要的列是 SCN,當發生特定的查詢時,它記錄系統更改號。
   此信息用于識別用戶在特定時間看到了什么,而不是現在的值,它使用了閃回查詢,這種查詢能夠顯示在指定的 SCN 值時的數據。
  
  
  視圖和 FGA 
   到目前為止我已經討論了在表上應用 FGA;現在讓我們來看如何在視圖上使用 FGA。假定在 ACCOUNTS 表上定義視圖 VW_ACCOUNTS 如下: 
  
  create view bank.vw_accounts as select * from bank.accounts;
  
  select * from bank.vw_accounts;
  select timestamp, db_user,os_user,object_schema,object_name,sql_text from dba_fga_audit_trail;
  
   假如您只希望審計對視圖的查詢而不是對表的查詢,可以對視圖本身建立策略。
   通過將視圖名稱而不是表的名稱傳遞給打包的過程 dbms_fga.add_policy 中的參數 object_name,可以完成這項工作。
   隨后 DBA_FGA_AUDIT_TRAIL 中的 OBJECT_NAME 列將顯示視圖的名稱,并且不會出現有關表訪問的附加記錄。 
  
  其它用途 
   除了記錄對表的選擇訪問,FGA 還可用于某些其它情況: 
   您可以對數據倉庫使用 FGA,以捕捉特定的表、視圖或物化視圖上發生的所有語句,這有助于計劃索引。您不需要到 V$SQL 視圖去獲取這些信息。即使 SQL 語句已經超出了 V$SQL 的期限,在 FGA 審計線索中將會始終提供它?!?br />   由于 FGA 捕捉綁定變量,它可以幫助您了解綁定變量值的模式,這有助于設計直方圖集合等?!?br />   處理器模塊可以向審計者或 DBA 發送警告,這有助于跟蹤惡意應用程序。 
   由于 FGA 可以作為 SELECT 語句的觸發器,您可以在需要這種功能的任何時候使用它。
  
  結論 
   FGA 使您在 Oracle 數據庫中支持隱私和職能策略。因為審計發生在數據庫內部而不是應用程序中,所以無論用戶使用的訪問方法是什么(通過諸如 SQL*Plus 等工具或者應用程序),都對操作進行審計,答應進行非常簡單的設置。 
   下一次我將討論高級 FGA 技術以及 Oracle Database 10g 中的新特性,這些特性使 FGA 的功能極為強大,適用于所有類型的審計情況。 
  
  
  數據字典視圖 DBA_AUDIT_POLICIES 中重要的列 
  
  OBJECT_SCHEMA  對其定義了 FGA 策略的表或視圖的所有者 
  OBJECT_NAME   表或視圖的名稱 
  POLICY_NAME   策略的名稱 — 例如,ACCOUNTS_ACCESS 
  POLICY_TEXT   在添加策略時指定的審計條件 — 例如,BALANCE >= 11000 
  POLICY_COLUMN  審計列 — 例如,BALANCE 
  ENABLED     假如啟用則為 YES,否則為 NO 
  PF_SCHEMA    擁有策略處理器模塊的模式(假如存在) 
  PF_PACKAGE   處理器模塊的程序包名稱(假如存在) 
  PF_FUNCTION   處理器模塊的過程名稱(假如存在) 
  
  
  數據字典視圖 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 語句使用的綁定變量(假如存在)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 塘沽区| 调兵山市| 大埔区| 嘉兴市| 广河县| 潞西市| 陆丰市| 南丰县| 玛多县| 报价| 柳江县| 东山县| 绥化市| 灵武市| 常熟市| 阳春市| 布拖县| 永靖县| 青铜峡市| 南昌市| 集贤县| 万载县| 临猗县| 四子王旗| 海宁市| 玛沁县| 新余市| 武平县| 石家庄市| 涿鹿县| 渭源县| 抚宁县| 邛崃市| 龙口市| 香港| 鲁山县| 富蕴县| 青田县| 安远县| 黑山县| 保德县|