亚马逊AWS官方博客

Amazon S3 更新 – SigV2 支持停止期限延长并调整内容

您向 Amazon S3 API 发出的每个请求均必须签名以确保其真实性。在 AWS 推出初期,我们使用一种被称为签名版本 2(简写为 SigV2)的签名模型。早在 2012 年,我们就宣布推出了 SigV4。这是一种更为灵活的签名方法,并成为 2013 年以后推出的所有区域的唯一签名方法。当时,我们建议您将它用于所有新的 S3 应用程序。

去年,我们宣布我们将于本月下旬停止对 SigV2 的支持。虽然许多客户已经更新了他们的应用程序(往往除了一个简单的开发工具包更新外,无需任何其他操作)以使用 SigV4,但我们也收到了许多要求延长支持期限的请求。

新期限,新计划
根据对我们原计划的反馈,我们做出了一项十分重要的调整。具体调整内容概括如下:

原计划 — 对 SigV2 的支持将于 2019 年 6 月 24 日停止。

新计划 — 在 2020 年 6 月 24 日以后创建的新存储桶将不再支持 SigV2 签名请求,但现有存储桶将继续支持 SigV2,同时我们将与客户合作以停止使用这种较老的请求签名方法。

尽管您可以继续在现有存储桶上以及支持 SigV2 的部分 AWS 区域使用 SigV2,但我建议您迁移到 SigV4,以享受更重要的安全性和效率优势。新签名方法使用单独的专门签名密钥,该密钥衍生自长期 AWS 访问密钥。该密钥是特定于服务、区域和日期的,从而在服务和区域之间提供额外的隔离,更好底防止重复使用密钥。在我们内部,SigV4 的实施能够安全地缓存身份验证检查的结果,从而减少延迟,提高您的应用程序的总体弹性。要了解更多信息,请参阅签名版本 4 中的变化

识别使用 SigV2 的请求
S3 诞生于 2006 年前后,您或您的前身编写在那时编写的一些代码可能仍在使用,肯定会作出使用 SigV2 的请求。您可以使用 CloudTrail 数据事件S3 服务器访问日志记录来查找使用旧方法的请求并确定要更新的应用程序:

CloudTrail 事件日志 — 在每个 CloudTrail 事件条目的 additionalDataElement 中查找 SignatureVersion 元素(要了解更多信息,请参阅使用 AWS CloudTrail 确定 Amazon S3 签名版本 2 请求)。

S3 服务器访问日志记录 — 查找日志中的 SignatureVersion 元素(要了解更多详细,请参阅使用 Amazon S3 访问日志确定签名版本 2 请求)。

更新到 SigV4


“我们是否需要更改代码?”

欧洲(法兰克福)美国东部(俄亥俄)加拿大(中部)欧洲(伦敦)亚太地区(首尔)亚太地区(孟买)欧洲(巴黎)、中国(宁夏)、欧洲(斯德哥尔摩)、亚太地区(大阪本地)、AWS GovCloud( 美国东部)和亚太地区(香港)区域于 2013 年以后推出,支持 SigV4 但不支持 SigV2。如果您的代码需要访问该区域的 S3 存储桶,则它已经仅使用 SigV4。

如果您使用最新版本的 AWS 开发工具包,则您已经准备就绪或即将准备就绪,满足有关从 2020 年 6 月 24 日开始在新的存储桶上使用 SigV4 的要求。如果您使用较老版本的开发工具包,请检查从签名版本 2 转向签名版本 4中的详细版本列表以了解更多信息。

在少数情况下,您需要对代码进行一些更改。例如,如果您使用的 URL 采用 AWS Java、JavaScript (node.js) 或 Python 软件开发工具包进行预签名,则您需要在客户端配置中正确设置区域和签名版本。此外,请注意 SigV4 预签名的 URL 最长有效期为 7 天,而 SigV2 预签名的 URL 最长有效期可能长达数周或数年(几乎在所有情况下,使用有时间限制的 URL 是远远更好的实践)。使用 SigV4 可提高您的安全性,但同时也可能需要改变您创建、存储和使用预签名 URL 的方式。虽然对于开发人员而言,使用长期性的预签名 URL 更为简单和方便,但使用有限期限的 SigV4 预签名 URL 可以极大地提高安全性。

如果您使用 Amazon EMR,则您需要将集群升级到版本 5.22.0 或更高版本,从而确保发送到 S3 的所有请求都使用 SigV4 作出(请参阅 Amazon EMR 5.x 发行版以了解更多信息)。

如果您的 S3 对象面对 Amazon CloudFront 并且您要为自己的请求签名,则务必更新您的代码以使用 SigV4。如果您使用源访问身份来限制对 S3 的访问,请务必包含 x-amz-content-sha256 标头和相关的区域性 S3 域终端节点

我们可随时为您提供帮助
AWS 团队竭诚为您提供帮助,让您的 SigV4 迁移过程尽可能顺利无碍。如果您不幸遇到问题,我强烈建议您按照 AWS Support 入门中的描述联系 AWS Support。

您还可以在 Reddit 上讨论本博文

本篇作者

Jeff Barr

AWS 首席布道师; 2004年开始发布博客,此后便笔耕不辍。