文档

MinIO 对象锁定

概述

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

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

MinIO 对象锁定在功能和 API 上与 AWS S3 兼容。此页面总结了 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 对象锁定模式

模式

摘要

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 模式 相同。