文档

MinIO 对象锁定

概述

MinIO 对象锁定(“对象保留”)对 版本化对象 强制执行一次写入多次读取 (WORM) 不变性,以防止删除。MinIO 支持 基于期限的对象保留无限期法律保留

MinIO 对象锁定提供了关键数据保留合规性,并满足 SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 要求,如 Cohasset Associates 所述。

MinIO 对象锁定与 AWS S3 的 功能和 API 兼容。本页总结了 MinIO 实现的对象锁定/保留概念。有关更多资源,请参阅 AWS S3 文档中关于 S3 对象锁定工作原理 的部分。

您只能在创建桶时启用对象锁定,如 S3 行为 所述。您无法在未启用锁定的桶上启用对象锁定。然后,您可以随时配置对象保留规则。对象锁定需要 版本控制,并隐式启用该功能。

与版本控制的交互

受 WORM 锁定保护的对象在锁定到期或明确解除锁定之前都是不可变的。锁定按对象版本进行,每个版本都是独立不可变的。

如果应用程序对锁定对象执行非版本化删除操作,则操作将生成一个删除标记。尝试显式删除任何 WORM 锁定对象都会导致错误。删除标记符合 WORM 锁定保护的条件。有关更多信息,请参阅 S3 文档中关于管理删除标记和对象生命周期的内容。

例如,考虑以下存储桶,默认情况下已启用治理模式锁定。

$ mc ls --versions play/locking-guide

  [DATETIME]    29B 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 v3 PUT data.csv
  [DATETIME]    32B 78b3105a-02a1-4763-8054-e66add087710 v2 PUT data.csv
  [DATETIME]    23B c6b581ca-2883-41e2-9905-0a1867b535b8 v1 PUT data.csv

尝试对data.csv特定版本执行删除操作将由于对象锁定设置而失败。

$ mc rm --version-id 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 play/data.csv

  Removing `play/locking-guide/data.csv` (versionId=62429eb1-9cb7-4dc5-b507-9cc23d0cc691).
  mc: <ERROR> Failed to remove `play/locking-guide/data.csv`.
      Object, 'data.csv (Version ID=62429eb1-9cb7-4dc5-b507-9cc23d0cc691)' is
      WORM protected and cannot be overwritten

尝试对data.csv执行非版本化删除操作将成功,并为该对象创建一个新的DeleteMarker

$ mc rm play/locking-guide/data.csv

  [DATETIME]     0B acce329f-ad32-46d9-8649-5fe8bf4ec6e0 v4 DEL data.csv
  [DATETIME]    29B 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 v3 PUT data.csv
  [DATETIME]    32B 78b3105a-02a1-4763-8054-e66add087710 v2 PUT data.csv
  [DATETIME]    23B c6b581ca-2883-41e2-9905-0a1867b535b8 v1 PUT data.csv

与生命周期管理的交互

MinIO 的对象过期将尊重任何活动的对象锁定和保留设置,这些设置适用于受过期规则涵盖的对象。

  • 对于仅对当前对象版本生效的过期规则,MinIO 会为锁定对象创建删除标记。

  • 对于对非当前对象版本生效的过期规则,MinIO 只能在保留期过后显式解除(例如法律保留)后才能过期非当前版本。

例如,考虑以下存储桶,默认情况下已启用治理模式锁定,持续 45 天。

$ mc ls --versions play/locking-guide

  [7D]    29B 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 v3 PUT data.csv
  [30D]    32B 78b3105a-02a1-4763-8054-e66add087710 v2 PUT data.csv
  [60D]    23B c6b581ca-2883-41e2-9905-0a1867b535b8 v1 PUT data.csv

当前对象创建过期规则,该规则要求对象在超过 7 天后过期,将导致为该对象生成删除标记。

$ mc ls --versions play/locking-guide

  [0D]     0B acce329f-ad32-46d9-8649-5fe8bf4ec6e0 v4 DEL data.csv
  [7D]    29B 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 v3 PUT data.csv
  [30D]    32B 78b3105a-02a1-4763-8054-e66add087710 v2 PUT data.csv
  [60D]    23B c6b581ca-2883-41e2-9905-0a1867b535b8 v1 PUT data.csv

