对象锁定注意事项 - Amazon Simple Storage Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对象锁定注意事项

Amazon S3 ​对象锁定可以协助在固定的时间长度内或无限期地阻止删除或覆盖对象。

您可以使用 Amazon S3 控制台、Amazon Command Line Interface(Amazon CLI)、Amazon SDK 或 Amazon S3 REST API 来查看或设置对象锁定信息。有关 S3 对象锁定功能的一般信息,请参阅使用对象锁定以锁定对象

重要
  • 在某个存储桶上启用对象锁定后,您将无法为该存储桶禁用对象锁定或暂停版本控制。

  • 具有对象锁定的 S3 存储桶不能用作服务器访问日志的目标存储桶。有关更多信息,请参阅 使用服务器访问日志记录来记录请求

查看锁定信息的权限

您可以使用 HeadObjectGetObject 操作,以编程方式查看 Amazon S3 对象版本的对象锁定状态。这两个操作都会返回指定对象版本的保留模式、保留到期日和依法保留状态。此外,您可以使用 S3 清单来查看 S3 存储桶中多个对象的对象锁定状态。

要查看对象版本的保留模式和保留期限,您必须拥有 s3:GetObjectRetention 权限。要查看对象版本的依法保留状态,您必须拥有 s3:GetObjectLegalHold 权限。要查看存储桶的默认保留配置,您必须具有 s3:GetBucketObjectLockConfiguration 权限。如果您对未启用 S3 对象锁定的存储桶请求对象锁定配置,则 Amazon S3 将返回错误。

绕过监管模式

如果您具有 s3:BypassGovernanceRetention 权限,则在对象未受保护时,您可对在监管模式下锁定的对象版本执行操作。这些操作包括删除对象版本、缩短保留期限,或者通过实施参数为空的新 PutObjectRetention 请求来删除对象锁定保留期限。

要绕过监管模式,您必须在请求中明确指明您要绕过此模式。为此,在 PutObjectRetention API 操作请求中包含 x-amz-bypass-governance-retention:true 标头,或将等效参数用于通过 Amazon CLI 或 Amazon SDK 发出的请求。如果您具有 s3:BypassGovernanceRetention 权限,则 S3 控制台会自动将此标头应用于通过 S3 控制台发出的请求。

注意

绕过监管模式不会影响对象版本的依法保留状态。如果某个对象版本已启用依法保留,则依法保留将保持有效,并可阻止覆盖或删除该对象版本的请求。

将对象锁定与 S3 复制结合使用

您可以将对象锁定与 S3 复制结合使用,以便跨 S3 存储桶,对锁定对象及其保留元数据启用自动异步复制。这意味着,对于复制的对象,Amazon S3 采用源存储桶的对象锁定配置。换句话说,如果源存储桶已启用对象锁定,则目标存储桶也必须启用对象锁定。如果将对象直接上传到目标存储桶(在 S3 复制之外),它将使用目标存储桶上设置的对象锁定。如果您使用复制功能,则源存储桶中的对象会被复制到目标存储桶

要在启用了对象锁定的存储桶上设置复制功能,您可以使用 S3 控制台、Amazon CLI、Amazon S3 REST API 或 Amazon SDK。

注意

要将对象锁定与复制功能结合使用,您必须在用于设置复制的 Amazon Identity and Access Management(IAM)角色中,授予对源 S3 存储桶的两项额外的权限。这两项额外的权限是 s3:GetObjectRetentions3:GetObjectLegalHold。如果角色已有 s3:Get* 权限声明,则该声明已满足要求。有关更多信息,请参阅 为实时复制设置权限

有关 S3 复制的一般信息,请参阅在区域内和跨区域复制对象

有关设置 S3 复制的示例,请参阅配置实时复制的示例

将对象锁定与加密结合使用

默认情况下,Amazon S3 会对所有新对象进行加密。您可以对加密的对象使用对象锁定。有关更多信息,请参阅 利用加密来保护数据

