功能标志无法防止CrowdStrike故障

功能标志无法防止CrowdStrike故障

💡 原文英文,约1400词,阅读约需5分钟。
📝

内容提要

全球850万台运行Microsoft Windows操作系统的计算机遭遇史上最大规模的软件故障,由网络安全公司CrowdStrike的常规软件更新引起。故障原因是配置文件问题,导致Windows系统崩溃。CrowdStrike在配置部署中存在问题,导致恢复时间较长。文章提出了预防类似事件的方法,包括测试和验证、部署和提高弹性。配置文件需要同样严谨对待,因为它不仅仅是内容,而是代码。

🔎

延伸解读

配置更新为何比代码更新更需谨慎

文章指出,配置更新比代码更新更频繁、部署更快,因此需要更加小心。CrowdStrike的Channel Files每天更新多次,但缺乏严格的测试和验证,导致错误配置引发全球故障。这提醒我们,配置变更应被视为代码变更,必须经过同样的测试和发布流程,不能因为其“数据”属性而降低标准。

分阶段部署与回滚机制的关键作用

CrowdStrike的配置更新未逐步部署,导致故障影响所有目标,且检测和回滚耗时1小时18分钟。文章建议采用分阶段部署,如内部试用、金丝雀发布,并设置足够的观察时间,以便监控发现问题。同时,必须建立快速回滚机制,确保配置更改能迅速撤销,减少故障影响。

功能标志为何不足以防止此类故障

虽然功能标志常用于分阶段发布,但文章认为它无法完全防止CrowdStrike事件。原因有三:一是全面分阶段部署需要与监控和CD管道深度集成,实施复杂;二是CrowdStrike的配置结构复杂,需要模式支持和端到端类型安全;三是根本在于配置是代码的一部分,必须用同样的工程严谨性对待,而非依赖外部工具。

提升系统弹性:配置隔离与快速失败

即使有测试和分阶段部署,坏配置仍可能进入生产环境。文章建议关键组件应具备更高弹性,例如使用eBPF交付更新,或实现“配置隔离”:新配置在组件健康运行一段时间后才被视为稳定,否则自动拒绝。同时,系统应能快速失败并大声报错,以便及时检测和恢复,避免演变为重大事故。

❓

Q&A

CrowdStrike的故障是如何发生的?

故障是由于CrowdStrike的常规软件更新引起的,具体是配置文件问题导致Windows系统崩溃。

这次故障影响了哪些关键业务?

故障影响了航空公司、银行、紧急服务和医院等关键业务。

如何预防类似的配置故障?

可以通过测试和验证、分阶段部署和提高系统弹性来预防类似故障。

CrowdStrike的配置文件有什么特别之处?

CrowdStrike的配置文件被称为“Channel Files”,其内容不当导致了内存越界读取,进而引发系统崩溃。

功能标志能否防止CrowdStrike的故障?

虽然功能标志可以帮助防止故障,但在CrowdStrike事件的规模和复杂性下,功能标志不足以完全避免问题。

配置文件应如何处理以避免故障?

配置文件应被视为代码,更新时需谨慎处理,进行充分的测试和验证。

🏷️

标签

➡️

继续阅读