又一P1故障,鍋比臉圓
好久沒(méi)遇到故障了,以至于技術(shù)老大在公司會(huì)議上,都成了隱形的存在,除了匯報(bào)進(jìn)度一無(wú)是處,這是不能容忍的。
只有有問(wèn)題才能驅(qū)動(dòng)團(tuán)隊(duì)的成長(zhǎng)。風(fēng)平浪靜的時(shí)候,公司領(lǐng)導(dǎo)以為你做的不好,沒(méi)有暴露風(fēng)險(xiǎn):既然已經(jīng)做的這么完美了,要你何用。
所以做的太好了,對(duì)團(tuán)隊(duì)來(lái)說(shuō)未必是一件好事---尤其是對(duì)于有受迫害妄想癥的公司來(lái)說(shuō)。
上面這個(gè)截圖,我已經(jīng)見(jiàn)過(guò)很多次了,展示了一些無(wú)奈的現(xiàn)實(shí)。對(duì)于團(tuán)隊(duì)來(lái)說(shuō),也沒(méi)啥兩樣。
及時(shí)制造問(wèn)題,是一個(gè)合格的管理者應(yīng)盡的責(zé)任。老板罵你一頓,然后接下來(lái)繼續(xù)倚仗你;比老板對(duì)你客客氣氣,然后接下來(lái)扔你進(jìn)火坑,要妙的多。
打是親,罵是愛(ài),客客氣氣要完蛋。
這就是劣幣驅(qū)逐良幣,公司管理要避免出現(xiàn)這種情況。但我們今天的主題不是這,而是一個(gè)P1故障。
這不,昨天下午,公司領(lǐng)導(dǎo)的電話(huà)就被打爆了:
“商戶(hù)的賬號(hào)都登陸不上了,單點(diǎn)登錄崩了么?”
“這次影響面很大,用戶(hù)什么都操作不了了,系統(tǒng)要完玩么?”
“抓緊處理!出了這么大的事,要協(xié)調(diào)起來(lái)!”
“查一下操作記錄!是不是有人刪庫(kù)。”
事情很大,有客戶(hù)直接call了老板。圣旨層層傳遞,終于到了苦逼的研發(fā)部。
躲在角落里的我,一臉蒙圈。趕緊使用測(cè)試賬號(hào)登錄后臺(tái)。
您輸入的密碼錯(cuò)誤,請(qǐng)稍后再試。
這也難怪有人想到了刪庫(kù)。最近互聯(lián)網(wǎng)戾氣嚴(yán)重,頻繁出現(xiàn)玉石俱焚的事件。在各主管毫無(wú)掩飾的壓迫和剝削下,這玩意一不小心就中彩了。
所有人都手忙腳亂的忙活起來(lái)。技術(shù)好的,把終端拖拽到大屏顯示器上,噼里啪啦打著命令行;權(quán)利大的,叉著胳膊抱在胸前,唾沫四濺指點(diǎn)江山;脾氣爆的,找?guī)讉€(gè)管事的負(fù)責(zé)人劈頭蓋臉一頓臭罵。
光討論組就拉了十幾個(gè),信息鋪天蓋地而來(lái)。
到了這個(gè)時(shí)候,保持冷靜是非常難能可貴的品質(zhì)。作為領(lǐng)導(dǎo),要控制自己瞎指揮的本事,少call電話(huà)少@人,保持基本的事件追蹤即可。排查人會(huì)因?yàn)榛貜?fù)你這些亂起八糟的指令,錯(cuò)過(guò)了問(wèn)題排查的黃金時(shí)段。
不要到最后過(guò)足了領(lǐng)導(dǎo)的癮,領(lǐng)教了老板的狠。
這不,直到10分鐘后,才產(chǎn)生第一條有用的信息。
有同學(xué)排查發(fā)現(xiàn),所有的用戶(hù)密碼都被重置了。密碼被重置的商戶(hù),重置時(shí)間都出奇的一致。
這也是得益于在數(shù)據(jù)庫(kù)表中加了updateTime這個(gè)字段,證明操作是由業(yè)務(wù)發(fā)起的,而不是DBA人為修改的。
DBA篡改的數(shù)據(jù),只能到binlog里去找記錄,而不會(huì)體現(xiàn)在最后更新時(shí)間上。
從這一點(diǎn)也可以說(shuō)明,要是真有人搞事的話(huà),不是一個(gè)DBA,而是一個(gè)程序員。
這個(gè)程序員不是通過(guò)update語(yǔ)句進(jìn)行的修改,而是直接調(diào)用的程序。
大多數(shù)人直接想到了陰謀論,因?yàn)樽罱影嗵萘?,又不給錢(qián),容易觸發(fā)到某個(gè)人敏感的神經(jīng)。
能這么想,證明領(lǐng)導(dǎo)們還是有點(diǎn)自知之明的。
接下來(lái),又有另外一個(gè)發(fā)現(xiàn):所有的密碼被重置之后,密碼都是不相同的。
這就更加神奇了。如果是程序員或者DBA寫(xiě)的update語(yǔ)句,那么重置密碼應(yīng)該是一致的才對(duì)。而現(xiàn)在,用戶(hù)密碼都是隨機(jī)的,難道是鬼干的么?
通過(guò)員工的挨個(gè)調(diào)研,發(fā)現(xiàn)在故障的這段時(shí)間里,并沒(méi)有代碼的發(fā)版行為,可以排除因?yàn)楣δ艿@個(gè)影響因素。再說(shuō)了,這個(gè)影響因素也不能亂報(bào),容易讓老板對(duì)員工的產(chǎn)出產(chǎn)生懷疑:怎么過(guò)了這么長(zhǎng)時(shí)間連個(gè)版本都沒(méi)更新,一TM更新就出問(wèn)題了。
那大概率是外部搞鬼了??赡苁怯腥嗽诠?。
很久之前,老板被人安利后,一拍腦袋,決定購(gòu)買(mǎi)某大廠(chǎng)的安全服務(wù)。技術(shù)調(diào)研之后,發(fā)現(xiàn)并沒(méi)有什么卵用,于是婉拒大廠(chǎng)。
正打算放棄的時(shí)候,服務(wù)就出問(wèn)題了。流量和漏洞鋪天蓋地而來(lái),最終老老實(shí)實(shí)買(mǎi)了安全檢測(cè)和安全防護(hù)。
怎么就這么巧。
還有一次,有個(gè)小伙來(lái)應(yīng)聘,說(shuō)你們的系統(tǒng)千瘡百孔。技術(shù)總監(jiān)認(rèn)為他在吹牛皮,無(wú)視之,水都沒(méi)喝就讓走了。結(jié)果,在晚上服務(wù)受到了瘋狂的攻擊,接近癱瘓。
怎么就這么巧。
百因必有果...
但這種得罪人的事,公司沒(méi)少干,一時(shí)間還真想不出是得罪了哪位大神。領(lǐng)導(dǎo)們托著下巴冥思苦想,不得要領(lǐng)。要是捉不住這個(gè)攻擊者,這鍋就得有領(lǐng)導(dǎo)親自背了。
安全的事情,還是得專(zhuān)業(yè)的人來(lái)做,該安全團(tuán)隊(duì)的人出馬上陣了。
黑Term一開(kāi),機(jī)械鍵盤(pán)一抖,鍵盤(pán)和屏幕就晃晃悠悠滾動(dòng)起來(lái)。一個(gè)主機(jī),三個(gè)顯示器,字符流淌如優(yōu)美的生活。
這個(gè)時(shí)候,我相信安全人員的腦子是懵逼的。
因?yàn)樗l(fā)現(xiàn),事故,是由他自己引起的。
昨天,他剛剛使用了一款安全掃描引擎,然后,他在引擎中增加了一個(gè)安全掃描邏輯加弱口令驗(yàn)證檢測(cè)功能,這個(gè)邏輯在執(zhí)行期間,一直嘗試登錄,結(jié)果達(dá)到了重試次數(shù)上限,最終觸發(fā)了bug。搞死了所有用戶(hù)。
心病還須心藥醫(yī),解鈴還須系鈴人。知道了原因,措施就好辦。
安全工程師扭扭捏捏把原因告訴了面色逐漸變冷的領(lǐng)導(dǎo),心想這P1的鍋是沒(méi)得跑了。
領(lǐng)導(dǎo)心想。如果不是他平素里表現(xiàn)良好,盡職盡責(zé),除了給他個(gè)鍋帶,還要給他搞頂帽子,抓個(gè)典型。
后續(xù)的事情就容易多了,DBA從binlog里找到受影響的記錄,然后整理成SQL語(yǔ)句,然后瀟灑的一甩手,問(wèn)題就OK了。
同時(shí),這也證明了系統(tǒng)的脆弱性。假如安全工程師是競(jìng)爭(zhēng)對(duì)手的人,那事情就復(fù)雜的多了,所以安全還需要繼續(xù)建設(shè)。背鍋的同志,將功補(bǔ)過(guò)吧。
由于問(wèn)題發(fā)現(xiàn)及時(shí),并未引起較大恐慌。這極大的體現(xiàn)了組織的協(xié)調(diào)能力,和應(yīng)對(duì)緊急事件的響應(yīng)能力。
我相信,領(lǐng)導(dǎo)一定會(huì)在公司會(huì)議上大放光彩。從接下來(lái)幾天他紅撲撲的臉上,我得到了驗(yàn)證。
作者簡(jiǎn)介:小姐姐味道 (xjjdog),一個(gè)不允許程序員走彎路的公眾號(hào)。聚焦基礎(chǔ)架構(gòu)和Linux。十年架構(gòu),日百億流量,與你探討高并發(fā)世界,給你不一樣的味道。