拾贝

故障模型哪家强?PDR 模型来帮忙

    arch     原创,故障

搞安全的同学都知道,有一个非常著名的网络安全模型叫 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 模型,然后给出了一些故障复盘的原则,希望能够对你有所帮助。欢迎你到我的留言板留言交流,和大家一起过过招。

附录

故障复盘报告模板

参考