Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Amazon S3 对象锁定概览

您可以使用 Amazon S3 object lock通过 一次写入,多次读取 (WORM) 模式存储对象。它可帮助您防止在固定的时间段内或无限期地删除或覆盖对象。您可以​使用 Amazon S3 object lock满足需要 WORM 存储的法规要求,或添加一个额外的保护层来防止对象被更改和删除。

有关管理 Amazon S3 对象的锁定状态的信息,请参阅管理 Amazon S3 对象锁定

以下各部分介绍 Amazon S3 object lock的主要功能。

保留模式

Amazon S3 object lock提供两种保留模式

  • 监管模式

  • 合规性模式

这些保留模式对对象应用不同级别的保护。可将任意一种保留模式应用于受 Amazon S3 object lock保护的任意对象版本。

监管 模式中,除非用户具有特殊权限,否则用户不能覆盖或删除对象版本,或更改其锁定设置。使用监管模式,您可以保护对象以免被大多数用户删除,但您仍可向部分用户授予在必要时更改保留设置或删除对象的权限。您还可以在创建合规性模式保留周期之前使用监管模式测试保留周期设置。要覆盖或删除监管模式保留设置,用户必须具有 s3:BypassGovernanceMode 权限,并且必须在需要覆盖监管模式的任何请求中显式包含 x-amz-bypass-governance-retention:true 作为请求标题。

注意

默认情况下,Amazon S3 控制台包括 x-amz-bypass-governance-retention:true 标头。如果您试图删除受管理模式保护的对象并且拥有 s3:BypassGovernanceModes3:GetObjectLockConfiguration 或者 s3:GetObjectRetention 权限,此操作将会成功。

合规性 模式中,任何用户都不能覆盖或删除受保护的对象版本,包括 AWS 账户中的根用户。在合规性模式下锁定对象后,其保留模式便无法更改,其保留周期也不能缩短。合规性模式确保在保留周期内无法覆盖或删除对象版本。

注意

您在施加或更改对象锁定时更新对象版本的元数据不会覆盖对象版本或重置其 Last-Modified 时间戳。

保留周期

保留周期 可在固定时间内保护对象版本。当您对对象版本施加保留周期时,Amazon S3 会在该对象版本的元数据中存储时间戳,以指示保留周期的到期时间。在保留周期到期后,便可覆盖或删除对象版本,除非您还对该对象版本施加了依法保留。

可通过显式方式或通过存储桶默认设置对对象版本施加保留周期。当您以显式方式对对象版本应用保留周期时,需为对象版本指定 Retain Until Date (保留到期日期)。 Amazon S3 将“Retain Until Date”(保留到期日期) 设置存储在对象版本的元数据中,并将在保留周期到期之前一直保护对象版本。

在使用存储桶默认设置时,不需指定“Retain Until Date”(保留到期日期)。而应指定放入存储桶的每个对象版本应被保护的持续时间,以天或年为单位。当您将对象放入存储桶时,Amazon S3 通过将该对象版本的创建时间戳加上指定的持续时间来计算其“Retain Until Date”(保留到期日期)。它将“Retain Until Date”(保留到期日期) 存储在对象版本的元数据中。然后,该对象版本将得到保护,与您对该对象版本施加带保留周期的锁定完全相同。

注意

如果您将对象版本放入存储桶的请求包含显式保留模式和周期,则这些设置将覆盖该对象版本的任何存储桶默认设置。

与所有其他 Amazon S3 object lock设置一样,保留周期适用于各个对象版本。单个对象的不同版本可以具有不同的保留模式和周期。

例如,如果您将 15 天的对象放入 30 天保留周期,并将一个保留周期为 60 天的同名对象 PUT 到 Amazon S3 中。在这种情况下,您的 PUT 操作将成功,Amazon S3 将创建一个保留周期为 60 天的新对象版本。较旧版本将保持其原来的保留周期,并且可在 15 天内删除。

可在对对象版本应用保留设置后延长保留周期。要执行此操作,您需对该对象版本提交新锁定请求,其 Retain Until Date 比当前为该对象版本配置的保留到期日期晚。Amazon S3 将用更长的新周期替换现有的保留周期。有权实施对象保留周期的任何用户都可为在任一模式下锁定的对象版本延长保留周期。

