2019-07-19

Oracle的審計是一個事后的工作残制,即數(shù)據(jù)庫出現(xiàn)安全問題后雹锣,為了定位、發(fā)現(xiàn)問題的根源心软,可以通過審計追根溯源壕吹。Oracle審計主要包含以下3個部分:

Trigger-based Auditing(觸發(fā)器)

Auditing the sys User-(SYS用戶審計)

Standard Auditing (標(biāo)準(zhǔn)審計)

觸發(fā)器審計

下面是一個觸發(fā)器審計的例子,一旦emp表的sal字段的值增大超過1.1倍删铃,就在審計表emp_sal_audit里記錄該次操作耳贬。

CREATE TRIGGER trg_a_idu_r_emp_sal

AFTER INSERT OR DELETE OR UPDATE OF sal ON emp

FOR EACH ROW

BEGIN

IF (:NEW.sal > :OLD.sal * 1.10)

THEN INSERT INTO emp_sal_audit VALUES (:OLD.empno

,:OLD.sal

,:NEW.sal

,user

,sysdate);

END IF;

END;

/

SYS用戶的審計

對SYS用戶的審計比較特殊,因為SYS用戶的權(quán)限太大猎唁,它的審計信息不能存儲在數(shù)據(jù)庫里咒劲,否則SYS可以隨意修改審計信息,因此sys用戶審計日志寫到操作系統(tǒng)日志中。

下面是一個例子:

1)首先啟動對SYS用戶的審計

SQL> alter system set audit_sys_operations = true scope = spfile;

系統(tǒng)已更改腐魂。

2)由SYS用戶向測試表插入一條數(shù)據(jù)

SQL> show user

USER 為 "SYS"

SQL> insert into test.t (object_id) values(1);

已創(chuàng)建 1 行帐偎。

SQL> commit;

提交完成。

3)在操作系統(tǒng)日志中可以看到如下信息:

Audit trail: LENGTH : '176' ACTION :[7] 'CONNECT' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[12] 'CORP\xianzhu' CLIENT TERMINAL:[14] 'L-SHC-00436132' STATUS:[1] '0' DBID:[10] '1327298419' .

標(biāo)準(zhǔn)審計

標(biāo)準(zhǔn)審計根據(jù)對象不同蛔屹,可以分為以下4個部分:

審計會話

審計對象

審計操作

審計授權(quán)

下面以審計對象為例:

1)首先削樊,開啟標(biāo)準(zhǔn)審計

SQL> ALTER SYSTEM SET AUDIT_TRAIL = DB,EXTENDED SCOPE = SPFILE;

系統(tǒng)已更改。

SQL> audit select, insert, update, delete on test.t;

審計已成功兔毒。

2)在表上做DML操作

SQL> delete from test.t;

已刪除72768行漫贞。

SQL> insert into t (object_id) values(1);

已創(chuàng)建 1 行。

SQL> commit;

提交完成育叁。

3)在審計表里查看相應(yīng)審計信息

SQL> col userid for a10

SQL> col obj$name for a10

SQL> col sqltext for a40

SQL> select userid,obj$name,sqltext from sys.aud$ where userid='TEST' and obj$name='T';

USERID? ? OBJ$NAME? SQLTEXT

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

TEST? ? ? T? ? ? ? ? delete from test.t

TEST? ? ? T? ? ? ? ? insert into t (object_id) values(1)

步驟

第1步:查看審計功能是否開啟迅脐?

SQL> show parameter audit;

NAME?????????????????????????????????TYPE????????VALUE

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

audit_file_dest???????????????????string??????/u01/app/oracle/admin/ORCL/adump

audit_sys_operations??????boolean?????FALSE

audit_syslog_level????????????string

audit_trail????????????????????????? ??string??????NONE

audit_trail 的value值為NONE表示不開啟;

audit_trail 的value值為FALSE表示不開啟擂红;

audit_trail 的value值為DB表示開啟仪际;

audit_trail 的value值為TURE表示開啟;

audit_trail 的value值為OS表示審計記錄寫入一個操作系統(tǒng)文件(不是特別理解)昵骤;

第2步:開啟審計功能

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

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

重啟實例

