亚马逊AWS官方博客

Amazon S3 更新 – 新推出三项安全和访问控制功能

在我们推出 Amazon S3 后一年左右,我参加了一次技术会议,在乘坐电梯时听到几位开发人员谈论,他们解决数据存储挑战的办法是“将其扔到 S3 中”。那一刻我记得非常清楚,因为听到这些意见非常偶然,而且这也是我最早被 S3 的快速普及完全震撼到的时刻之一。

自从此服务推出以来,我们为 S3 增加了数百个功能多个存储类,同时将每月每 GB 数据的存储成本降低了近 85%(S3 标准存储类的价格从 0.15 USD 降至 0.023 USD,S3 Glacier Deep Archive 存储类的成本更低至 0.00099 USD)。如今,我们的客户使用 S3 来支持各种不同的使用案例,包括数据湖备份和还原灾难恢复存档原生云应用程序

安全性和访问控制
随着 S3 的使用案例不断扩展,客户要求我们提供新的方法来管理对其任务关键型存储桶和对象的访问。我们在多年前增加了 IAM 策略,并在 2018 年增加了阻止公有访问功能。去年,我们增加了 S3 接入点(使用 Amazon S3 接入点轻松管理共享数据集)功能,以帮助您在可能包含数百个应用程序和 PB 级存储的大型环境中管理访问。

今天,我们将推出 S3 对象所有权功能,这是本月初我们推出的另外两项 S3 安全和访问控制功能的后续。所有这三个功能都旨在为您提供更多的控制和更好的灵活性:

对象所有权 – 您现在可以确保在存储桶中新创建的对象与该存储桶都拥有相同的拥有者。

存储桶拥有者条件 – 您现在可以在创建新对象或执行其他 S3 操作时确认存储桶的所有权。

通过接入点使用复制 API – 您现在可以通过接入点访问 S3 的复制 API。

您可以在所有 AWS 区域中使用所有这些新功能,无需额外付费。下面我们分别来看各个功能!

对象所有权
如果具备适当的权限,S3 已允许多个 AWS 账户将对象上传到同一存储桶,每个账户都保留对象的所有权和控制权。如果将存储桶作为数据湖或其他类型的数据存储库使用,这种多对一的上传模式可能非常方便。内部团队或外部合作伙伴都可以为大型集中式资源的创建做出贡献。借助这种模式,存储桶拥有者无法完全控制存储桶中的对象,也无法使用存储桶策略来共享对象,这可能会导致混乱。

现在,您可以借助新的存储桶级别设置,在存储桶中强制实施统一的对象所有权。这将简化许多应用程序,并且不再需要使用 Lambda 支持的自我复制功能,后者已成为目前解决这一问题的流行方法。由于此设置会改变正在上传的账户看到的行为,因此 PUT 请求必须包含 bucket-owner-full-control ACL。您还可以选择使用要求必须包含此 ACL 的存储桶策略。

要开始操作,请打开 S3 控制台,找到存储桶并查看其 Permissions(权限),单击 Object Ownership(对象所有权),然后单击 Edit(编辑):

然后选择 Bucket owner preferred(首选存储桶拥有者)并单击 Save(保存):

正如我前面提到,您可以使用存储桶策略强制实施对象所有权(请参阅关于对象所有权和此知识中心文章以了解更多信息)。

许多 AWS 服务都会将数据发送到您选择的存储桶,现在也可利用此功能。S3 服务器访问日志记录S3 清单S3 存储类分析AWS CloudTrailAWS Config 现在都可交付由您拥有的数据。您还可以在集群配置中将 fs.s3.canne.acl 设置为 BucketOwnerFullControl,从而配置 Amazon EMR 以使用此功能(了解更多)。

请注意,此功能不会更改现有对象的所有权。另外还请注意,您现在将会拥有比以前更多的 S3 对象,这可能会导致您将在报告和其他指标中看到的数字发生改变。

AWS CloudFormation 对对象所有权功能的支持正在开发中,预计将在 AWS re:Invent 大会之前准备就绪。

存储桶拥有者条件
借助此功能,您可以确认您正在写入由您拥有的存储桶。

您只需使用 expectedBucketOwner 参数或 x-amz-expected-bucket-owner HTTP 标头,将一个数字 AWS 账户 ID 传递到任何 S3 存储桶或对象 API 即可。此 ID 代表您认为拥有标的存储桶的 AWS 账户。如果存在匹配项,则请求将正常执行。如果不存在匹配项,则请求会失败,并显示 403 状态代码。

要了解更多信息,请参阅存储桶拥有者条件

通过接入点访问复制 API
S3 接入点让您能够精细控制对共享数据集的访问。您无需在存储桶上管理单个并且可能复杂的策略,只需为每个应用程序创建一个接入点,然后使用 IAM 策略来管理通过接入点执行的 S3 操作(请参阅使用 Amazon S3 接入点轻松管理共享数据集,以了解其工作原理)。

现在,您不再需要使用存储桶名称,只需使用接入点 ARN 即可将 S3 接入点与 S3 CopyObject API 结合使用(请参阅使用接入点以了解更多信息)。

立即使用新功能
正如我前面提到,您可以在所有 AWS 区域中使用所有这些新功能,无需额外付费。

Jeff