亚马逊AWS官方博客

预告:Amazon S3 安全更改将于 2023 年 4 月发布

从 2023 年 4 月开始,我们将对 Amazon Simple Storage Service(Amazon S3)进行两项更改,以使我们最新的存储桶安全最佳实践自动生效。这些更改将于 4 月开始生效,并将在几周内推广到所有 AWS 区域。

更改对目标区域生效后,默认情况下,该区域中所有新创建的存储桶都将启用 S3 屏蔽公共访问权限并禁用访问控制列表(ACL)。这两个选项都已经是控制台的默认选项,长期以来一直被推荐为最佳实践。这些选项将成为使用 S3 APIS3 CLIAWS SDKAWS CloudFormation 模板创建的存储桶的默认选项。

以前,默认情况下,S3 存储桶和对象一直是私有的。我们在 2018 年添加了屏蔽公共访问权限,在 2021 年添加了禁用 ACL 的功能,以便为您提供更多控制选项,并且长期以来一直建议使用 AWS Identity and Access Management(IAM)策略作为现代且更灵活的替代方案。

鉴于这一更改,我们建议采用深思熟虑的方法来创建依赖公共存储桶或 ACL 的新存储桶,我们认为大多数应用程序不需要其中任何一项。如果事实证明您的应用程序确实需要,那么您需要进行我在下面概述的更改(请务必查看您的代码、脚本、AWS CloudFormation 模板和任何其他自动化)。

进行哪些更改
我们仔细看看正在进行的更改:

S3 屏蔽公共访问权限 – 对于新创建的存储桶,将启用本文中描述的所有四个存储桶级设置:

随后尝试设置存储桶策略或授予公共访问权限的接入点策略将被拒绝,并出现“403 Access Denied(403 访问被拒绝)”错误。如果您需要一个新存储桶的公共访问权限,您可以照常创建,然后通过调用 DeletePublicAccessBlock 来删除公共访问权限屏蔽(您需要 s3:PutBucketPublicAccessBlock 权限才能调用此函数;请阅读屏蔽公共访问权限以了解有关函数和权限的更多信息)。

ACL 已禁用 – 将为新创建的存储桶启用存储桶拥有者强制设置,使存储桶 ACL 和对象 ACL 失效,并确保无论谁上传对象,存储桶拥有者都是对象拥有者。如果您想为存储桶启用 ACL,您可以在 CreateBucket 请求中将 ObjectOwnership 参数设置为 ObjectWriter,也可以在创建存储桶后调用 DeleteBucketOwnershipControls。您需要 s3:PutBucketOwnershipControls 权限才能使用该参数或调用该函数;要了解更多信息,请阅读控制对象所有权创建存储桶

随时关注
我们将在开始部署此更改时发布一篇最新资讯的初始文章,并在部署到达所有 AWS 区域时发布另一篇文章。您也可以运行自己的测试来检测行为的变化。

Jeff