第3步:關(guān)閉審計功能

SQL> conn /as sysdba

SQL> show parameter audit

SQL> alter system set audit_trail = none?scope=spfile;

重啟實例

Oracle使用大量不同的審計方法來監(jiān)控使用何種權(quán)限树碱,以及訪問哪些對象。審計不會防止使用這些權(quán)限变秦,但可以提供有用的信息成榜,用于揭示權(quán)限的濫用和誤用。


審計類型說明

語句審計? ? ?按照語句類型審計SQL語句蹦玫,而不論訪問何種特定的模式對象赎婚。也可以在數(shù)據(jù)庫中指定一個或多個用戶,針對特定的語句審計這些用戶

權(quán)限審計? ? ?審計系統(tǒng)權(quán)限樱溉,例如CREATE TABLE或ALTER INDEX挣输。和語句審計一樣,權(quán)限審計可以指定一個或多個特定的用戶作為審計的目標(biāo)

模式對象審計? ? ?審計特定模式對象上運行的特定語句(例如福贞,DEPARTMENTS表上的UPDATE語句)撩嚼。模式對象審計總是應(yīng)用于數(shù)據(jù)庫中的所有用戶

細粒度的審計? ? 根據(jù)訪問對象的內(nèi)容來審計表訪問和權(quán)限。使用程序包DBMS_FGA來建立特定表上的策略

audit_sys_operations:

默認為false挖帘,當(dāng)設(shè)置為true時完丽,所有sys用戶(包括以sysdba,sysoper身份登錄的用戶)的操作都會被記錄,audit trail不會寫在aud$表中拇舀,這個很好理解逻族,如果數(shù)據(jù)庫還未啟動aud$不可用,那么像conn /as sysdba這樣的連接信息骄崩,只能記錄在其它地方聘鳞。如果是windows平臺薄辅,audti trail會記錄在windows的事件管理中,如果是linux/unix平臺則會記錄在audit_file_dest參數(shù)指定的文件中搁痛。

audit_trail:

None:是默認值长搀,不做審計;

DB:將audit trail 記錄在數(shù)據(jù)庫的審計相關(guān)表中鸡典,如aud$源请,審計的結(jié)果只有連接信息;

DB,Extended:這樣審計結(jié)果里面除了連接信息還包含了當(dāng)時執(zhí)行的具體語句彻况;

OS:將audit trail 記錄在操作系統(tǒng)文件中谁尸,文件名由audit_file_dest參數(shù)指定;

XML:10g里新增的纽甘。

10g Values:

none

Disables database auditing.

os

Enables database auditing and directs all audit records to the operating system's audit trail.

db

Enables database auditing and directs all audit records to the database audit trail (theSYS.AUD$table).

db,extended

Enables database auditing and directs all audit records to the database audit trail (theSYS.AUD$table). In addition, populates theSQLBINDandSQLTEXTCLOB columns of theSYS.AUD$table.

xml

Enables database auditing and writes all audit records to XML format OS files.

xml,extended

Enables database auditing and prints all columns of the audit trail, including SqlText and SqlBind values.

注: 參數(shù)AUDIT_TRAIL不是動態(tài)的良蛮,為了使AUDIT_TRAIL參數(shù)中的改動生效,必須關(guān)閉數(shù)據(jù)庫并重新啟動悍赢。在對SYS.AUD$表進行審計時决瞳, 應(yīng)該注意監(jiān)控該表的大小,以避免影響SYS表空間中其他對象的空間需求左权。推薦周期性歸檔SYS.AUD$中的行皮胡,并且截取該表。Oracle提供了角色 DELETE_CATALOG_ROLE赏迟,和批處理作業(yè)中的特殊賬戶一起使用屡贺,用于歸檔和截取審計表。

audit_file_dest:Audit_trail=OS時 文件位置

審計的觸發(fā)條件

?根據(jù)語句執(zhí)行是否成功進行審計

不管是語句锌杀,權(quán)限和對象都可以根據(jù)語句執(zhí)行是否成功在審計語句后面加判斷詞甩栈,語法如下:

在審計語句后面加WHENEVER SUCCESSFUL or WHENEVER NOT SUCCESSFUL

如:

