Skip to main content
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

使用S3 REST API配置S3对象锁定

贡献者

如果为StorageGRID 系统启用了全局S3对象锁定设置、则可以在启用S3对象锁定的情况下创建分段。您可以为每个存储分段指定默认保留、也可以为每个对象版本指定保留设置。

如何为存储分段启用S3对象锁定

如果为 StorageGRID 系统启用了全局 S3 对象锁定设置,则可以选择在创建每个分段时启用 S3 对象锁定。

S3对象锁定是一种永久性设置、只有在创建存储分段时才能启用。创建分段后、您无法添加或禁用S3对象锁定。

要为存储分段启用S3对象锁定、请使用以下方法之一:

S3对象锁定需要分段版本控制、创建分段时会自动启用此功能。您不能暂停分段的版本控制。请参见 "对象版本控制"

存储分段的默认保留设置

为存储分段启用S3对象锁定后、您可以选择为存储分段启用默认保留、并指定默认保留模式和默认保留期限。

默认保留模式

  • 在合规模式下:

    • 在达到保留截止日期之前、无法删除此对象。

    • 对象的保留截止日期可以增加、但不能减少。

    • 在达到该日期之前、无法删除对象的保留截止日期。

  • 在监管模式下:

    • 使用的用户 s3:BypassGovernanceRetention 权限可以使用 x-amz-bypass-governance-retention: true 请求标头以绕过保留设置。

    • 这些用户可以在达到保留截止日期之前删除对象版本。

    • 这些用户可以增加、减少或删除对象的保留截止日期。

默认保留期限

每个存储分段都可以指定默认保留期限(以年或天为单位)。

如何设置存储分段的默认保留

要设置存储分段的默认保留时间、请使用以下方法之一:

PUT 对象锁定配置

通过Put Object Lock Configuration请求、您可以设置和修改启用了S3对象锁定的存储分段的默认保留模式和默认保留期限。您还可以删除先前配置的默认保留设置。

如果将新对象版本写入存储分段、则会应用默认保留模式 x-amz-object-lock-modex-amz-object-lock-retain-until-date 未指定。默认保留期限用于计算保留截止日期IF x-amz-object-lock-retain-until-date 未指定。

如果在载入对象版本后修改了默认保留期限,则对象版本的保留日期将保持不变,不会使用新的默认保留期限重新计算。

您必须具有 s3:PutBucketObjectLockConfiguration 权限、或者作为帐户root用户来完成此操作。

Content-MD5 必须在Put请求中指定请求标头。

请求示例

此示例为存储分段启用S3对象锁定、并将默认保留模式设置为合规、将默认保留期限设置为6年。

PUT /bucket?object-lock HTTP/1.1
Accept-Encoding: identity
Content-Length: 308
Host: host
Content-MD5: request header
User-Agent: s3sign/1.0.0 requests/2.24.0 python/3.8.2
X-Amz-Date: date
X-Amz-Content-SHA256: authorization-string
Authorization: authorization-string

<ObjectLockConfiguration>
    <ObjectLockEnabled>Enabled</ObjectLockEnabled>
    <Rule>
        <DefaultRetention>
            <Mode>COMPLIANCE</Mode>
            <Years>6</Years>
        </DefaultRetention>
    </Rule>
</ObjectLockConfiguration>

如何确定存储分段的默认保留

要确定是否为存储分段启用了S3对象锁定并查看默认保留模式和保留期限、请使用以下方法之一:

  • 在租户管理器中查看存储分段。请参见 "查看S3存储分段"

  • 问题描述 获取对象锁定配置请求。

获取对象锁定配置

通过"Get Object Lock Configuration"(获取对象锁定配置)请求、您可以确定是否为存储分段启用了S3对象锁定、如果已启用、则查看是否为存储分段配置了默认保留模式和保留期限。

如果将新对象版本写入存储分段、则会应用默认保留模式 x-amz-object-lock-mode 未指定。默认保留期限用于计算保留截止日期IF x-amz-object-lock-retain-until-date 未指定。

您必须具有 s3:GetBucketObjectLockConfiguration 权限、或者作为帐户root用户来完成此操作。

请求示例

GET /bucket?object-lock HTTP/1.1
Host: host
Accept-Encoding: identity
User-Agent: aws-cli/1.18.106 Python/3.8.2 Linux/4.4.0-18362-Microsoft botocore/1.17.29
x-amz-date: date
x-amz-content-sha256: authorization-string
Authorization: authorization-string

响应示例

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIXk=
x-amz-request-id: B34E94CACB2CEF6D
Date: Fri, 04 Sep 2020 22:47:09 GMT
Transfer-Encoding: chunked
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<ObjectLockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <ObjectLockEnabled>Enabled</ObjectLockEnabled>
    <Rule>
        <DefaultRetention>
            <Mode>COMPLIANCE</Mode>
            <Years>6</Years>
        </DefaultRetention>
    </Rule>
