5、Oracle数据库审计
1、審計(Audit):
對用戶所執(zhí)行的數(shù)據(jù)庫活動的跟蹤記錄,便于事后監(jiān)督、檢查。
審計信息存放位置:
審計記錄信息,存儲在system表空間中的SYS.AUD$數(shù)據(jù)字典表;
或操作系統(tǒng)默認位置$ORACLE_BASE/admin/$ORACLE_SID/adump/;
Oracle 11G以后,數(shù)據(jù)庫默認是開啟審計功能的,因此有時候我們忘記了關(guān)閉該功能導致SYSTEM表空間暴滿,但由于關(guān)閉審計功能需要重啟數(shù)據(jù)庫,此類操作生產(chǎn)環(huán)境下是不允許的,因此我們需要找出哪類審計產(chǎn)生的較多,然后單獨的進行關(guān)閉;我們可以通過如下方法查找:如果你發(fā)現(xiàn)AUD$這個表比較大了,檢查下是哪種審計占的空間:
SQL> select action_name,count(*) from dba_audit_trail group by action_name;
--一般是LOGON和LOGOFF類型的審計最多。取消此類審計:
SQL> noaudit session whenever successful;
--一般來說,如果空間不是占的特別多,此類審計還是保留為好。可以取消對一些登錄特別頻繁的用戶的審計,比如DBSNMP用戶:
SQL> noaudit session by U007;
--關(guān)閉審計后,對表sys.aud$進行清理
select * from sys.aud$;
truncate table selsys.aud$;
審計參數(shù)AUDIT_TRAIL
參數(shù)值取值列表:
(1).DB/TRUE ---- 啟用審計,并且把審計結(jié)果存放在數(shù)據(jù)庫的SYS.AUD$表中
(2).OS ---- 啟用審計,并把審計結(jié)果存放在操作系統(tǒng)的審計信息中
(3).DB_EXTENDED ---- 啟用審計,把審計結(jié)果存放在數(shù)據(jù)庫SYS.AUD$表中,并在CLOB列的SQLBIND和SQLTEXT字段記錄額外的信息;
(4).XML ---- 啟用審計,以XML格式寫所有審計記錄;
(5).EXTENDED ---- 啟用審計,在審計跟蹤中記錄所有列,包括SQLTEXT和SQLBIND值
(6).NONE/FALSE ---- 禁用審計
以下步驟設(shè)置Oracle的審計功能:
(1).修改審計參數(shù)AUDIT_TRAIL:
Alter system set AUDIT_TRAIL=DB scope=spfile;
(2).初始化數(shù)據(jù)庫審計功能:
以connect/as sysdba執(zhí)行腳本cataudit.sql,腳本位置D:appAdministratorproduct11.2.0dbhome_1RDBMSADMIN;
(3).重啟數(shù)據(jù)庫:
由于參數(shù)AUDIT_TRAIL不是動態(tài)的,需要關(guān)閉數(shù)據(jù)庫重啟生效。
2、審計分類和用法:
語句審計:
--語法
AUDIT sql_statement_clause [BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
參數(shù)說明:
sql_statement_clause ---- SQL語句或選項;
BY ACCESS ---- 存取方式,每條語句被執(zhí)行一次都要審計,不管語句是否相同;
BY SESSION ---- 會話方式,相同的語句只被審計一次,這也是系統(tǒng)默認方式;
WHENEVER SUCCESSFUL ---- 表示只對成功語句進行審計;
WHENEVER NOT SUCCESSFUL ---- 表示只對不成功語句進行審計。
--舉例:
--(1).審計用戶對對象的操作:
Audit table by scott;
--(2).審計用戶執(zhí)行的SQL語句:
Audit create table by scott;
Audit insert table by u0007; ---- 審計insert into表或視圖;
Audit delete table by u0007; ---- 審計刪除表或視圖中的行;
--(3).指定審計方式:
Audit delete table by u0007 by access; ---- 存取方式,每條語句執(zhí)行一次都要審計;
--(4).審計成功與不成功的會話:
Audit session by u007 whenever not successful; ---- 只對不成功語句進行審計;
--(5).了解哪些用戶進行了審計,可查詢數(shù)據(jù)字典視圖DBA_STMT_AUDIT_OPTS
select * from dba_stmt_audit_opts where user_name='U007';
--(6).停止語句審計:
Noaudit alter table by U007;
權(quán)限審計:
--語法:
AUDIT privilege [BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
對象審計:
--語法:
AUDIT schema_object_clause ON schema
[BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
Audit select,insert,delete on scott.dept by access;
3、細粒度審計(FGA)
是由DBMS_FGA的PL/SQL程序?qū)崿F(xiàn)的
生命不息,折騰不止;不計后果,不問前程!
總結(jié)
以上是生活随笔為你收集整理的5、Oracle数据库审计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MQTT-SN协议乱翻之实现要点
- 下一篇: 【百度地图API】让用户选择起点和终点的