AUDIT CREATE TABLE WHENEVER NOT SUCCESSFUL;

AUDIT TRUNCATE TABLE WHENEVER NOT SUCCESSFUL;

根據(jù)指定用戶進行審計

在做語句和權(quán)限進行審計的時候可以在審計語句后面加by再加指定用戶名,多個用戶用逗號隔開糕再,例如下面語句為開啟對scott,blake兩個用戶的所有select table和update table權(quán)限

AUDIT SELECT TABLE, UPDATE TABLE? BY scott, blake;

AUDIT SELECT TABLE, UPDATE TABLE? BY scott, blake;

審計相關(guān)的視圖

可以通過dba_views查看所有相關(guān)的視圖

select * from dba_views where view_name like '%AUDIT%'

最常用的視圖如下:

---審計系統(tǒng)視圖

select? *? from? STMT_AUDIT_OPTION_MAP? ? -- 審計選項類型代碼

select? *? from? AUDIT_ACTIONS? ? -- action代碼

select? *? from? ALL_DEF_AUDIT_OPTS? ? -- 對象創(chuàng)建時默認的對象審計選項

---三種審計已啟用審計選項

select? *? from? DBA_STMT_AUDIT_OPTS? ? -- 當(dāng)前數(shù)據(jù)庫系統(tǒng)審計選項

select? *? from? DBA_PRIV_AUDIT_OPTS? ? -- 當(dāng)前權(quán)限審計選項

select? *? from? DBA_OBJ_AUDIT_OPTS? ? ---查看當(dāng)前審計了哪些對象

---審計結(jié)果,也可以直接查詢sys.aud$表

select? *? from? DBA_AUDIT_TRAIL? ---查看審計記錄,調(diào)用的sys.aud$表

select? *? from? DBA_AUDIT_OBJECT? ---查看對象審計記錄

select? *? from? DBA_AUDIT_SESSION? -- session審計記錄

select? *? from? DBA_AUDIT_STATEMENT? -- 查看語句審計記錄

select? *? from? DBA_AUDIT_EXISTS? ? -- 使用BY AUDIT NOT EXISTS選項的審計

select? *? from? DBA_AUDIT_POLICIES? ? -- 審計POLICIES

select? *? from? DBA_COMMON_AUDIT_TRAIL? -- 標(biāo)準(zhǔn)審計+精細審計記錄

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末量没,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子突想,更是在濱河造成了極大的恐慌殴蹄,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蒿柳,死亡現(xiàn)場離奇詭異饶套,居然都是意外死亡漩蟆,警方通過查閱死者的電腦和手機垒探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怠李,“玉大人圾叼,你說我怎么就攤上這事蛤克。” “怎么了夷蚊?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵构挤,是天一觀的道長。 經(jīng)常有香客問我惕鼓,道長筋现,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任箱歧,我火速辦了婚禮矾飞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呀邢。我一直安慰自己洒沦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布价淌。 她就那樣靜靜地躺著申眼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝉衣。 梳的紋絲不亂的頭發(fā)上括尸,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音买乃,去河邊找鬼姻氨。 笑死,一個胖子當(dāng)著我的面吹牛剪验,可吹牛的內(nèi)容都是我干的肴焊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼功戚,長吁一口氣:“原來是場噩夢啊……” “哼娶眷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啸臀,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤届宠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后乘粒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豌注,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年灯萍,在試婚紗的時候發(fā)現(xiàn)自己被綠了轧铁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡旦棉,死狀恐怖齿风,靈堂內(nèi)的尸體忽然破棺而出药薯,到底是詐尸還是另有隱情,我是刑警寧澤救斑,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布童本,位于F島的核電站,受9級特大地震影響脸候,放射性物質(zhì)發(fā)生泄漏穷娱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一运沦、第九天 我趴在偏房一處隱蔽的房頂上張望鄙煤。 院中可真熱鬧,春花似錦茶袒、人聲如沸梯刚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽亡资。三九已至,卻和暖如春向叉,著一層夾襖步出監(jiān)牢的瞬間锥腻,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工母谎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瘦黑,地道東北人。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓奇唤,卻偏偏與公主長得像幸斥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子咬扇,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內(nèi)容