2019-07-19

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

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

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

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

觸發(fā)器審計(jì)

下面是一個(gè)觸發(fā)器審計(jì)的例子,一旦emp表的sal字段的值增大超過1.1倍,就在審計(jì)表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用戶的審計(jì)

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

下面是一個(gè)例子:

1)首先啟動(dòng)對SYS用戶的審計(jì)

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)審計(jì)

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

審計(jì)會(huì)話

審計(jì)對象

審計(jì)操作

審計(jì)授權(quán)

下面以審計(jì)對象為例:

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

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

系統(tǒng)已更改。

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

審計(jì)已成功。

2)在表上做DML操作

SQL> delete from test.t;

已刪除72768行。

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

已創(chuàng)建 1 行。

SQL> commit;

提交完成。

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

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步:查看審計(jì)功能是否開啟?

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表示審計(jì)記錄寫入一個(gè)操作系統(tǒng)文件(不是特別理解);

第2步:開啟審計(jì)功能

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

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

重啟實(shí)例

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

SQL> conn /as sysdba

SQL> show parameter audit

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

重啟實(shí)例

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


審計(jì)類型說明

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

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

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

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

audit_sys_operations:

默認(rèn)為false,當(dāng)設(shè)置為true時(shí),所有sys用戶(包括以sysdba,sysoper身份登錄的用戶)的操作都會(huì)被記錄,audit trail不會(huì)寫在aud$表中,這個(gè)很好理解,如果數(shù)據(jù)庫還未啟動(dòng)aud$不可用,那么像conn /as sysdba這樣的連接信息,只能記錄在其它地方。如果是windows平臺(tái),audti trail會(huì)記錄在windows的事件管理中,如果是linux/unix平臺(tái)則會(huì)記錄在audit_file_dest參數(shù)指定的文件中。

audit_trail:

None:是默認(rèn)值,不做審計(jì);

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

DB,Extended:這樣審計(jì)結(jié)果里面除了連接信息還包含了當(dāng)時(shí)執(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不是動(dòng)態(tài)的,為了使AUDIT_TRAIL參數(shù)中的改動(dòng)生效,必須關(guān)閉數(shù)據(jù)庫并重新啟動(dòng)。在對SYS.AUD$表進(jìn)行審計(jì)時(shí), 應(yīng)該注意監(jiān)控該表的大小,以避免影響SYS表空間中其他對象的空間需求。推薦周期性歸檔SYS.AUD$中的行,并且截取該表。Oracle提供了角色 DELETE_CATALOG_ROLE,和批處理作業(yè)中的特殊賬戶一起使用,用于歸檔和截取審計(jì)表。

audit_file_dest:Audit_trail=OS時(shí) 文件位置

審計(jì)的觸發(fā)條件

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

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

在審計(jì)語句后面加WHENEVER SUCCESSFUL or WHENEVER NOT SUCCESSFUL

如:

AUDIT CREATE TABLE WHENEVER NOT SUCCESSFUL;

AUDIT TRUNCATE TABLE WHENEVER NOT SUCCESSFUL;

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

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

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

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

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

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

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

最常用的視圖如下:

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

select? *? from? STMT_AUDIT_OPTION_MAP? ? -- 審計(jì)選項(xiàng)類型代碼

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

select? *? from? ALL_DEF_AUDIT_OPTS? ? -- 對象創(chuàng)建時(shí)默認(rèn)的對象審計(jì)選項(xiàng)

---三種審計(jì)已啟用審計(jì)選項(xiàng)

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

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

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

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

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

select? *? from? DBA_AUDIT_OBJECT? ---查看對象審計(jì)記錄

select? *? from? DBA_AUDIT_SESSION? -- session審計(jì)記錄

select? *? from? DBA_AUDIT_STATEMENT? -- 查看語句審計(jì)記錄

select? *? from? DBA_AUDIT_EXISTS? ? -- 使用BY AUDIT NOT EXISTS選項(xiàng)的審計(jì)

select? *? from? DBA_AUDIT_POLICIES? ? -- 審計(jì)POLICIES

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,106評論 6 542
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,441評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,211評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,736評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,475評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,834評論 1 328
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,829評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,009評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,559評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,306評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,516評論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,038評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,728評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,132評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,443評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,249評論 3 399
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,484評論 2 379

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