aws s3 使用对象锁定

使用 S3 对象锁定 - Amazon Simple Storage Service

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

S3 对象锁定已由 Cohasset Associates 评估,可在受 SEC 17a-4、CFTC 和 FINRA 法规约束的环境中使用。有关对象锁定如何与这些法规相关的更多信息,请参阅 Cohasset Associates 合规性评估

对象锁定提供了以下两种方式来管理对象保留:保留期限和依法保留。

  • 保留期限 — 指定对象可以保持锁定状态的固定时间段。在该时间段内,您的对象将受 WORM 保护,不能被覆盖或删除。有关更多信息,请参阅 保留期限
  • 依法保留 — 提供的保护与保留期限相同,但没有到期日期。依法保留将一直有效,直至您明确将其删除。依法保留与保留期限无关。有关更多信息,请参阅 依法保留

对象版本可以同时具有保留期限和依法保留、具有其中任何一个或不具有任何一个。有关更多信息,请参阅 S3 对象锁定的工作原理

对象锁定仅适用于受版本控制的存储桶,保留期限和依法保留则适用于单个对象版本。当您锁定某一对象版本时,Amazon S3 会将锁定信息存储在该对象版本的元数据中。对对象实施保留期限或依法保留仅保护在请求中指定的版本。它不阻止创建该对象的新版本。

如果您将一个与现有的受保护对象键名相同的对象放在存储桶中,Amazon S3 将创建该对象的新版本、将其存储在请求的存储桶中,并将该请求报告为已成功完成。现有受保护版本的对象将根据其保留配置保持锁定状态。

要使用 S3 对象锁定,请按照以下基本步骤进行操作:

  1. 创建新存储桶,同时启用对象锁定。
  2. (可选)为放在存储桶中的对象配置默认保留期限。
  3. 将要锁定的对象放入存储桶。
  4. 将保留期限和/或依法保留应用于要保护的对象。

有关配置和管理 S3 对象锁定的信息,请参阅以下部分:

主题

S3 对象锁定的工作原理 - Amazon Simple Storage Service

S3 对象锁定提供两种保留模式:

  • 监管模式
  • 合规性模式

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

在监管 模式中,除非用户具有特殊权限,否则用户不能覆盖或删除对象版本,或更改其锁定设置。使用监管模式,您可以保护对象以免被大多数用户删除,但您仍可向部分用户授予在必要时更改保留设置或删除对象的权限。您还可以在创建合规性模式保留期限之前使用监管模式测试保留期限设置。

要覆盖或删除监管模式保留设置,用户必须具有 s3:BypassGovernanceRetention 权限,并且必须在需要覆盖监管模式的任何请求中显式包含 x-amz-bypass-governance-retention:true 作为请求标题。

注意

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

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

注意

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

保留期限

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

可通过显式方式或通过存储桶默认设置对对象版本施加保留期限。将保留期显式应用于对象版本时,即为对象版本指定保留到期日期。Amazon S3 存储在对象版本的元数据中设置的 Retain Until Date,并保护对象版本,直到保留期限到期。

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

注意

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

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

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

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

依法保留

对象锁定还可以对对象版本进行合法保留。与保留期限相似,依法保留可防止对象版本被覆盖或删除。但是,依法保留没有关联的保留期限,在删除之前将一直有效。拥有 s3:PutObjectLegalHold 权限的任何用户均可自由实施和删除依法保留。有关 Amazon S3 权限的完整列表,请参阅Amazon S3 的操作、资源和条件键

依法保留与保留期限无关。只要包含对象的存储桶已启用对象锁定,您便可实施和删除依法保留,无论指定的对象版本是否已设置保留期限。对对象版本实施依法保留不会影响该对象版本的保留模式或保留期限。

例如,如果您对某一对象版本实施依法保留,同时该对象版本也受保留期限保护。如果保留期限过期,该对象不会失去其 WORM 保护。依法保留将继续保护该对象,直至授权用户明确将其删除。与之相似,如果您在对象版本的保留期限生效时删除依法保留,该对象版本将一直受保护,直至保留期限过期。

要使用对象锁定,您必须为存储桶启用它。您还可以选择配置将应用于存储桶中放置的新对象的默认保留模式和保留期限。有关更多信息,请参阅 使用控制台配置 S3 对象锁定

存储桶配置

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

注意

使用 S3 Object Lock 时,请确保考虑您的加密技术。例如,如果您通过来使用服务器端加密 AWS KMS 密钥,请考虑可能删除的密钥如何与 S3 Object Lock 交互。考虑对密钥的保护也可能很重要。

启用 S3 对象锁定

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

注意

  • 您只能为新存储桶启用对象锁定。如果您要为现有存储桶开启对象锁定,请联系 AWS Support。
  • 如果您创建存储桶时启用了对象锁定,Amazon S3 会自动为该存储桶启用版本控制。
  • 如果您创建存储桶时启用了对象锁定,您将无法为该存储桶禁用对象锁定或暂停版本控制。

有关在控制台上启用对象锁定的信息,请参阅使用控制台配置 S3 对象锁定

默认保留设置

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

提示

如果要为放入存储桶的所有新对象版本强制执行存储桶默认保留模式和期限,请设置存储桶默认值并拒绝用户配置对象保留设置的权限。然后,Amazon S3 将默认保留模式和期限应用于放入存储桶中的新对象版本,并拒绝任何放置包含保留模式和设置的对象的请求。

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

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

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

