突發(fā)!又一起惡意刪庫事件,涉事員工已被拘留
2 月 23 日 19:00 左右,來自微盟官網(wǎng)的消息,微盟的業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫(包括主備)遭遇其公司運(yùn)維人員的刪除。
目前微盟技術(shù)團(tuán)隊(duì)正在努力恢復(fù)數(shù)據(jù),但數(shù)據(jù)恢復(fù)較慢。目前對(duì)新用戶服務(wù)已經(jīng)恢復(fù)正常,但老用戶數(shù)據(jù)官方預(yù)計(jì)要到 2 月 28 日才有結(jié)果。
微盟官網(wǎng)截圖
據(jù)悉,目前犯罪嫌疑人已經(jīng)被寶山區(qū)公安局進(jìn)行刑事拘留,犯罪嫌疑人承認(rèn)了犯罪的事實(shí)。
犯罪嫌疑人乃微盟研發(fā)中心運(yùn)維部核心運(yùn)維人員賀某,賀某于 2 月 23 日晚 18 點(diǎn) 56 分通過個(gè)人 VPN 登入公司內(nèi)網(wǎng)跳板機(jī),因個(gè)人精神、生活等原因?qū)ξ⒚司€上生產(chǎn)環(huán)境進(jìn)行了惡意的破壞。
騰訊云官方稱,微盟運(yùn)維事故發(fā)生后,騰訊云技術(shù)團(tuán)隊(duì)已第一時(shí)間與微盟對(duì)齊,研究制定修復(fù)方案。工程師們正在日夜趕工,將盡最大努力協(xié)助微盟降低損失。
微盟集團(tuán)成立于 2013 年,是一家主要通過 SaaS 產(chǎn)品和精準(zhǔn)營銷為商戶提供云端商業(yè)和營銷解決方案的提供商。
截止 2019 年 6 月 30 日,微盟的 SaaS 產(chǎn)品及精準(zhǔn)營銷服務(wù)擁有 300 萬注冊商戶,SaaS 產(chǎn)品的付費(fèi)商戶有 70006 名。
根據(jù)財(cái)報(bào)顯示,2019 年上半年微盟收入 6.57億元(人民幣),毛利 3.65 億元,其中 SaaS 業(yè)務(wù)收入 2.19 億元,毛利 1.77 億元。
可以看出,其兩大核心業(yè)務(wù)之一的 SaaS 業(yè)務(wù)(另一核心業(yè)務(wù)為精準(zhǔn)營銷服務(wù))對(duì)微盟業(yè)績具有舉足輕重的影響。
微盟認(rèn)為,此次 SaaS 生產(chǎn)環(huán)境和數(shù)據(jù)破壞對(duì)整體財(cái)務(wù)狀況的影響視修復(fù)程度和速度而定,預(yù)計(jì)將對(duì) SaaS 業(yè)務(wù)營運(yùn)帶來一定的負(fù)面影響。
針對(duì)這起刪庫事件,網(wǎng)友們都炸了:
刪庫跑路事件屢發(fā),在這里特別提醒各個(gè)公司,注意做好兩項(xiàng)工作:
- 更嚴(yán)密的權(quán)限管理:大部分公司對(duì)運(yùn)維的權(quán)限都放得比較寬,容易造成事故。
- 更可靠的備份機(jī)制:主備都是可以被刪的,一旦需要從磁盤恢復(fù),恢復(fù)時(shí)間會(huì)很慢。
作為技術(shù)人員,千萬不要因?yàn)橐粫r(shí)腦熱,做出錯(cuò)誤的決定,讓自己身陷囹圄。
最后,我們跟一位老 DBA,一起來回顧和深入反思下這個(gè)事件。
事件回顧
時(shí)間回顧如下:
- 2020.2.23 日 18:56,員工通過 VPN 登入服務(wù)器并實(shí)施破壞。
- 2020.2.23 日 19 時(shí),系統(tǒng)監(jiān)控報(bào)告故障并啟動(dòng)應(yīng)急方案。
- 2020.2.24 日,微盟公司向警方報(bào)案。
- 2020.2.25 日 7 時(shí),恢復(fù)部分生產(chǎn)環(huán)境和數(shù)據(jù),并預(yù)計(jì)到凌晨 0 點(diǎn)能完成恢復(fù),并向新用戶恢復(fù)業(yè)務(wù),但老用戶預(yù)計(jì)還要到 2 月 28 日晚上才能恢復(fù)。
為什么會(huì)發(fā)生"刪庫"
從官方發(fā)布的公告來看,是因?yàn)檫\(yùn)維部的核心員工刻意進(jìn)行的破壞,也就是說,這是人為的、惡意的、有計(jì)劃的破壞行為,而不是我們最常見的誤操作或黑客入侵所致。
不過,從我的經(jīng)驗(yàn)來看,這起事件未必是真的人為破壞,具體分析就不貼了??傊?,我對(duì)官方的公告存疑。不過也不能改變?nèi)藶槠茐倪@個(gè)事實(shí),就看公安機(jī)關(guān)怎么定性了。
我們要做的是,進(jìn)行反思和預(yù)防此類事件一再發(fā)生,這也是本文的用意。
此外這種意外事故受害的除了公司、員工,更無辜的是客戶,我們祝福微盟能救回更多數(shù)據(jù),將損失最小化。
事故恢復(fù)的速度如何
從上面的回顧時(shí)間點(diǎn)來看,我認(rèn)為恢復(fù)的速度并不算快。
我經(jīng)過側(cè)面了解,這起事件主要的影響是數(shù)據(jù)庫的主備庫都被刪了,并且執(zhí)行的是類似"rm -fr /"這樣的操作。這種行為,基本上只能通過其他備庫,或物理備份來恢復(fù)了。
從事后恢復(fù)情況來看,應(yīng)該是沒有更多可用的備庫了,但備份數(shù)據(jù)應(yīng)該是還有的,所以才需要花費(fèi)這么長時(shí)間。
此外,備份數(shù)據(jù)恢復(fù)完后,通常還需要有一個(gè)校驗(yàn)核對(duì)的過程,所以一般會(huì)先發(fā)公告安撫客戶的情緒。
不過新舊用戶恢復(fù)服務(wù)的時(shí)間并不同,我們由此甚至可以猜測,備份機(jī)制可能不合理,新數(shù)據(jù)的備份更及時(shí),舊數(shù)據(jù)的備份有延誤,或者比如因?yàn)榕f數(shù)據(jù)的量太大了導(dǎo)致延遲更久。
這次更糟糕的是,趕上特殊情況,大家都在家遠(yuǎn)程辦公,協(xié)同起來肯定更慢,也影響了恢復(fù)速度,真是禍不單行。
幸運(yùn)的是,聽說騰訊云已有多位技術(shù)專家參與了拯救工作,希望能盡快恢復(fù)。
事件反思和預(yù)防
這次的事件,不同于常見的黑客入侵或誤操作,而是源于內(nèi)部發(fā)起的破壞,這種是最可怕、最難防范的行為。
我相信絕對(duì)超過 80% 甚至 90% 的中小型公司,都無法避免這個(gè)問題。畢竟中小型公司的人員規(guī)模有限,想要進(jìn)行非常細(xì)致的權(quán)限分級(jí)也不太現(xiàn)實(shí),更容易因此降低工作效率和員工的積極性。
盡管如此,我們也嘗試做點(diǎn)什么來預(yù)防此類事件再次發(fā)生。
首先,是權(quán)限分級(jí)
我們知道,為了提高工作效率,會(huì)部署自動(dòng)化運(yùn)維工具。但這樣一來,也極大增加了誤操作帶來的風(fēng)險(xiǎn)。
本次事件中,短時(shí)間內(nèi)造成大面積服務(wù)器故障,基本可以斷定是因?yàn)楣ぞ吲糠职l(fā)命令導(dǎo)致的。
所以,一定要進(jìn)行權(quán)限分級(jí),也包括業(yè)務(wù)范圍分級(jí)。例如可以嘗試以下方案:
①角色分級(jí)
區(qū)分業(yè)務(wù)運(yùn)維、系統(tǒng)運(yùn)維、網(wǎng)絡(luò)運(yùn)維、DBA 等多重角色,每個(gè)角色都只能接觸自己所負(fù)責(zé)的那票業(yè)務(wù)服務(wù)器,以及相應(yīng)可執(zhí)行的權(quán)限。
例如,業(yè)務(wù)運(yùn)維、網(wǎng)絡(luò)運(yùn)維、DBA 等都不能執(zhí)行系統(tǒng)層的 rm 指令,系統(tǒng)運(yùn)維也不能執(zhí)行數(shù)據(jù)庫的指令。
②權(quán)限分級(jí)
區(qū)分一級(jí)執(zhí)行權(quán)限、二級(jí)執(zhí)行權(quán)限及審批權(quán)限。
例如,我們可以實(shí)施這樣一套方案,一級(jí)權(quán)限的人發(fā)起某個(gè)操作請(qǐng)求,有審批權(quán)限的審核校驗(yàn)這個(gè)命令是否合理,再由二級(jí)權(quán)限的人去真正實(shí)施。
這樣基本可以防范人為破壞了,除非最后落地時(shí)是由同一個(gè)人來承擔(dān)所有角色,或者嫌麻煩繞過這個(gè)規(guī)范。
分級(jí)措施想做到位,就得有足夠的人員,公司上市的目的就是通過融資以改善運(yùn)營狀況,該招人就招人吧。
其次,備份、備份、備份
備份的重要性無需多言。但其實(shí),不只是做了備份就可以的,還有如下幾點(diǎn)要注意:
- 除了本地備份,還應(yīng)該有異地備份,并且要區(qū)分本地備份和異地備份責(zé)任人的權(quán)限,交由不同等級(jí)的人管理,防止惡意破壞時(shí),把全套備份都一把火燒了。
- 除了邏輯備份外,還應(yīng)該有物理備份,物理備份恢復(fù)起來會(huì)更快一些。
- 除了備份,還應(yīng)該做好備份校驗(yàn),確保備份的有效性,也就是隨機(jī)抽取備份集進(jìn)行恢復(fù)測試,確保備份文件的可用性(我多年運(yùn)維從業(yè)經(jīng)歷,僅有一次比較嚴(yán)重的故障,就是栽在沒及時(shí)進(jìn)行備份恢復(fù)測試校驗(yàn))。
最后,做好防災(zāi)演練
防災(zāi)演練的確比較難做,畢竟沒幾個(gè)人敢真的在線上全盤執(zhí)行"rm -fr /"這樣的操作。
不過依然可以模擬各種可能的情況,以及不同情況的組合,再針對(duì)這些情況制定不同的預(yù)案,然后在開發(fā)、測試環(huán)境嘗試進(jìn)行演練。
而且要不定期的進(jìn)行演練,讓各個(gè)崗位的責(zé)任人熟悉整套流程。就像在日本,中小學(xué)總是不定期進(jìn)行防災(zāi)演練一樣,演練次數(shù)多了,真遇到問題時(shí),自然就不慌了,恢復(fù)起來也會(huì)更快。
最后的最后,多給員工一些必要的關(guān)懷和培訓(xùn)吧。還有,作為管理者,對(duì)負(fù)責(zé)后端的運(yùn)維部門也多給些重視,運(yùn)維部門一旦出個(gè)事故,是真的有可能會(huì)搞垮一家上市公司的,這并不是沒有前車之鑒。