《DBA在傳統(tǒng)企業(yè)數(shù)據(jù)庫(kù)安全建設(shè)上能做些什么?》要點(diǎn):
本文介紹了DBA在傳統(tǒng)企業(yè)數(shù)據(jù)庫(kù)安全建設(shè)上能做些什么?,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
本文根據(jù)代海鵬老師在〖4月8日DBAplus社群上海數(shù)據(jù)庫(kù)技術(shù)沙龍〗現(xiàn)場(chǎng)演講內(nèi)容整理而成.
講師介紹
代海鵬
新炬網(wǎng)絡(luò)資深數(shù)據(jù)庫(kù)工程師
分享大綱:
1面對(duì)數(shù)據(jù)泄密,DBA能做什么?
2面對(duì)數(shù)據(jù)丟失,DBA能做什么?
3數(shù)據(jù)庫(kù)備份及演練
我把數(shù)據(jù)的安全事件簡(jiǎn)單分為兩類,第一類是泄密事件,第二類是數(shù)據(jù)丟失事件.
先說(shuō)說(shuō)近年來(lái)影響比較大的數(shù)據(jù)泄密事件:
再說(shuō)說(shuō)近期影響較大的數(shù)據(jù)丟失事件:
對(duì)此,我想說(shuō)的是:我們的運(yùn)維團(tuán)隊(duì)并沒(méi)有我們想象中那么牛逼,所以我們要對(duì)生產(chǎn)抱有敬畏之心.
清理和鎖定無(wú)用的數(shù)據(jù)庫(kù)帳號(hào).進(jìn)了一個(gè)新環(huán)境,核心庫(kù)賬戶是必查項(xiàng).
除了用戶本身以外,還有用戶的profile要進(jìn)行檢查,首先就是密碼的驗(yàn)證算法,11G默認(rèn)是沒(méi)有算法的,我們要用腳本@?/rdbms/admin/utlpwdmg.sql創(chuàng)建名叫VERIFY_FUNCTION_11G的驗(yàn)證函數(shù).
VERIFY_FUNCTION_11G函數(shù)驗(yàn)證項(xiàng)如下:
profile中有兩類屬性:
權(quán)限管理很簡(jiǎn)單,就是最小化原則.
最小化應(yīng)用賬戶,在工作中我個(gè)人經(jīng)驗(yàn)為默認(rèn)給開(kāi)發(fā)及應(yīng)用賬戶的權(quán)限,就connect、resource、創(chuàng)建視圖的權(quán)限即可.
reousrce的權(quán)限是有很多,可以創(chuàng)建視圖,我只給這么多,如果你還想要?jiǎng)e的,可以向DBA團(tuán)隊(duì)申請(qǐng),DBA團(tuán)隊(duì)來(lái)給你審批.然后是數(shù)據(jù)庫(kù)字典,普通用戶禁止訪問(wèn).為了禁止普通用戶的訪問(wèn)可以用下面的07-DICTIONARY-ACCESSIBILTY進(jìn)行限制.安全和便利總是相對(duì)的,越安全,那么操作起來(lái)就越復(fù)雜,所以說(shuō)這里是否進(jìn)行限制就見(jiàn)仁見(jiàn)智.我們可以把權(quán)限匯集成Role,一類應(yīng)用所需的權(quán)限可以歸類為一個(gè)單獨(dú)的role,以后只要是類似應(yīng)用上線不要再管理.而應(yīng)用下線也可以通過(guò)Role快速回收對(duì)應(yīng)權(quán)限.通過(guò)Role賦權(quán)是我的建議之一.
最小化DBA權(quán)限用戶,一種是操作系統(tǒng)上面DBA組,其中操縱系統(tǒng)帳號(hào)最好就Oracle一個(gè),因?yàn)镈BA組所屬用戶可以通過(guò)操作系統(tǒng)驗(yàn)證直接以sysdba的權(quán)限登錄到庫(kù)里.另外一種,數(shù)據(jù)庫(kù)里面有DBA角色,或者有大權(quán)限的帳號(hào)也一定要審查一下,如果有可疑的賬戶雖然沒(méi)有DBA角色,但相關(guān)的權(quán)限卻全部擁有的,更是一定要進(jìn)行檢查核對(duì).
日志管理主要是說(shuō)審計(jì),在后面發(fā)現(xiàn)問(wèn)題時(shí)可以快速知道是之前誰(shuí)做的操作.我們可以把審計(jì)配置好以后關(guān)閉審計(jì),如果某天系統(tǒng)已經(jīng)上生產(chǎn)后老板說(shuō)你給我把這個(gè)庫(kù)審計(jì)一下,我們只需一條命令就可以審計(jì)了,不需要再做一系列配置及資源申請(qǐng).
審計(jì)涉及的參數(shù):
有幾點(diǎn)注意事項(xiàng):
11G新參數(shù)ENABLE_DDL_LOGGING,開(kāi)這個(gè)參數(shù)可以在alert日志中記錄所有的DDL語(yǔ)句,不過(guò)記錄的內(nèi)容相對(duì)簡(jiǎn)單,只有時(shí)間和語(yǔ)句.
在11.2.0.4之前,這個(gè)功能是有bug的,rename操作是不做記錄的.
到12C 這個(gè)參數(shù)更加完善了,如圖右,除了語(yǔ)句以外 還有IP 、機(jī)器名等信息,在我們不開(kāi)審計(jì)的情況下,也能獲取DDL執(zhí)行信息.
及時(shí)的升級(jí)對(duì)應(yīng)的PSU,尤其是修復(fù)的重要安全bug的PSU.
關(guān)于漏洞,我簡(jiǎn)單地貼了一個(gè)文章,1454618.1.
上面有很多數(shù)據(jù)都可以通過(guò)MOS文章一把拉出來(lái).講這個(gè)的主要原因是強(qiáng)調(diào)我們要緊跟著自身版本的PSU,這個(gè)不代表說(shuō)本月發(fā)布的PSU,我們必須本月升級(jí),而是應(yīng)該有計(jì)劃進(jìn)行升級(jí).比如以延遲半年為計(jì)劃,或者延遲一個(gè)季度為計(jì)劃.除了這方面,還有業(yè)內(nèi)會(huì)經(jīng)常爆出一些嚴(yán)重BUG,如像DBAplus這樣的社群是會(huì)第一時(shí)間發(fā)出聲明及處理方案,我們一定要時(shí)刻關(guān)注,不能等問(wèn)題真的到我們頭上了才知道,那樣公司請(qǐng)你就沒(méi)有價(jià)值了.
以上所述都是應(yīng)對(duì)數(shù)據(jù)泄密的措施.簡(jiǎn)單來(lái)說(shuō),我認(rèn)為數(shù)據(jù)泄密方面DBA和運(yùn)維人員只是做了輔助作用,因?yàn)楹芏喙緯?huì)有自己的安全團(tuán)隊(duì),會(huì)從外面請(qǐng)一些公司去做整體的掃描,會(huì)給出一系列建議、配置性的更改,我們只需要針對(duì)數(shù)據(jù)庫(kù)這方面調(diào)整,就夠了.
前面說(shuō)那么多東西是為什么呢?大家都知道了,去年下半年有比特幣勒索,大家在網(wǎng)上了下載了一些破解工具,如PLSQL DEV、SCRT等,有一部分工具被放置惡意的腳本,然后當(dāng)你通過(guò)很大的權(quán)限(如SYSDBA)連接到數(shù)據(jù)庫(kù),這些工具會(huì)自己創(chuàng)建一個(gè)存儲(chǔ)過(guò)程,存過(guò)名字起跟真的一樣,里面還給你加密.一定時(shí)期以后(如三年)這個(gè)函數(shù)會(huì)自己執(zhí)行,把你的數(shù)據(jù)全部搞亂搞廢掉,然后會(huì)在報(bào)錯(cuò)信息里面提供包含比特幣鏈接的勒索信息,大致意思是你給我錢,我就給你把數(shù)據(jù)庫(kù)恢復(fù).
那么我們前面做的,收用戶、收權(quán)限,就是保證,當(dāng)我們DBA自身使用的工具是安全的情況下就能保證數(shù)據(jù)庫(kù)不受勒索.如果你大的權(quán)限在下面飄著,就不能保證研發(fā)、應(yīng)用的哥們究竟安全意識(shí)如何,到時(shí)候連防都不好防.
如果面對(duì)數(shù)據(jù)泄密是DBA是輔助類工作的話,面對(duì)數(shù)據(jù)丟失,DBA有無(wú)法推卸的責(zé)任,這個(gè)“鍋”你是甩不出去的.
在平時(shí)運(yùn)行維護(hù)時(shí),總會(huì)有種種情況導(dǎo)致業(yè)務(wù)數(shù)據(jù)丟失或者損壞,無(wú)論丟失是多是少,我們DBA都應(yīng)該盡量避免發(fā)生.
下列是我們平時(shí)遇到的4種可能會(huì)造成數(shù)據(jù)丟失的類型:
就Oracle本身來(lái)講,它有自己的高可用體系產(chǎn)品及功能.
這種故障正常來(lái)說(shuō)是丟失未提交的數(shù)據(jù),大部分情況我們是無(wú)需在意這些丟失數(shù)據(jù)的.這時(shí)候主要以恢復(fù)業(yè)務(wù)為目的來(lái)設(shè)計(jì)數(shù)據(jù).我們通過(guò)使用主機(jī)層面高可用技術(shù)RAC,來(lái)解決這個(gè)問(wèn)題,主機(jī)層面高可用指,兩套內(nèi)存、CPU等運(yùn)算資源,但是使用同一套數(shù)據(jù)文件.當(dāng)RAC中某主機(jī)損壞時(shí),業(yè)務(wù)可以在下次連接的時(shí)候連入另外的節(jié)點(diǎn).
在Oracle 9i之前,RAC的名稱叫做OPS,而9i之前每次傳輸塊的時(shí)候,需要先將數(shù)據(jù)刷入硬盤,然后另外的節(jié)點(diǎn)從硬盤上讀取.
RAC進(jìn)化的最重要的一點(diǎn),就是有了CACHE-FUSION的特性,最新的當(dāng)前塊數(shù)據(jù)可以通過(guò)私網(wǎng)進(jìn)行傳輸了.
使用RAC的注意點(diǎn):
這個(gè)層面的故障和損壞RAC是無(wú)法保護(hù)的,因此Oracle提供了DG進(jìn)行存儲(chǔ)保護(hù).
當(dāng)存儲(chǔ)出現(xiàn)故障的時(shí)候,丟失多少數(shù)據(jù)都是有可能的,這時(shí)候如果DG存在,我們可以激活備庫(kù),將應(yīng)用的IP調(diào)整為備庫(kù)及時(shí)的恢復(fù)應(yīng)用,并且可以做到盡量不丟失數(shù)據(jù),這里可以給大家分享的經(jīng)驗(yàn)是,建立內(nèi)網(wǎng)域名服務(wù)器,將IP都設(shè)置為對(duì)應(yīng)的域名,以后發(fā)生容災(zāi)切換的時(shí)候 只需要調(diào)整域名服務(wù)器的映射即可,無(wú)需每個(gè)應(yīng)用單獨(dú)調(diào)整.
在11G以后DG的standby端可以以readonly的模式進(jìn)行打開(kāi),并對(duì)外提供只讀服務(wù).這也是盡量將物理資源利用起來(lái).
兩種情況,一種是歸檔好著,只是刷塊的時(shí)候有問(wèn)題,導(dǎo)致刷壞了.這種普通DG就可以搞定,另外一種歸檔被寫壞,而傳到standby 應(yīng)用也會(huì)導(dǎo)致備庫(kù)數(shù)據(jù)塊壞掉.
這時(shí)候我們就需要講DG進(jìn)行延時(shí)應(yīng)用,注意這里只是延時(shí)應(yīng)用,日志還是會(huì)自動(dòng)傳輸?shù)?哪怕生產(chǎn)壞掉了,除了需要追一定時(shí)間的歸檔外,不會(huì)有數(shù)據(jù)丟失,延時(shí)語(yǔ)句如下:
alter database recover managed standby database delay 120 disconnect from session;
120的單位是分.
這里2小時(shí)只是代表standby 和生產(chǎn)端真實(shí)時(shí)間差距,并不代表生產(chǎn)發(fā)生down機(jī), standby 必須兩個(gè)小時(shí)才能追平歸檔.
說(shuō)實(shí)話靠個(gè)人是很難避免的,誰(shuí)都有個(gè)精神不好的時(shí)候,犯迷糊的時(shí)候.這時(shí)候就需要通過(guò)規(guī)范和制度來(lái)保證這種事情不發(fā)生.
經(jīng)驗(yàn)分享:
作為一個(gè)DBA,如果想要睡得踏實(shí),那么備份一定要有.
當(dāng)前數(shù)據(jù)庫(kù)中數(shù)據(jù)越來(lái)越大,幾十T的庫(kù)屢見(jiàn)不鮮,有時(shí)候可能真的沒(méi)那么大空間做演練 .經(jīng)驗(yàn)小分享:調(diào)整備份手段,將業(yè)務(wù)表空間分散開(kāi),每份單獨(dú)與system sysaux等組成一個(gè)備份集.分批采用進(jìn)行全備.
最后驗(yàn)證時(shí)可以只驗(yàn)證一份,這樣數(shù)據(jù)量就小很多了.不過(guò)很多地方為了保證安全,兩地三中心都搞出來(lái)了,幾十T空間并沒(méi)有想象中貴,這點(diǎn)投入是完全值得的.
今天分享就到這兒了,希望大家的系統(tǒng)平安,做好防范.謝謝!
Q&A
Q1:有一次客戶那邊的賬戶突然鎖了,我查了其它的信息表空間,發(fā)現(xiàn)并沒(méi)有因?yàn)槎啻蚊艽a登陸錯(cuò),排除這個(gè)情況外還有什么原因?
A1:你說(shuō)的是資源,profile分口令規(guī)則和資源限制,資源限制是需要和resource_limit參數(shù)進(jìn)行配合的.有兩種情況,第一種情況是有人直接進(jìn)行手工鎖定,第二種情況是密碼試錯(cuò)過(guò)多導(dǎo)致被鎖定的.
(接上問(wèn))
Q2:我的意思是排除密碼輸錯(cuò),也不是人為鎖的.
A2:到期了.
Q3:到期的時(shí)間不是沒(méi)有限制嗎?
A3:資源是沒(méi)有限制的.
Q4:資源參數(shù)沒(méi)打.
A4:資源參數(shù)部分是不生效,跟口令參數(shù)是無(wú)關(guān)的.
Q5:可以告訴我多長(zhǎng)時(shí)間嗎?
A5:默認(rèn)180天.
Q6:PPT一開(kāi)始rf刪掉以后,我去年做過(guò)暴力測(cè)試,是可以恢復(fù)備份的.國(guó)外的那個(gè)沒(méi)有嗎?
A6:國(guó)外哥們的庫(kù)是不一樣的.他那邊有三到四重的備份方案,各種各樣的容災(zāi),全部都沒(méi)有用.最后恢復(fù)不是采用正常手段恢復(fù)的,是用其它系統(tǒng)的數(shù)據(jù)傳回來(lái)的,非常佩服他們把恢復(fù)進(jìn)度在推特上面進(jìn)行公布,以每小時(shí)5%的進(jìn)度慢慢恢復(fù).當(dāng)時(shí)這篇文章也炒得很火了.詳情可了解社群文章《99%數(shù)據(jù)被誤刪,5類備份全部失效,怎么破?》
文章來(lái)自微信公眾號(hào):DBAplus社群
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/4223.html