重要

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

注意

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

所需权限

对象锁定操作需要特定的权限。有关所需权限的更多信息,请参阅示例 — 对象操作。有关将条件与权限结合使用的信息,请参阅 Amazon S3 条件键示例

管理对象锁定

PDF

RSS

您可以使用 AWS CLI、AWS 开发工具包和 Amazon S3 REST API 配置和查看锁定信息、设置保留期限、管理删除和生命周期等。

主题

查看对象的锁定信息

您可以使用 GET Object 或 HEAD Object 命令查看 Amazon S3 对象的对象锁定状态。这两个命令都会返回指定对象版本的保留模式、Retain Until Date 和依法保留状态。

要查看对象版本的保留模式和保留期限,您必须拥有 s3:GetObjectRetention 权限。要查看对象版本的依法保留状态,您必须拥有 s3:GetObjectLegalHold 权限。如果您对某一对象版本执行 GET 或 HEAD 操作但没有查看其锁定状态所需的权限,该请求将成功。但它不会返回您无权查看的信息。

要查看存储桶的默认保留配置(如果有),应请求存储桶的对象锁定配置。为此,您必须具有 s3:GetBucketObjectLockConfiguration 权限。如果您对未启用对象锁定的存储桶请求 S3 对象锁定配置,Amazon S3 将返回错误。有关许可的更多信息,请参阅示例 — 对象操作

您可以对存储桶配置 Amazon S3 清单报告,以包括存储桶中所有对象的 Retain Until Date、object lock Mode 和 Legal Hold Status。有关更多信息,请参阅 Amazon S3 清单

绕过监管模式

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

要绕过监管模式,您必须在请求中明确指明您要绕过此模式。为此,在请求中包含 x-amz-bypass-governance-retention:true 标头,或将等效参数用于通过 AWS CLI 或 AWS 开发工具包发出的请求。如果您具有绕过监管模式所需的权限,则 AWS Management Console会自动将此标头应用于通过控制台发出的请求。

注意

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

配置事件和通知

可在 S3 对象锁定存储桶中为对象级操作配置 Amazon S3 事件。当 PUT Object、HEAD Object 和 GET Object 调用包含对象锁定元数据时,这些调用的事件将包含这些元数据的值。在为对象添加或更新对象锁定元数据时,这些操作也会触发事件。只要您 PUT 或 GET 对象保留或依法保留信息,便会发生这些事件。

有关 Amazon S3 事件的更多信息,请参阅Amazon S3 事件通知

您可以使用 Amazon S3 事件通知来跟踪使用 对对象锁定配置及数据进行的访问和更改AWS CloudTrail 有关 CloudTrail 的信息,请参阅 AWS CloudTrail 文档

您还可以使用 Amazon CloudWatch 根据此数据生成警报。有关 CloudWatch 的信息,请参阅 Amazon CloudWatch 文档

设置保留设置

可以使用存储桶策略为存储桶设置允许的最小和最大保留期限。您可以使用 s3:object-lock-remaining-retention-days 条件键完成此操作。最长保留周期为 100 年。

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

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

注意

如果您的存储桶是复制策略的目标存储桶并且您想要为使用复制创建的对象副本设置最小和最大允许保留期,则您必须在存储桶策略中包含 s3:ReplicateObject 操作。

有关更多信息,请参阅以下主题:

管理删除标记和对象生命周期

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

注意

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

对象生命周期管理配置将继续正常应用于受保护的对象,包括实施删除标记。但是,受保护的对象版本将一直保持安全状态,不会被生命周期配置删除或覆盖。有关管理对象生命周期的更多信息,请参阅管理存储生命周期

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

您可以将 S3 对象锁定与复制结合使用,以允许在相同或者跨不同 AWS 区域 中的 S3 存储桶对锁定的对象及其保留元数据进行自动异步复制。如果您使用复制,源存储桶 中的对象会被复制到目标存储桶。有关更多信息,请参阅 复制对象

要设置 S3 对象锁定以及复制,您可以选择以下选项之一。

选项 1:首先启用对象锁定

  1. 在目标存储桶上启用对象锁定,或同时在源和目标存储桶上启用对象锁定。
  2. 设置源存储桶和目标存储桶之间的复制。

选项 2:首先设置复制

  1. 设置源存储桶和目标存储桶之间的复制。
  2. 只在目标存储桶上启用对象锁定,或同时在源和目标存储桶上启用对象锁定。

在上述选项中启用对象锁定时,必须在创建存储桶时完成,或者如果使用现有存储桶,则必须联系 AWS Support。此要求是为了确保正确地配置复制。

在您联系 AWS Support 之前,检查以下有关设置对象锁定以及复制的要求:

  • Amazon S3 目标存储桶上必须已启用对象锁定。
  • 您必须在用于设置复制的 AWS Identity and Access Management (IAM) 角色中授予对源 S3 存储桶的两项新权限。这两项新权限是 s3:GetObjectRetention 和 s3:GetObjectLegalHold。如果这个角色有 s3:Get* 权限,则它已经满足要求了。有关更多信息,请参阅 设置权限

有关 S3 对象锁定的更多信息,请参阅 S3 对象锁定的工作原理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值