Amazon S3 object lock还允许您对对象版本实施依法保留。与保留周期相似,依法保留可防止对象版本被覆盖或删除。但是,依法保留没有关联的保留周期,在删除之前将一直有效。拥有 s3:PutObjectLegalHold 权限的任何用户均可自由实施和删除依法保留。

依法保留与保留周期无关。只要包含对象的存储桶已启用 Amazon S3 object lock,您便可实施和删除依法保留,无论指定的对象版本是否已设置保留周期。对对象版本实施依法保留不会影响该对象版本的保留模式或保留周期。例如,如果您对某一对象版本实施依法保留,同时该对象版本也受保留周期保护。如果保留周期过期,该对象不会失去其 WORM 保护。依法保留将继续保护该对象,直至授权用户明确将其删除。与之相似,如果您在对象版本的保留周期生效时删除依法保留,该对象版本将一直受保护,直至保留周期过期。

存储桶配置

要使用 Amazon S3 object lock,您必须为存储桶启用它。您还可以选择配置将应用于存储桶中放置的新对象的默认保留模式和保留周期。

启用对象锁定

在锁定任何对象之前,您必须配置要使用 Amazon S3 object lock的存储桶。为此,您应指定要启用 Amazon S3 object lock的存储桶的创建时间。为 Amazon S3 object lock配置存储桶后,便可使用保留周期和/或依法保留锁定该存储桶中的对象。

注意

  • 您只能为新存储桶启用 Amazon S3 object lock。如果您要为现有存储桶开启 Amazon S3 object lock,请联系 AWS Support。

  • 如果您创建存储桶时启用了 Amazon S3 object lock,Amazon S3 将自动为该存储桶启用版本控制。

  • 如果您创建存储桶时启用了Amazon S3 object lock,您将无法为该存储桶禁用对象锁定或暂停版本控制。

有关在控制台上启用 Amazon S3 object lock的信息,请参阅 Amazon Simple Storage Service 控制台用户指南 中的如何锁定 Amazon S3 对象?

默认保留设置

为存储桶启用 Amazon S3 object lock时,该存储桶可以存储受保护的对象。但此设置不会自动保护您放入存储桶的对象。如果您要自动保护放入存储桶的对象版本,则可配置默认保留周期。除非您在创建对象时为其明确指定了不同的保留模式和保留周期,否则默认设置将应用于放入存储桶的所有新对象。

提示

如果您要对放入存储桶的所有新对象版本实施存储桶默认保留模式和保留周期,则可为存储桶设置默认设置并拒绝用户配置对象保留设置的权限。然后,Amazon S3 将对放入存储桶的新对象版本应用默认保留模式和保留周期,并拒绝所有要放入包含保留模式和设置的对象的请求。

存储桶默认设置需要提供模式和周期。存储桶默认模式为监管合规性。有关更多信息,请参阅保留模式

不将默认保留周期描述为时间戳,而将其描述为以天或年为单位的时间段。当您将对象版本放入具有默认保留周期的存储桶时,Amazon S3 object lock会计算 Retain Until Date (保留到期日期)。它通过将该对象版本的创建时间戳加上默认保留周期来计算此日期。Amazon S3 会将得到的时间戳存储为该对象版本的保留到期日期,就像您手动计算时间戳并将其施加于对象版本一样。

默认设置仅应用于放入存储桶的新对象。对存储桶实施默认保留设置不会对该存储桶中已存在的对象实施任何保留设置。

重要

对象锁定仅应用于单个对象版本。如果您将对象放入具有默认保留周期的存储桶,并且您没有为该对象明确指定保留周期,Amazon S3 创建的对象将具有与存储桶默认设置匹配的保留周期。创建对象后,其保留周期将与存储桶的默认保留周期无关。更改存储桶的默认保留周期不会改变该存储桶中任何对象的现有保留周期。

注意

如果在存储桶上配置默认保留周期,则在此类存储桶中上传对象的请求必须包含 Content-MD5 标头。有关更多信息,请参阅 Amazon Simple Storage Service API Reference 中的 Put 对象

所需权限

Amazon S3 object lock操作需要特定的权限。有关更多信息,请参阅对象操作的权限