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

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

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

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

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

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


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

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

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

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


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