文档

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 文档中的 管理删除标记和对象生命周期

例如,考虑以下具有 GOVERNANCE 模式 锁定的桶,默认情况下该桶已启用。

$ 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 只能在保留期结束后明确解除(例如,法律保留)才能过期非当前版本。

例如,考虑以下存储桶,默认情况下启用 GOVERNANCE 模式 锁定,持续 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

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

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

  • 对于 保留模式,选择 COMPLIANCEGOVERNANCE

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

  • 对于 保留有效性,设置 MinIO 保持存储桶下指定保留模式下的对象的时间长度。

使用 mc retention set 命令和 --recursive--default 选项设置存储桶的默认保留模式

mc retention set --recursive --default MODE DURATION ALIAS/BUCKET

对象保留模式

MinIO 实施了以下 S3 对象锁定模式

模式

摘要

GOVERNANCE 模式

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

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

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

COMPLIANCE 模式

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

任何 MinIO 用户都无法修改对象或其设置,包括 MinIO root 用户。

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

GOVERNANCE 模式

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

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

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

COMPLIANCE 模式

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

COMPLIANCE 锁定的对象对锁定对象强制完全不变性。在配置的保留时间过去之前,您无法更改或删除锁定。

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