</ObjectLockConfiguration>

如何指定对象的保留设置

启用了S3对象锁定的存储分段可以包含具有和不具有S3对象锁定保留设置的对象组合。

对象级保留设置可通过S3 REST API来指定。对象的保留设置将覆盖存储分段的任何默认保留设置。

您可以为每个对象指定以下设置:

  • 保留模式:合规性或监管。

  • *retain-until-date *:指定StorageGRID 必须保留对象版本多长时间的日期。

    • 在合规模式下、如果保留截止日期为未来日期、则可以检索对象、但无法修改或删除它。保留截止日期可以增加、但不能减少或删除此日期。

    • 在监管模式下、具有特殊权限的用户可以绕过保留截止日期设置。他们可以在对象版本的保留期限到期之前将其删除。它们还可以增加、减少甚至删除保留截止日期。

  • * 合法保留 * :对对象版本应用合法保留时,会立即锁定该对象。例如,您可能需要对与调查或法律争议相关的对象进行法律保留。合法保留没有到期日期,但在明确删除之前始终有效。

    对象的合法保留设置与保留模式和保留截止日期无关。如果某个对象版本处于合法保留状态、则任何人都无法删除该版本。

要在向存储分段添加对象版本时指定S3对象锁定设置、请使用问题描述 A "PUT 对象""PUT 对象—复制""启动多部件上传" 请求。

您可以使用以下命令:

  • x-amz-object-lock-mode,可以是合规性或监管(区分大小写)。

    备注 如果指定 x-amz-object-lock-mode、您还必须指定 x-amz-object-lock-retain-until-date
  • x-amz-object-lock-retain-until-date

    • 保留截止日期值必须采用格式 2020-08-10T21:46:00Z。允许使用小数秒,但仅保留 3 位小数(精确度为毫秒)。不允许使用其他ISO 8601格式。

    • 保留截止日期必须为未来日期。

  • x-amz-object-lock-legal-hold

    如果处于合法保留状态(区分大小写),则对象将置于合法保留状态。如果关闭了合法保留,则不会进行合法保留。任何其他值都会导致 400 错误请求( InvalidArgument )错误。

如果您使用上述任一请求标头,请注意以下限制:

  • Content-MD5 如果有、则请求标头为必填项 x-amz-object-lock-* PUT对象请求中存在请求标头。 Content-MD5 PUT对象-复制或启动多部件上传不需要。

  • 如果存储分段未启用S3对象锁定和 x-amz-object-lock-* 存在请求标头、返回400错误请求(InvalidRequest)错误。

  • PUT对象请求支持使用 x-amz-storage-class: REDUCED_REDUNDANCY 以匹配AWS行为。但是,如果在启用了 S3 对象锁定的情况下将对象载入存储分段,则 StorageGRID 将始终执行双提交载入。

  • 后续的GET或HEAD对象版本响应将包括标题 x-amz-object-lock-modex-amz-object-lock-retain-until-date,和 x-amz-object-lock-legal-hold(如果已配置)以及请求发送方是否正确 s3:Get* 权限。

您可以使用 s3:object-lock-remaining-retention-days 策略条件关键字、用于限制对象允许的最短和最长保留期限。

如何更新对象的保留设置

如果需要更新现有对象版本的合法保留或保留设置,可以执行以下对象子资源操作:

  • PUT Object legal-hold

    如果新的合法保留值为 on ,则对象将置于合法保留状态。如果合法保留值为 off ,则取消合法保留。

  • PUT Object retention

    • 模式值可以是合规性或监管(区分大小写)。

    • 保留截止日期值必须采用格式 2020-08-10T21:46:00Z。允许使用小数秒,但仅保留 3 位小数(精确度为毫秒)。不允许使用其他ISO 8601格式。

    • 如果对象版本具有现有的保留日期,则只能增加此保留日期。新的价值必须是未来的。

如何使用监管模式

拥有的用户 s3:BypassGovernanceRetention 权限可以绕过使用监管模式的对象的活动保留设置。任何删除或放置对象保留操作都必须包含 x-amz-bypass-governance-retention:true 请求标题。这些用户可以执行以下附加操作:

  • 执行删除对象或删除多个对象操作、以便在对象保留期限到期之前删除该对象版本。

    无法删除处于合法保留状态的对象。合法保留必须关闭。

  • 执行Put对象保留操作、以便在对象保留期限结束之前将对象版本的模式从监管更改为合规。

    绝不允许将模式从合规性更改为监管。

  • 执行Put Object保留操作以增加、减少或删除对象版本的保留期限。