二十年 AWS 之旅:从安全质疑到 FreeBSD 运行突破
【导语:科林·珀西瓦尔自 2006 年创建首个 AWS 账户后,在二十年里持续参与 AWS 服务的使用与反馈,从早期指出 AWS 安全问题,到推动 FreeBSD 在 EC2 上运行,见证了 AWS 服务的不断发展与完善。】
2006 年 4 月 10 日,科林·珀西瓦尔创建了自己的首个 AWS 账户,最初是被 Amazon S3 吸引。但早期使用时发现,AWS 请求虽有 API 密钥签名保障身份验证和完整性,但响应却无签名,且当时常见通过 HTTP 发起请求,存在响应被篡改风险,他认为添加响应签名是不错的做法。
2007 年,他对 Amazon EC2 上运行 FreeBSD 产生兴趣,还向亚马逊表达了对 Xen 安全性的担忧,并推荐了塔维斯·奥尔曼迪进行安全审计。此外,他提出 EC2 实例以只读根磁盘启动并在重启时清除内存状态的需求,18 年后 EC2 实例证明功能推出,他十分兴奋。
2007 年底,科林抱怨了 AWS 最终一致性问题,并主张采用最终已知一致性模型。2008 年初,基普·梅西让 FreeBSD 在支持 PAE 的 Xen 上运行起来,但打包后无法在 EC2 启动,这是因为 EC2 使用的 Xen 3.0 存在 bug,不支持递归页表,而升级到 Xen 3.1 会破坏现有 AMI,亚马逊为支持现有客户选择继续使用 Xen 3.0。
2008 年 4 月,Tarsnap 进入私有测试阶段,他在使用 Amazon SimpleDB 时发现签名方案规范化存在冲突问题,虽问题在 12 月才修复,但亚马逊处理过程中与他保持联系并积极改进。同年 6 月,他还发现 NextToken 值存在安全设计问题,但报告后未得到有效回应。
到 2010 年初,因 EC2 仍使用古老版本的 Xen,科林对让 FreeBSD 运行感到绝望,转向 NetBSD,仅用一周就创建了可运行的 NetBSD AMI。同年 7 月,亚马逊推出“集群计算”实例支持 HVM,但 FreeBSD 仍存在驱动程序问题。
真正的突破出现在 2010 年 9 月,新的 `t1.micro` 实例类型运行的 Xen 3.4.2 没有导致 FreeBSD 无法运行的 bug,11 月中旬他能通过 SSH 连接到 FreeBSD/EC2 的 `t1.micro` 实例,并在 12 月宣布 FreeBSD 可在该实例上使用。此后,FreeBSD 在 EC2 上的使用逐渐拓展。
2012 年,科林在排查 S3 请求错误时,发现是“卡住的位”导致问题,通过 traceroute 和发送 ping 包确定故障路由器,亚马逊最终确认并更换了硬件。同年的 re:Invent 大会上,他与 EC2 首席工程师交流,谈到利用超线程技术窃取 RSA 密钥工作,建议不要在同一核心的两个线程上同时运行两个 EC2 实例,多年后有人称此建议产生了影响。
编辑观点:科林·珀西瓦尔二十年的 AWS 经历,展现了他对技术的敏锐洞察力和执着精神。他不断发现问题并推动改进,为 AWS 安全和功能完善贡献颇多,其经历也反映了云计算技术不断发展和解决问题的过程。
