一個(gè)運(yùn)維的存在感:微盟36小時(shí)事件,我們?cè)摲此际裁矗?/h1>
今日,微盟發(fā)布有關(guān)微盟系統(tǒng)故障通告。通告指出,2月23日19點(diǎn),系統(tǒng)監(jiān)控報(bào)警,服務(wù)出現(xiàn)故障,大面積服務(wù)集群無(wú)法響應(yīng),生產(chǎn)環(huán)境及數(shù)據(jù)遭受嚴(yán)重破壞。
此外該公司旗下SaaS業(yè)務(wù)服務(wù)出現(xiàn)故障,預(yù)測(cè)對(duì)有關(guān)業(yè)務(wù)帶來一定負(fù)面影響。
目前,公司正進(jìn)行生產(chǎn)環(huán)節(jié)和數(shù)據(jù)修復(fù)工作,預(yù)計(jì)2月25日晚24點(diǎn)前生產(chǎn)環(huán)境將修復(fù)完成,所有新用戶可恢復(fù)服務(wù);預(yù)計(jì)2月28日晚24點(diǎn)前老用戶數(shù)據(jù)修復(fù)可以完成。
此次事故經(jīng)調(diào)查系微盟研發(fā)中心運(yùn)維人員賀某所為,賀某于2月23日晚18點(diǎn)56分通過個(gè)人VPN登入公司內(nèi)網(wǎng)跳板機(jī),因個(gè)人精神、生活等原因?qū)ξ⒚司€上生產(chǎn)環(huán)境進(jìn)行惡意破壞。目前,寶山公安局已將賀某刑事拘留,犯罪嫌疑人承認(rèn)犯罪事實(shí)。
反思:頻繁吃一塹,如何長(zhǎng)一智
在談反思之前,在此次事件中有幾個(gè)問題我們還要關(guān)注一下,為什么這么長(zhǎng)時(shí)間還沒恢復(fù)?
為什么一個(gè)人可以有這么大的破壞性?
從公告中,我們可以看到,到目前為止,仍在進(jìn)行中的恢復(fù)動(dòng)作就是做數(shù)據(jù)恢復(fù)。
所以有網(wǎng)友說不難推斷,這次故障被破壞最嚴(yán)重的就是生產(chǎn)系統(tǒng)的數(shù)據(jù)庫(kù),而且一定是核心庫(kù),或許應(yīng)用環(huán)境也被破壞掉了,否則影響不會(huì)像現(xiàn)在這么大。
1. 數(shù)據(jù)恢復(fù)這么晚,說好的災(zāi)備呢?
說道數(shù)據(jù)回復(fù)的時(shí)間長(zhǎng)可能是以下幾個(gè)原因造成的:
- 這個(gè)事件非常不幸,就是傳說中刪庫(kù)跑路的操作,而且極有可能是直接做了rm -rf或者fdisk這樣的基本不可逆轉(zhuǎn)文件刪除操作,更極端可能是主備一起干掉了。
- 數(shù)據(jù)庫(kù)備份沒有做好。可能壓根就沒有備份,只能從磁盤文件系統(tǒng)維度恢復(fù);有全量備份,但是無(wú)增量備份,全量有可能是一個(gè)月、一周,三天等等,這中間的增量備份沒做。
不管哪一種,只要是數(shù)據(jù)庫(kù)備份機(jī)制不完善,沒做過完整的恢復(fù)驗(yàn)證,真正要恢復(fù)的時(shí)候一定會(huì)花大量的時(shí)間找回?cái)?shù)據(jù)。
2. 論一個(gè)人的破壞性?
從這次事件看,微盟這種規(guī)模的公司不太可能像大公司,一下招很多運(yùn)維或DBA,然后每個(gè)運(yùn)維和DBA都嚴(yán)格按照不同業(yè)務(wù)授權(quán),也就是每個(gè)DBA只能訪問有限的業(yè)務(wù)庫(kù)。
小公司的成本不支持這種做法,而且招了這么多人也沒這么多事情可以干。
所以,對(duì)于絕大多數(shù)中小型公司來說,普遍和必然的現(xiàn)象就是,一個(gè)運(yùn)維或DBA管整個(gè)系統(tǒng),并且擁有整個(gè)系統(tǒng)所有主機(jī)的最大權(quán)限,比如root。
說做好權(quán)限管控,要分層分級(jí)等等,這些玩法只針對(duì)大公司有效,因?yàn)榇蠊居绣X,有量,有事情干,招一批人,分分工,分分權(quán)限,各管各的,完全沒問題。對(duì)微盟這種類型的公司基本不可行。
3. 避免問題,我們可以做什么?
以上2個(gè)問題主要集中在運(yùn)維人員權(quán)限太大,方便做了極端操作;公司沒有有效的備份恢復(fù)機(jī)制。針對(duì)這兩個(gè)問題,網(wǎng)上也有網(wǎng)友列出了自己的想法,小編羅列了幾點(diǎn)。
- 使用云產(chǎn)品,微盟雖然跑在云上,但是很顯然并沒有直接使用云數(shù)據(jù)庫(kù)產(chǎn)品,應(yīng)該是用了云的裸金屬或者是虛擬機(jī),然后在服務(wù)器上自己搭建的MySQL數(shù)據(jù)庫(kù)。因?yàn)閺奈覀兪褂玫慕?jīng)驗(yàn)看,當(dāng)前任何一家公有云廠商的數(shù)據(jù)庫(kù)產(chǎn)品,都會(huì)有比較完善的自動(dòng)備份和恢復(fù)機(jī)制,而且根本沒有機(jī)會(huì)去執(zhí)行rm -rf 和 fdisk這樣極端的操作。
- 做好備份。如果真心覺得自己有能力自建,那一定做好全量備份,增量備份,延遲備份,全量備份要多機(jī)房,異地備份,因?yàn)閿?shù)據(jù)是核心資產(chǎn),應(yīng)用全刪了還可以重新部署。
- 關(guān)于權(quán)限控制,中小型企業(yè)如果真的沒法做到最小授權(quán),建議上個(gè)主機(jī)安全管控軟件,或者堡壘機(jī),各個(gè)云廠商都有,類似rm -rf 、fdisk、drop等等這樣的高危命令是可以實(shí)時(shí)攔截掉的。
技術(shù)人自覺才是保護(hù)用戶數(shù)據(jù)的最后防線
最近幾年,由于技術(shù)人員故意或者有意造成的事故不計(jì)其數(shù)。2018 年 3 月,Stack Overflow 發(fā)布了他們的開發(fā)者調(diào)查報(bào)告,并首次提出了有關(guān)道德的問題。對(duì)于“開發(fā)人員是否有義務(wù)考慮代碼的道德影響”這個(gè)問題,有近 80%的人回答“是”。不過,只有 20%的人認(rèn)為他們最終在為不道德的代碼負(fù)責(zé),40%的人會(huì)在被要求的情況下寫不道德的代碼,只有 50%的人表示在發(fā)現(xiàn)不道德的代碼時(shí)會(huì)舉報(bào)。
如果代碼對(duì)世界的影響不大,那么這也許就不成問題。打個(gè)比方,如果你寫了一個(gè)對(duì) 100 個(gè)人不利的算法,雖然這事不怎么光彩,但產(chǎn)生的影響也是有限的。但是,如果你在擁有數(shù)億用戶的 Facebook、Google、微信上做同樣的事情,結(jié)果就會(huì)很嚴(yán)重。
對(duì)于開發(fā)者來說,光是每天寫業(yè)務(wù)代碼就已經(jīng)讓人心力交瘁了。更何況不管在國(guó)內(nèi)還是國(guó)外,技術(shù)在大部分時(shí)候都是為業(yè)務(wù)服務(wù),開發(fā)者的話語(yǔ)權(quán)是拗不過盈利這條大腿的。但是,遵守職業(yè)道德是最后的底線,如果技術(shù)人員做不到這一點(diǎn),那保護(hù)用戶數(shù)據(jù)的最后一道防線就會(huì)崩塌。
所以,技術(shù)人的自我修養(yǎng),在紛繁復(fù)雜科技產(chǎn)物的當(dāng)下顯得更加關(guān)鍵。