文档基于2025-10-10日社区最终版构建     
切换到英文版    进入演示系统    进入交流社区

MinIO Documentation

MinIO 对象锁定

概述

MinIO 对象锁定(“对象保留”)强制执行一次写入多次读取(WORM)不可变性以保护版本化对象from deletion. MinIO 支持两种基于时长的对象保留无限期法律保留保留期.

MinIO Object Locking 提供关键数据保留合规性,并满足 SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 要求,依据Cohasset Associates.

MinIO 对象锁定是与 AWS S3 功能和 API 兼容. This page summarizes Object Locking / Retention concepts as implemented by MinIO. See the AWS S3 documentation onS3 对象锁的工作原理获取更多资源。

根据规定,您只能在存储桶创建期间启用对象锁定功能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

尝试执行删除操作特定版本 of 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 只能使非当前版本过期之后保留期限 已过or已被明确解除(例如法律保留)。

例如,考虑以下存储桶包含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保留集,仅v1版本data.csv已解锁,因此符合删除条件。

教程

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

您必须在存储桶创建时启用对象锁定,这是S3的行为要求。 您可以使用MinIO创建一个启用了对象锁定的存储桶。mcCLI 或使用 S3 兼容的 SDK。

使用mc mb带有命令的--with-lock启用对象锁定功能创建存储桶的选项:

mc mb --with-lock ALIAS/BUCKET
  • 替换ALIAS随着alias已配置的 MinIO 部署。

  • 替换BUCKET随着name要创建的存储桶。

配置存储桶默认对象保留

您可以使用 MinIO 配置对象锁定规则(“对象保留”)mcCLI,或使用兼容 S3 的 SDK。

MinIO支持设置存储桶默认的per-object retention rules. 以下示例设置存储桶默认保留规则。对于每个对象的保留 设置,请参阅相关文档以了解PUT您首选的 SDK 所使用的操作。

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

mc retention set --recursive --default MODE DURATION ALIAS/BUCKET
  • 替换MODE要么要么合规 or 治理.

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

  • 替换ALIAS随着alias已配置的 MinIO 部署。

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

对象保留模式

MinIO 实现了以下功能S3 Object Locking Modes:

模式

总结

GOVERNANCE 模式

防止非特权用户执行任何会改变或修改该对象或其锁定设置的操作。

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

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

COMPLIANCE 模式

防止任何会改变或修改对象或其锁定设置的操作。

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

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

GOVERNANCE 模式

一个物体在GOVERNANCE锁受到保护,非特权用户无法执行写操作。

GOVERNANCE锁定对象对锁定的对象强制执行托管不可变性, 其中具有s3:BypassGovernanceRetentionaction可以 修改锁定的对象、更改保留期限或完全解除锁定。绕过GOVERNANCE留存也需要设置x-amz-bypass-governance-retention:trueheader 作为请求的一部分。

MinIOGOVERNANCElock在功能上与S3 GOVERNANCE 模式.

COMPLIANCE 模式

一个物体在COMPLIANCElock 受到保护,无法进行写入操作全部用户,包括MinIO root用户。

COMPLIANCE锁定的对象对已锁定的对象强制执行完全不可变性。 在配置的保留期限过去之前,您无法更改或移除锁定。

MinIOCOMPLIANCElock在功能上与S3 COMPLIANCE mode.