搞安全的同學都知道,有一個非常著名的網路安全模型叫 PDR 模型,提出者是美國國際網際網路安全系統公司(ISS),其核心論斷是網路安全是一個時間問題,對應的公式為
Et = Dt + Rt - Pt
,其中:
- Et (Exposure) 暴露時間,系統暴露在攻擊下的時間;
- Pt (Prevent) 防禦時間,系統扛住外部攻擊的時間,或者說攻擊者成功滲透的整個時間;
- Dt (Detect) 檢測時間,安全檢測系統發現攻擊所需要的時間;
- Rt (Response) 響應時間,發現攻擊到攻擊路徑被切斷,攻擊被中止的整個時間。
PDR 模型直觀、易懂,為安全防護工作提供了比較實用的指導框架。在系統可能出現的各類故障中,安全只是其中一種,既然 PDR 模型能指導解決安全問題,那麼 PDR 模型是否也能指導解決其他故障呢?我認為是肯定的。
1 什麼是 PDR 故障模型?
對照 PDR 模型,先來看一下故障的生命週期,
從上圖可以非常直觀的看出,為了縮短故障時間(Failure Time),我們要想辦法儘可能的縮短檢測時間(Detect Time)和響應時間(Response Time),同時延長防禦時間(Prevent Time)。縮短檢測時間對應提升監控、告警能力,縮短響應時間對應提升故障修復、CI/CD能力,延長防禦時間對應提升系統的容錯能力或者說健壯性。這裡比較有意思的一點是關於防禦時間,只要我們能把防禦時間延長到足夠長(超過檢測時間和響應時間之和),那麼故障就沒有機會造成實際影響,也就等同於“消滅”了故障。
2 防火優於滅火
魏文侯曰:‘子昆弟三人其孰最善為醫?’扁鵲曰:‘長兄最善,中兄次之,扁鵲最為下。’
—— 《鶡冠子·卷下·世賢第十六》
扁鵲三兄弟中,扁鵲 Rt 能力強,二哥 Dt 能力強,大哥 Pt 能力強,但此 Pt 非彼 Pt。在上述 PDR 模型中,Pt 是指故障發生之後的防禦能力,而大哥的 Pt 能力是指故障(疾病)發生之前的防禦能力,也即防患未然的能力。
受限於各方面因素,絕大多數情況下,故障防禦時間是小於檢測時間和響應時間之和的,因此,一旦系統出現故障,就難免會造成一些實際影響。那麼有沒有辦法避免這類影響呢?有的,向扁鵲大哥學習,防火優於滅火。如何做到防患未然呢?以史為鑑,可以知興替,也即故障覆盤。
故障覆盤是一件極其重要的事情,它是如此重要以至於大多數人都低估了其重要性。小到個人,大到公司,從大大小小各類故障中總結經驗教訓,學到很多書本上學不到的知識,從而獲得最大程度的提升,這也是成長性團隊的重要特徵。網上關於故障覆盤的資料很多,這裡我只想強調三點,
第一,故障覆盤越早做效果越好(當然是在故障被妥善處理之後)。注意,處理故障過程中,應儘可能保留故障現場,同時做好過程資料備份,以便事後進行復盤。
第二,在整個故障覆盤過程中,應秉持對事不對人的原則,一切從事實出發,用事實說話,這樣才能找到真正的根本原因,並據此提出行之有效的改進措施。
第三,每項改進措施應指定唯一的責任人,並區分優先順序,對於高優先順序的改進措施,應明確閉環時間(比如 1 個月)。
最後,推薦一篇陳皓老師的專欄(文末參考資料第 2 篇),同時我在附錄裡貼了一份故障覆盤報告模板,希望大家在平時工作中能夠用到。
3 小結
在今天這篇文章裡,我首先提出了一個專門用於故障處理的 PDR 模型,然後給出了一些故障覆盤的原則,希望能夠對你有所幫助。歡迎你到我的留言板留言交流,和大家一起過過招。
附錄
故障覆盤報告模板
參考
- 左耳聽風-故障處理最佳實踐:應對故障
- 左耳聽風-故障處理最佳實踐:故障改進
- [餘晟以為-淺談“黑匣子思維”](