搞安全的同学都知道,有一个非常著名的网络安全模型叫 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 模型,然后给出了一些故障复盘的原则,希望能够对你有所帮助。欢迎你到我的留言板留言交流,和大家一起过过招。
附录
故障复盘报告模板
参考
- 左耳听风-故障处理最佳实践:应对故障
- 左耳听风-故障处理最佳实践:故障改进
- [余晟以为-浅谈“黑匣子思维”](
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。