从昨天下午开始,CrowdStrike导致的Windows蓝屏开始刷屏,后果巨大,相信很多人已经看过,不再赘述。
IT事故不可避免。但好的管理方法和严格的管理流程,可以降低事故发生的概率,并在事故发生时控制影响范围。
从这件事来看,CrowdStrike的管理流程很可能有问题。同时,也能看出,美国这些超大公司的CISO们,草包也不少。
其实,做过类似Agent软件(包括防病毒类,终端安全类等持续在主机后台运行),无不为稳定性困扰,简单说,只要部署上量,基本没有不出事的。当然,把事情搞CrowdStrike这么大的,还比较少见。
那么,Agent软件有风险,还必须用,怎么用,才能尽量减少问题发生及控制影响范围?华为,作为一个IT供应商,是乙方,同时,作为一个很大的IT企业,是甲方。两方面的经验都有。咱们从两个角度看一下,如何降低此类问题的发生。
华为云的终端软件有两个,一个是用于安全的,一个是用于运维的,两个软件均为自研自用。其中,安全的除了自用,还给客户提供,两个软件均只支持Linux系统。
为了解决可靠性问题,防止系统风险,华为云做了许多质量保证的工作,包括
严格的代码审核。华为云本来就有Committer机制(代码经过审核后才能提交),保证代码质量,对终端软件,审核更加严格。
严格的测试。实际上华为云发展时间已经比较长,现网的操作系统比较复杂,多品牌,多内核,多版本的情况非常普遍,要保证完整覆盖,其实比较难。经常会在某些地方遇到些奇怪的操作系统导致问题,结果就是要么升级系统,要么在测试环境里增加相关操作系统的设备。部分情况下甚至添加黑名单,确保这些特殊系统就不要升级了。
按范围逐步升级。这个是关键。测试环境永远模拟不了现网。所以,现网遵循按范围逐步升级的方案。先小范围试用,稳定后,再扩大范围,逐步进行。升级有预案,且每次讨论。
随时准备回滚和卸载。所有的升级首先要准备回滚方案,在升级后设置观察期,若出现异常,随时回滚,必要时批量卸载。其实Agent类软件的回滚都不太理想,基本以卸载为主。这些软件是保证系统安全的,在系统可用和安全之间,首先选系统可用。
多人操作。所有重要的升级均要多人同时在场。涉及手工操作,命令行要提前准备讨论,现场双人操作监督。
严格按上述规则,每一次大版本的升级,都是非常挑战的任务,但管理到位,即使出事,问题范围也可以控制,能比较好的避免大批量故障的产生。当然,按墨菲定律,该发生的,总是会发生,小事故经常有,运维的大事故也有一次,导致不少领导下课,有个阿里来的高级专家,出师未捷身先死。
华为还有个很重要的部门要面对此类问题,就是华为IT.
华为IT管理着很大量的服务器,及二十余万台终端,一旦批量故障,对生产的影响不可估量,面对补丁,非常谨慎,他们主要是两个动作:
测试床测试。华为IT有专门的测试环境,简称测试床,上边有主要的运行环境。所有的补丁先上测试床升级,观察对业务的影响。
按范围逐步升级。在测试床测试通过后,按规定的范围,在服务端控制逐步升级,非工作时间升级,防止批量事故的出现。由于操作谨慎,我在华为15年,好象没感受到过批量事故的影响。
所以,解决此类问题没有银弹,就是细节管理,加谨慎操作。此次CrowdStrike如此大的批量事故,只能说操作极不谨慎,有理由怀疑他们的管理系统是不是出了问题。而众多大企业不验证,不做升级管理,更不敢想象他们的CISO都在干什么。
END