但是,针对非当前对象(超过 7 天后过期)的过期规则只有在配置的 WORM 锁定过期后才会生效。由于存储桶具有 45 天的GOVERNANCE保留设置,因此只有data.csvv1版本被解锁,因此可以删除。

教程

创建启用对象锁定的存储桶

您必须在创建存储桶时启用对象锁定,这与 S3 的行为一致。您可以使用 MinIO 控制台、MinIO 的mc CLI 或使用与 S3 兼容的 SDK 创建启用对象锁定的存储桶。

选择 MinIO 控制台中的存储桶部分,访问存储桶创建和管理功能。从存储桶列表中选择存储桶行。您可以使用 搜索栏过滤列表。

MinIO Console Bucket Management

单击创建存储桶按钮以打开存储桶创建模式。切换对象锁定选择器以在存储桶上启用对象锁定。

MinIO Console Bucket Management

使用mc mb 命令以及--with-lock 选项来创建启用对象锁定的存储桶。

mc mb --with-lock ALIAS/BUCKET
  • ALIAS 替换为已配置的 MinIO 部署的别名

  • BUCKET 替换为要创建的存储桶的名称

配置存储桶默认对象保留

您可以使用 MinIO 控制台、MinIO 的mc CLI 或使用与 S3 兼容的 SDK 配置对象锁定规则(“对象保留”)。

MinIO 支持设置存储桶默认保留规则和每个对象的保留规则。以下示例设置了存储桶默认保留。对于每个对象的保留设置,请参考您首选 SDK 使用的PUT 操作的文档。

选择 MinIO 控制台中的存储桶部分,访问存储桶创建和管理功能。您可以使用 搜索栏过滤列表。

MinIO Console Bucket Management

每个存储桶行都有一个管理按钮,可以打开该存储桶的管理视图。

MinIO Console Bucket Management

保留部分,选择已启用。此部分仅对创建时启用了对象锁定的存储桶可见。

设置保留配置模式中,设置所需的存储桶默认保留设置。

  • 对于保留模式,请选择合规性治理

  • 对于持续时间,请选择保留持续时间的单位

  • 对于保留有效期,设置 MinIO 在存储桶的指定保留模式下保存对象的时间段。

使用mc retention set 命令,以及--recursive--default 选项,为存储桶设置默认保留模式。

mc retention set --recursive --default MODE DURATION ALIAS/BUCKET
  • MODE 替换为合规性治理

  • DURATION 替换为对象锁定生效的持续时间。

  • ALIAS 替换为已配置的 MinIO 部署的别名

  • BUCKET 替换为要设置默认保留规则的存储桶的名称。

对象保留模式

MinIO 实现以下 S3 对象锁定模式

模式

摘要

治理模式

阻止任何非特权用户可能修改或更改对象或其锁定设置的操作。

拥有 s3:BypassGovernanceRetention 权限的用户可以在桶或对象上修改对象或其锁定设置。

MinIO 在配置的保留规则持续时间过后会自动解除锁定。

合规模式

阻止任何可能修改或更改对象或其锁定设置的操作。

没有任何 MinIO 用户可以修改对象或其设置,包括 MinIO 根 用户。

MinIO 在配置的保留规则持续时间过后会自动解除锁定。

治理模式

处于 GOVERNANCE 锁定状态下的对象受到非特权用户写入操作的保护。

GOVERNANCE 锁定的对象对锁定对象强制实施受管理的不变性,其中拥有 s3:BypassGovernanceRetention 操作的用户可以修改锁定对象,更改保留持续时间,或完全解除锁定。绕过 GOVERNANCE 保留还要求在请求中设置 x-amz-bypass-governance-retention:true 标头。

MinIO GOVERNANCE 锁定在功能上与 S3 治理模式 相同。

合规模式

处于 COMPLIANCE 锁定状态下的对象受到所有用户写入操作的保护,包括 MinIO 根 用户。

COMPLIANCE 锁定的对象对锁定对象强制实施完全不变性。在配置的保留持续时间过后,您无法更改或移除锁定。

MinIO COMPLIANCE 锁定在功能上与 S3 合规模式 相同。