日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

可以审计oracle的工具,Oracle 审计功能 Audit使用教程(2)

發布時間:2024/3/24 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可以审计oracle的工具,Oracle 审计功能 Audit使用教程(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

已連接。

SQL> show parameter audit

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

audit_file_dest string D:\ORACLE\ADMIN\DBA\ADUMP

audit_sys_operations boolean FALSE

audit_trail string NONE

SQL> alter system set audit_sys_operations=TRUE scope=spfile; --審計管理用戶(以sysdba/sysoper角色登陸)

SQL> alter system set audit_trail=db,extended scope=spfile;

SQL> startup force;

SQL> show parameter audit

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

audit_file_dest string D:\ORACLE\ADMIN\DBA\ADUMP

audit_sys_operations boolean TRUE

audit_trail string DB, EXTENDED

9.2 開始審計

注意:無法對 SYS 用戶操作執行 audit 或 noaudit 命令

SQL> conn system/admin

SQL> audit all on test;

SQL> commit;

SQL> delete from test;

SQL> commit;

SQL> select OS_USERNAME,USERNAME,USERHOST,TERMINAL,TIMESTAMP,OWNER,

obj_name,ACTION_NAME,sessionid,os_process,sql_text from dba_audit_trail;

OS_USER USERNAME USERHOST TERMINAL TIMESTAMP OWNER

------- -------- --------------- --------------- -------------- ----------------

user SYSTEM WORKGROUP\HFCC- HFCC-KF-3068 22-10月-09 SYSTEM

SQL> audit select table by test by access;

如果在命令后面添加by user則只對user的操作進行審計,如果省去by用戶,則對系統中所有的用戶進行審計(不包含sys用戶).

例:

AUDIT DELETE ANY TABLE; --審計刪除表的操作

AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL; --只審計刪除失敗的情況

AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL; --只審計刪除成功的情況

AUDIT DELETE,UPDATE,INSERT ON user.table by SYSTEM; --審計SYSTEM用戶對表user.table的delete,update,insert操作

9.3 撤銷審計

SQL> noaudit all on t_test;

10.FGA策略(細粒度審計)

DBMS_FGA是SYS用戶的一個包

10.1 增加 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;

/

select BALANCE from bank.accounts;

select timestamp, db_user,os_user,object_schema,object_name,sql_text from dba_fga_audit_trail;

10.2 管理 FGA 策略

--要刪除策略,您可以使用以下語句:

begin

dbms_fga.drop_policy (

object_schema => 'BANK',

object_name => 'ACCOUNTS',

policy_name => 'ACCOUNTS_ACCESS'

);

end;

/

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

-- 需要臨時禁用審計收集 — 例如,如果您希望將線索表移動到不同的表空間或者要刪除線索表。您可以按如下方法禁用 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 bank.accounts; 進行審計。用戶選擇了在添加策略時所指定的審計列 BALANCE。

select * from bank.accounts; 進行審計。即使用戶沒有明確指定列 BALANCE,* 也隱含地選擇了它。

select cust_id from bank.accounts where balance < 10000; 進行審計。即使用戶沒有明確指定列 BALANCE,where 子句也隱含地選擇了它。

select cust_id from bank.accounts; 不進行審計。用戶沒有選擇列 BALANCE。

select count(*) from bank.accounts; 不進行審計。用戶沒有明確或隱含地選擇列 BALANCE。

10.3 處理器模塊

-- FGA 的功能不只是記錄審計線索中的事件;FGA 還可以任意執行過程。

-- 過程可以執行一項操作,比如當用戶從表中選擇特定行時向審計者發送電子郵件警告,或者可以寫到不同的審計線索中。

-- 這種存儲代碼段可以是獨立的過程或者是程序包中的過程,稱為策略的處理器模塊。

-- 實際上由于安全性原因,它不必與基表本身處于同一模式中,您可能希望特意將它放置在不同的模式中。

-- 由于只要 SELECT 出現時過程就會執行,非常類似于 DML 語句啟動的觸發器,您還可以將其看作 SELECT 語句觸發器。

-- 以下參數指定將一個處理器模塊指定給策略:

-- handler_schema 擁有數據過程的模式

-- handler_module 過程名稱

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

10.4 FGA 數據字典視圖

-- FGA 策略的定義位于數據字典視圖 DBA_AUDIT_POLICIES 中。

-- 審計線索收集在 SYS 擁有的表 FGA_LOG$ 中。對于 SYS 擁有的任何原始表,此表上的某些視圖以對用戶友好的方式顯示信息。DBA_FGA_AUDIT_TRAIL 是該表上的一個視圖。

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

-- 另一個重要的列是 SCN,當發生特定的查詢時,它記錄系統更改號。

-- 此信息用于識別用戶在特定時間看到了什么,而不是現在的值,它使用了閃回查詢,這種查詢能夠顯示在指定的 SCN 值時的數據。

10.5 視圖和 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;

10.5.1 如果您只希望審計對視圖的查詢而不是對表的查詢,可以對視圖本身建立策略。

-- 通過將視圖名稱而不是表的名稱傳遞給打包的過程 dbms_fga.add_policy 中的參數 object_name,可以完成這項工作。

-- 隨后 DBA_FGA_AUDIT_TRAIL 中的 OBJECT_NAME 列將顯示視圖的名稱,并且不會出現有關表訪問的附加記錄。

10.6 其它用途

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

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

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

-- 處理器模塊可以向審計者或 DBA 發送警告,這有助于跟蹤惡意應用程序。

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

結論

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

數據字典視圖 DBA_AUDIT_POLICIES 中重要的列

-----------------------------------------------------------------------

OBJECT_SCHEMA 對其定義了 FGA 策略的表或視圖的所有者

OBJECT_NAME 表或視圖的名稱

POLICY_NAME 策略的名稱 — 例如,ACCOUNTS_ACCESS

POLICY_TEXT 在添加策略時指定的審計條件 — 例如,BALANCE >;= 11000

POLICY_COLUMN 審計列 — 例如,BALANCE

ENABLED 如果啟用則為 YES,否則為 NO

PF_SCHEMA 擁有策略處理器模塊的模式(如果存在)

總結

以上是生活随笔為你收集整理的可以审计oracle的工具,Oracle 审计功能 Audit使用教程(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。