虽然对象锁定有助于防止删除或覆盖 Amazon S3 对象,但并不能防止加密密钥的访问权限丢失,也不能防止加密密钥遭删除。例如,如果您使用 Amazon KMS 服务器端加密为对象加密,而 Amazon KMS 密钥被删除,则对象可能会变得无法读取。

将对象锁定与 Amazon S3 清单结合使用

您可以配置 Amazon S3 清单,以便按预定的计划创建 S3 存储桶中对象的列表。对于您的对象,您可以将 Amazon S3 清单配置为包含以下对象锁定元数据:

  • 保留截止日

  • 保留模式

  • 依法保留状态

有关更多信息,请参阅 使用 S3 清单对数据进行编目和分析

使用对象锁定管理 S3 生命周期策略

对象生命周期管理配置将继续正常应用于受保护的对象,包括实施删除标记。但是,S3 生命周期过期策略无法删除对象的锁定版本。无论对象位于哪个存储类,以及在存储类之间的整个 S3 生命周期转换过程中,都将保持对象锁定。

有关管理对象生命周期的更多信息,请参阅管理对象的生命周期

使用对象锁定管理删除标记

尽管您无法删除受保护的对象版本,但您仍可为该对象创建删除标记。对对象实施删除标记不会删除对象或它的对象版本。但会使 Amazon S3 的行为方式在最大程度上与对象被删除时相似。有关更多信息,请参阅 使用删除标记

注意

无论基础对象中实施任何保留期限或依法保留,删除标记均不受 WORM 保护。

将 S3 Storage Lens 存储分析功能与对象锁定结合

要查看启用对象锁定的存储字节数和对象计数的指标,您可以使用 Amazon S3 Storage Lens 存储统计管理工具。S3 Storage Lens 存储统计管理工具是一项云存储分析功能,您可以使用它在整个组织范围内了解对象存储的使用情况和活动。

有关更多信息,请参阅 使用 S3 Storage Lens 存储统计管理工具保护您的数据

要获得指标的完整列表,请参阅 Amazon S3 Storage Lens 存储统计管理工具指标词汇表

将对象上传到启用了对象锁定的桶

如果使用对象锁定为某个对象配置了保留期,则任何上传该对象的请求都需要 Content-MD5x-amz-sdk-checksum-algorithm 标头。标头是一种在将对象上传到存储桶后验证对象完整性的方法。上传对象后,Amazon S3 会计算对象的 MD5 摘要,并将其与您提供的值进行比较。只有在两个摘要匹配的情况下,请求才会成功。S3 控制台会自动添加此标头,但您在使用 PutObject API 时必须指定此标头。

有关更多信息,请参阅 在上传对象时使用 Content-M5

配置事件和通知

您可以使用 Amazon S3 事件通知,通过 Amazon CloudTrail 跟踪在对象锁定配置及数据上进行的访问和更改。有关 CloudTrail 的信息,请参阅《Amazon CloudTrail 用户指南》中的什么是 Amazon CloudTrail?

您还可以使用 Amazon CloudWatch 根据此数据生成警报。有关 CloudWatch 的信息,请参阅《Amazon CloudWatch 用户指南》中的什么是 Amazon CloudWatch?

使用存储桶策略为保留期限设置限制

您可以使用存储桶策略为存储桶设置允许的最小和最大保留期限。最长保留周期为 100 年。

以下示例显示一个存储桶策略,它使用 s3:object-lock-remaining-retention-days 条件键将最长保留期限设置为 10 天。

{ "Version": "2012-10-17", "Id": "SetRetentionLimits", "Statement": [ { "Sid": "SetRetentionPeriod", "Effect": "Deny", "Principal": "*", "Action": [ "s3:PutObjectRetention" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket1/*", "Condition": { "NumericGreaterThan": { "s3:object-lock-remaining-retention-days": "10" } } } ] }
注意

如果您的存储桶是复制配置的目标存储桶,则对于通过使用复制功能创建的对象副本,您可以设置允许的最小和最大保留期限。为此,您必须在存储桶策略中允许 s3:ReplicateObject 操作。有关复制权限的更多信息,请参阅为实时复制设置权限

有关存储桶的更多信息,请参阅以下主题: