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