MySQL從刪庫到跑路:順豐高級(jí)工程師跑路被開除之后
9 月 19 日,微博網(wǎng)友“大佬坊間八卦”爆料,順豐科技數(shù)據(jù)中心的一位高級(jí)工程師鄧某因誤刪生產(chǎn)數(shù)據(jù)庫,導(dǎo)致某項(xiàng)服務(wù)無法使用并持續(xù) 590 分鐘。

隨后,順豐根據(jù)公司相關(guān)規(guī)定,辭退工程師鄧某,并在順豐內(nèi)網(wǎng)通報(bào)。(公眾號(hào):雷鋒網(wǎng))

錯(cuò)選 RUSS 數(shù)據(jù)庫
據(jù)內(nèi)部通報(bào),鄧某錯(cuò)選了 RUSS 數(shù)據(jù)庫,打算刪除執(zhí)行的 SQL。
在選定刪除時(shí),因其操作不嚴(yán)謹(jǐn),光標(biāo)回跳到 RUSS 庫的實(shí)例,在未看清所選內(nèi)容的情況下,便通過 delete 執(zhí)行刪除,同時(shí)鄧某忽略了彈窗提醒,直接回車,導(dǎo)致 RUSS 生產(chǎn)數(shù)據(jù)庫被刪掉。
因運(yùn)維工作人員不嚴(yán)謹(jǐn)?shù)牟僮?,?dǎo)致OMCS運(yùn)營監(jiān)控系統(tǒng)瞬間崩潰,該系統(tǒng)上臨時(shí)車線上發(fā)車功能無法使用并持續(xù)約10個(gè)小時(shí)。
同比9月5日的929條臨時(shí)車需求臨時(shí)變更,此次刪庫對(duì)生產(chǎn)業(yè)務(wù)產(chǎn)生了嚴(yán)重的負(fù)面影響。
運(yùn)維工程師發(fā)現(xiàn)誤刪數(shù)據(jù)庫之后,估計(jì)心里想著完蛋了,36計(jì)走為上計(jì),直接跑路要緊~
原因分析
對(duì)于這次事件,來自數(shù)據(jù)安全公司安華金和的研究人員進(jìn)行了如下原因追溯:
1、不要指望運(yùn)維人永遠(yuǎn)不犯錯(cuò)
運(yùn)維工作屬于高壓工種,被網(wǎng)友調(diào)侃是拿著如同白菜價(jià)的工資卻操著賣白粉的心,心理壓力大不說,為了應(yīng)對(duì)外部攻擊和后端非工作時(shí)間運(yùn)維事件,通宵達(dá)旦加班更是家常便飯。
面對(duì)身心雙重消耗,工作中稍有不慎犯?jìng)€(gè)錯(cuò)誤也是情理之中的事情。如果單靠約束運(yùn)維人員不犯錯(cuò)誤,只能說是主管領(lǐng)導(dǎo)和企業(yè)的雙重天真。因此,就必須要通過規(guī)范的制度流程和有效的技術(shù)手段來防患未然。
2、流程先行,技術(shù)手段托底
從上述爆料的內(nèi)部郵件中可以看出,鄭某在接到變更需求后,“按照操作流程要求”,登陸生產(chǎn)數(shù)據(jù)庫跳轉(zhuǎn)機(jī),卻在后續(xù)操作中違反了操作流程,導(dǎo)致刪庫事件發(fā)生,帶來嚴(yán)重影響。
外行看熱鬧,內(nèi)行看門道。追根溯源,刪庫事件之所以發(fā)生,正是因?yàn)椴僮髁鞒痰慕⒉]有技術(shù)手段來托底,此次事件正暴露出權(quán)限管理、審批機(jī)制的雙重缺失。因此,單有流程,卻沒有有效的技術(shù)手段作為“防守底線”,流程就變成了一紙空文,僅供事后追責(zé)而已。
要避免刪庫帶來的嚴(yán)重影響,簡(jiǎn)單粗暴的說,生產(chǎn)數(shù)據(jù)庫操作前,除了備份,必須人工交叉審核。(公眾號(hào):雷鋒網(wǎng))
解決思路
避免此類刪庫跑事件,安全專家給出了兩個(gè)解決思路:
一是完善的權(quán)限管理,讓運(yùn)維人員刪不了庫;
二是有效的審批機(jī)制,就算非要?jiǎng)h庫,也必須先向上級(jí)申請(qǐng)審批。
為此,安全專家在研發(fā)中心環(huán)境下模擬了此次現(xiàn)場(chǎng),使用本事件內(nèi)部通報(bào)中提到的navicat-mysql 進(jìn)行操作,然后配合上數(shù)據(jù)庫安全運(yùn)維產(chǎn)品DBCtrl的界面,為大家提供兩個(gè)解決思路。
完善的權(quán)限管理
1)安全管理員在DBCtrl上創(chuàng)建數(shù)據(jù)庫安全運(yùn)維申請(qǐng)人(aq1_sq1執(zhí)行操作的人)和審批人(aq1_sp11審核運(yùn)維操作的人),并分配對(duì)應(yīng)的數(shù)據(jù)庫運(yùn)維操作權(quán)限(aq1_db1數(shù)據(jù)庫組):
現(xiàn)有流程基礎(chǔ)上增加防守機(jī)制,通過數(shù)據(jù)庫安全運(yùn)維產(chǎn)品DBCtrl配置對(duì)生產(chǎn)庫高危操作的規(guī)則,并設(shè)定為“攔截”動(dòng)作,在Navicat上即使誤操作也會(huì)被DBCtrl攔截,防止誤刪數(shù)據(jù)時(shí)間發(fā)生。具體操作步驟如下:

