一个拼写错误,微软误删了十七个数据库
新闻资讯
2023-06-07 18:00
105
0
上个月末,南巴西地区的Microsoft Azure DevOps服务突然停止了约十个小时。事后,微软首席软件工程经理Eric Mattingly为此次故障向用户道歉,并揭示了故障的原因:一个简单的代码拼写错误导致17个生产数据库被删除。
Mattingly解释说,Azure DevOps工程师偶尔需要对生产数据库进行快照,以便调查客户升级或评估潜在的性能改进。为了确保这些快照数据库得到清理,每天都会运行一个超过特定期限便会将其删除的后台作业。在最近一个敏捷开发的冲刺中,Azure DevOps工程师执行了一个代码升级,用受支持的Azure.ResourceManager.* NuGet包替换已弃用的Microsoft.Azure.Managment.*包。这导致了一个大的拉取请求,交换了旧包中的API调用和新包中的API调用。拼写错误就隐藏在这个拉取请求中,该错误将删除Azure SQL数据库的调用替换成删除托管数据库的Azure SQL Server的调用。由于错误的代码只在特定条件下运行,因此没能被现有测试覆盖。根据Mattingly的事件报告,在将Sprint 222部署到Ring 0(微软的内部Azure DevOps 组织)时,由于其中不存在任何快照数据库,所以没有执行删除作业。几天后,软件更改被部署到南巴西的客户环境Ring 1。该环境中存在能够触发错误的快照数据库,导致后台作业删除了整个Azure SQL Server和所有17个生产数据库。自此不再能处理任何客户流量,所幸数据并未丢失。在此次事件后,微软表示会采取一系列措施以避免未来发生类似的问题,例如确保所有快照数据库创建在不同的Azure SQL Server上,以避免与生产数据库冲突。在别人的网站文件里面放入网页木马或者是将代码潜入到对方正常的网页文件里,以使浏览者中马。
文章引用微信公众号"看雪学苑",如有侵权,请联系管理员删除!