新聞中心
談一談Oracle11gR2的審計(jì)管理
目前成都創(chuàng)新互聯(lián)公司已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、陸良網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。作者:趙全文 網(wǎng)名:guestart
在Oracle數(shù)據(jù)庫(kù)的安全特性當(dāng)中,審計(jì)被作為特別重要的一個(gè)方面。數(shù)據(jù)庫(kù)的審計(jì)功能主要是用來(lái)審計(jì)各種類型的DDL和DML語(yǔ)句,而審計(jì)管理作為一項(xiàng)新特性被引進(jìn)到Oracle的11g R1版本當(dāng)中,此時(shí)它的審計(jì)功能并不強(qiáng)大而且還有許多bug,然而到了11gR2時(shí),已經(jīng)修復(fù)了很多bug及它的審計(jì)功能進(jìn)一步增強(qiáng)。
今天我和大家分享一下,在Oracle 11gR2的版本中,有關(guān)審計(jì)的一些特性。出于美國(guó)安全法,Oracle在11g 的版本對(duì)審計(jì)管理的策略有所改變,初始化參數(shù)AUDIT_TRAIL的默認(rèn)值為'DB',也就是說(shuō)把所有的審計(jì)數(shù)據(jù)都存放到AUD$表,而這個(gè)表又默認(rèn)是在SYSTEM的表空間里。
當(dāng)我們?cè)谏a(chǎn)環(huán)境中部署一套Oracle數(shù)據(jù)庫(kù)以后,默認(rèn)審計(jì)功能是開(kāi)啟的,業(yè)務(wù)剛上線那段時(shí)間,數(shù)據(jù)量不大時(shí),SYSTEM表空間的容量很寬裕,并沒(méi)有什么壓力。當(dāng)業(yè)務(wù)運(yùn)行了一段時(shí)間,突然有一天,前端應(yīng)用就會(huì)反映說(shuō),數(shù)據(jù)庫(kù)特別慢。這時(shí)我們DBA對(duì)數(shù)據(jù)庫(kù)進(jìn)行各種檢查,就會(huì)發(fā)現(xiàn)SYSTEM表空間的已用空間百分比為99.97%,這一點(diǎn)毫不夸張,我就親身經(jīng)歷過(guò)。我們說(shuō)這是事后救火,其實(shí)我們完全可以在上線前,把AUD$表遷移到其它的專門存放審計(jì)數(shù)據(jù)的表空間,在業(yè)務(wù)上線并運(yùn)行一段時(shí)間之后,評(píng)估一下審計(jì)數(shù)據(jù)的數(shù)據(jù)量,然后設(shè)置審計(jì)數(shù)據(jù)的維護(hù)策略。
下面,我們采取三種方法對(duì)Oracle數(shù)據(jù)庫(kù)的審計(jì)進(jìn)行設(shè)置。嚴(yán)格的來(lái)說(shuō),是兩種方法,第一種更為粗暴,直接關(guān)閉審計(jì)功能,就是將初始化參數(shù)AUDIT_TRAIL的值設(shè)為'NONE',然后重啟數(shù)據(jù)庫(kù)使之生效;第二種和第三種是針對(duì)開(kāi)啟數(shù)據(jù)庫(kù)審計(jì)功能的維護(hù)管理。在生產(chǎn)環(huán)境中,不建議使用第一種,因?yàn)殛P(guān)閉審計(jì)以后,數(shù)據(jù)庫(kù)出現(xiàn)安全隱患以后不利于排查分析。為了大家有所了解,我也一并演示操作。
首先,查看數(shù)據(jù)庫(kù)的版本,我所演示的環(huán)境為Oracle 11.2.0.4.0。
第一種方法,關(guān)閉審計(jì)功能。
第二種方法,把SYSTEM表空間里的AUD$表遷移到其它的表空間,以減輕SYSTEM表空間的壓力。
(1)查詢AUD$表所在的表空間
(2)查詢AUD$表的數(shù)據(jù)量有多少,發(fā)現(xiàn)竟然有80多G
(3)創(chuàng)建專門存放AUD$表的單獨(dú)的表空間AUDIT_TBS
(4)遷移AUD$表到新的表空間AUDIT_TBS
使用Oracle自帶的包DBMS_AUDIT_MGMT中的存儲(chǔ)過(guò)程SET_AUDIT_TRAIL_LOCATION來(lái)實(shí)現(xiàn),該存儲(chǔ)過(guò)程接受2個(gè)參數(shù),順序依次是AUDIT_TRAIL_TYPE和AUDIT_TRAIL_LOCATION_VALUE,參見(jiàn)官方文檔的如下截圖,
其中參數(shù)AUDIT_TRAIL_TYPE有以下幾種取值,見(jiàn)官方文檔的如下截圖,
各種取值的中文解釋如下:
AUDIT_TRAIL_ALL 所有的審計(jì)類型,包括標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)審計(jì)、細(xì)粒度審計(jì)、操作系統(tǒng)審計(jì)和XML文件審計(jì)
AUDIT_TRAIL_AUD_STD 標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)審計(jì)
AUDIT_TRAIL_DB_STD 標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)審計(jì)和細(xì)粒度審計(jì)
AUDIT_TRAIL_FGA_STD 細(xì)粒度審計(jì)
AUDIT_TRAIL_FILES 操作系統(tǒng)和XML文件審計(jì)
AUDIT_TRAIL_OS 操作系統(tǒng)審計(jì),審計(jì)數(shù)據(jù)存放在操作系統(tǒng)的文件里
AUDIT_TRAIL_XML XML文件審計(jì),審計(jì)數(shù)據(jù)存放在XML文件里
在這里,我們使用標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)審計(jì),所以使用參數(shù)AUDIT_TRAIL_AUD_STD。
參數(shù)AUDIT_TRAIL_LOCATION_TYPE的取值是要遷移到的表空間的名字AUDIT_TBS,要執(zhí)行的存儲(chǔ)過(guò)程如下圖所示,
從中發(fā)現(xiàn),執(zhí)行了將近一個(gè)小時(shí),才遷移完成。
此時(shí),AUDIT_TBS表空間已有數(shù)據(jù),SYSTEM表空間已經(jīng)釋放,壓力減輕。見(jiàn)下圖所示,
第三種方法,上面雖然減輕了SYSTEM表空間的壓力,但是如果不對(duì)審計(jì)數(shù)據(jù)進(jìn)行定時(shí)清除和歸檔這種維護(hù)管理的話,新的表空間的容量也會(huì)有不足的時(shí)候,因此也需要不定期的擴(kuò)充容量才可以。顯然,這也不是個(gè)完美的解決辦法。下面給審計(jì)設(shè)置維護(hù)策略, 6 / 12
(1)查詢AUD$表的數(shù)據(jù)開(kāi)始生成的時(shí)間戳,現(xiàn)在是2017年2月8日,說(shuō)明審計(jì)數(shù)據(jù)已保留了將近8個(gè)月。
(2)用Oracle自帶的包DBMS_AUDIT_MGMT中的存儲(chǔ)過(guò)程SET_AUDIT_TRAIL_PROPERTY設(shè)置審計(jì)的維護(hù)屬性,即每清除多少條數(shù)據(jù)提交一次。該存儲(chǔ)過(guò)程接受3個(gè)參數(shù),順序依次是AUDIT_TRAIL_TYPE、AUDIT_TRAIL_PROPERTY和AUDIT_TRAIL_PROPERTY_VALUE。
其中參數(shù)AUDIT_TRAIL_TYPE的取值在第二種方法已說(shuō)明,參數(shù)AUDIT_TRAIL_PROPERTY和AUDIT_TRAIL_PROPERTY_VALUE的取值見(jiàn)下面的官方文檔說(shuō)明,
這里,我們使用參數(shù)AUDIT_TRAIL_TYPE的取值為AUDIT_TRAIL_AUD_STD,參數(shù)AUDIT_TRAIL_PROPERTY的取值為DB_DELETE_BATCH_SIZE,參數(shù)AUDIT_TRAIL_PROPERTY_VALUE的取值為10000。那么執(zhí)行下面的存儲(chǔ)過(guò)程,
(3)用Oracle自帶的包DBMS_AUDIT_MGMT中的存儲(chǔ)過(guò)程INIT_CLEANUP設(shè)置審計(jì)數(shù)據(jù)保留的天數(shù),該存儲(chǔ)過(guò)程接受2個(gè)參數(shù),順序依次是AUDIT_TRAIL_TYPE和DEFAULT_CLEANUP_INTERVAL。見(jiàn)官方文檔的說(shuō)明,其中參數(shù)DEFAULT_CLEANUP_INTERVAL的取值為1至999,單位為小時(shí)。
用Oracle自帶的包DBMS_AUDIT_MGMT中的存儲(chǔ)過(guò)程SET_LAST_ARCHIVE_TIMESTAMP設(shè)置上次歸檔審計(jì)記錄的時(shí)間戳,該存儲(chǔ)過(guò)程接受2個(gè)參數(shù),順序依次是AUDIT_TRAIL_TYPE、LAST_ARCHIVE_TIME和RAC_INSTANCE_NUMBER。見(jiàn)官文檔的說(shuō)明,參數(shù)RAC_INSTANCE_NUMBER取默認(rèn)值NULL,可以不寫。
這里,我們?cè)O(shè)置審計(jì)數(shù)據(jù)保留的天數(shù)為30天,即720小時(shí),上次歸檔審計(jì)記錄的時(shí)間戳為30天之前。那么執(zhí)行下面的存儲(chǔ)過(guò)程,
(4)用Oracle自帶的包DBMS_AUDIT_MGMT中的存儲(chǔ)過(guò)程CREATE_PURGE_JOB設(shè)置每隔多長(zhǎng)時(shí)間清除審計(jì)數(shù)據(jù)的JOB,該存儲(chǔ)過(guò)程接受4個(gè)參數(shù),順序依次是AUDIT_TRAIL_TYPE、AUDIT_TRAIL_PURGE_INTERVAL、AUDIT_TRAIL_PURGE_NAME和USE_LAST_ARCH_TIMESTAMP。見(jiàn)官方文檔的說(shuō)明,
這里,我們每隔7天,即168小時(shí)清除一次審計(jì)數(shù)據(jù),那么設(shè)參數(shù)AUDIT_TRAIL_PURGE_INTERVAL的值為168,設(shè)參數(shù)USE_LAST_ARCH_TIMESTAMP的值為TRUE(也是默認(rèn)值)。那么執(zhí)行下面的存儲(chǔ)過(guò)程,
同時(shí),在EMCC 12C的監(jiān)控界面下已經(jīng)看到一個(gè)名叫“PURGE_AUD_STD”的JOB在運(yùn)行,還有相應(yīng)的SQL也在運(yùn)行。見(jiàn)下圖,
由于上次以來(lái)沒(méi)有進(jìn)行審計(jì)清理,現(xiàn)在保留了近8個(gè)月的數(shù)據(jù),所以現(xiàn)在一次清理,只保留30天的數(shù)據(jù)會(huì)稍顯費(fèi)時(shí)。不過(guò)執(zhí)行完這次JOB,以后再清理歷史數(shù)據(jù)就不費(fèi)吹灰之力了。
上面就把三種維護(hù)審計(jì)的方法都介紹完了,我們演示的只是將審計(jì)數(shù)據(jù)保存在DB里,其實(shí)還可以保存在OS和XML里,不過(guò)我不建議這樣做,按照官方文檔來(lái)說(shuō),保存在DB里由Oracle進(jìn)行維護(hù)會(huì)減少和OS通信的IO操作。
總結(jié):
1.直接關(guān)閉審計(jì),修改初始化參數(shù)AUDIT_TRAIL的值為NONE,并重啟數(shù)據(jù)庫(kù)生效;
2.將SYSTEM表空間中的AUD$表遷移到其它的表空間,以減輕SYSTEM表空間的壓力;
3.在第2種方法的基礎(chǔ)上,設(shè)置審計(jì)數(shù)據(jù)保留天數(shù)并定時(shí)清除過(guò)期的審計(jì)數(shù)據(jù)。
另外,本文在編寫過(guò)程中,參考了以下網(wǎng)址,特別說(shuō)明
官方文檔 https://docs.oracle.com/cd/E18283_01/appdev.112/e16760/d_audit_mgmt.htm#BABDAHBG
oraclewiki http://www.oracle-wiki.net/startdocshowtomanageaudit
Laurent Leturgez https://laurent-leturgez.com/2011/06/09/managing-database-audit-trail-in-oracle-11gr2/
Suresh Karthikeyan https://www.pythian.com/blog/oracle-database-script-to-purge-aud-table-using-dbms_audit_mgmt-package/
如果您覺(jué)得此篇文章對(duì)您有幫助,歡迎關(guān)注微信公眾號(hào):guestart的DBA學(xué)習(xí)筆記,您的支持是對(duì)我大的鼓勵(lì)!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前名稱:談一談Oracle11gR2的審計(jì)管理-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)路徑:http://ef60e0e.cn/article/csdohg.html