2)DBCtrl添加防護(hù)規(guī)則,攔截對(duì)生產(chǎn)庫的高危敏感操作:

3)在Navicat上同時(shí)打開生產(chǎn)庫和備份庫,本來對(duì)備份庫進(jìn)行操作,光標(biāo)誤選中了生產(chǎn)庫,執(zhí)行“DROP TABLE DBFWUSERS”敏感表,操作被攔截:

4)同時(shí),具備審計(jì)記錄時(shí)候追蹤查詢,可以追溯到訪問源以及執(zhí)行的詳情:


有效的審批機(jī)制
1)通過數(shù)據(jù)庫安全運(yùn)維業(yè)務(wù)標(biāo)準(zhǔn)化審批流程,規(guī)范操作,對(duì)數(shù)據(jù)庫高危操作通增加人工交叉審核機(jī)制,使得流程規(guī)范化。具體操作步驟如下:

2)申請(qǐng)人需要對(duì)數(shù)據(jù)庫進(jìn)行操作,需要用自己的賬號(hào)登錄DBCtrl,發(fā)起審批流程:

3、申請(qǐng)完的任務(wù)自動(dòng)分配到有權(quán)限的審批人,審批人根據(jù)提交的操作詳情,人工審核是否批準(zhǔn)該操作執(zhí)行:

4.如果審批人認(rèn)為高危不合規(guī)操作,駁回操作申請(qǐng),并告知駁回理由,申請(qǐng)人收到審批結(jié)果,該操作不會(huì)被執(zhí)行:


以上,是運(yùn)用數(shù)據(jù)庫安全運(yùn)維的技術(shù)手段進(jìn)行了場(chǎng)景還原,并通過實(shí)際操作驗(yàn)證了兩個(gè)思路的可行性??偨Y(jié)下來,只要針對(duì)數(shù)據(jù)庫安全運(yùn)維的威脅點(diǎn),建立相應(yīng)的操作流程管理制度,讓技術(shù)手段參與操作流程,就可以避免刪庫跑路,讓運(yùn)維人員不再“背鍋”,讓管理者睡個(gè)好覺。