中文文档

MinIO对象锁定

概述

MinIO对象锁定(“对象保留”)实施一次写入多次读取(Write-Once Read-Many,WORM)的不可变性, 以保护 版本对象 不可以 被删除。MinIO支持两种对象保留方式: 基于持续时间的对象保留无限期合法保留

MinIO 对象锁定功能提供了关键的数据保留合规性,并满足 SEC17a-4(f)、 FINRA 4511© 以及 CFTC 1.31©-(d)的要求。 Cohasset Associates

MinIO的对象锁定是 与AWS S3兼容的特性及API 。 本页面概述了MinIO实现的Object Locking / Retention 概念。 请参阅AWS S3文档中关于 S3对象锁如何工作 的说明, 以获取更多资源。

根据AWS S3文档中关于 S3 行为 的说明,您只能在创建存储桶时启用对象锁定。 您无法在未启用锁定的情况下创建的存储桶上启用对象锁定。 然后,您可以随时配置对象保留规则。 对象锁定需要 版本 控制 并且会隐式启用该功能。

与版本控制的交互

被WORM锁定的对象在锁过期或被明确解除之前是不可变的。 锁定是针对每个对象版本的, 其中每个版本都是独立不可变的。

如果一个应用程序对被锁定的对象执行了一个无版本的删除操作, 该操作将产生一个 删除标记 。 尝试显式删除任何WORM-locked对象都会失败,并伴有错误。 删除标记 不受 WORM锁的保护。 请参阅S3文档中关于 管理删除标记和对象生命周期 的部分 了解更多信息。

例如,考虑以下启用了默认的 GOVERNANCE Mode 锁定功能的存储桶:

$ 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 Mode 锁定默认启用 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锁 (Write-Once, Read-Many) 过期 才会生效。 由于桶设置了45天的 GOVERNANCE 保留期, 只有 data.csvv1 版本被解锁,因此有资格被删除。

教程

创建启用对象锁定

您必须在创建桶时根据S3行为启用对象锁定。 您可以通过MinIO控制台、MinIO mc CLI或使用S3兼容的SDK 来创建一个启用了对象锁定的桶。

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

MinIO控制台 Buckets管理

在MinIO控制台中,点击 创建桶 按钮以打开桶创建模态窗口。 切换到 对象锁定 选择器以在桶上 启用对象锁定。

MinIO控制台 Buckets管理

使用带有 --with-lock 选项的 mc mb 命令来 创建一个启用对象锁定的桶:

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

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

配置桶-默认对象保留

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

MinIO支持设置桶默认 每个对象保留规则。 以下示例设置桶默认保留规则。For per-object retention 对于每个对象的保留设置,请参考您首选 SDK中使用的 PUT 操作的文档。

在MinIO控制台中,选择 Buckets 部分以访问桶创建和管理功能。您可以使用 Search 栏来过滤列表。

MinIO控制台 Buckets管理

每个桶行都有一个 Manage 按钮,点击该按钮会打开相应桶的管理视图。

MinIO控制台 Buckets管理

从:guilabel:Retention 部分,选择 Enabled 。 此部分仅对启用了对象锁定的桶可见。

Set Retention Configuration 模态窗口中,设置所需桶的默认保留设置。

  • Retention Mode 下,选择:ref:COMPLIANCE <minio-object-locking-compliance>GOVERNANCE

  • Duration 字段中,选择保留持续时间的单位,可以是 Days (天)或 Years (年)。

  • Retention Validity 部分,为MinIO设置在指定保留模式下保留桶中对象的持续时间。

使用 mc retention set 命令, 配合 --recursive--default 选项, 为桶设置默认保留模式:

mc retention set --recursive --default MODE DURATION ALIAS/BUCKET
  • MODE 替换为 COMPLIANCEGOVERNANCE

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

  • ALIAS 替换为 配置的MinIO部署的 alias

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

启用合法保留期限

您可以使用MinIO控制台、MinIO的 mc 命令行界面(CLI)或使用一个与S3兼容的软件开发工具包(SDK)来启用或禁用对一个对象的无限期法律保留。

您可以对已经被 COMPLIANCEGOVERNANCE 锁定的对象施加合法保留。 即使保留锁到期,对象在合法保留下仍然保持WORM锁定。 您或具有必要权限的其他用户必须明确解除合法保留,以去除WORM锁。

在MinIO控制台中,选择 Buckets 部分以访问桶创建和管理功能。 您可以使用 Search 栏来过滤列表。

MinIO控制台 Buckets管理

每个桶行都有一个 Manage 按钮,点击该按钮会打开相应桶的管理视图。

MinIO控制台 Bucket Object Browser

导航到对象并选择它以打开对象详细信息视图。 选择 Legal Hold 按钮以切换对象的法定保留状态。

使用 mc legalhold set 命令来切换对象的合法保留状态。

mc legalhold set ALIAS/PATH
  • ALIAS 替换为 配置好的MinIO部署的 别名

  • PATH 替换为 要启用法律保留的对象的路径。

对象保留模式

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

Mode

Summary

GOVERNANCE Mode

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

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

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

合规模式

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

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

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

GOVERNANCE Mode

处于 GOVERNANCE 锁定下的对象受到保护, 不会被非特权用户执行写操作。

GOVERNANCE 锁定的对象强制执行受管理的不可变性, 对于锁定对象,具有 s3:BypassGovernanceRetention 动作的 用户可以修改锁定的对象、更改保留期限或完全解除锁定。 绕过 GOVERNANCE 保留还需要在请求中设置 x-amz-bypass-governance-retention:true 头部。

MinIO的 GOVERNANCE 锁在功能上与 S3 GOVERNANCE 模式

合规模式

处于 COMPLIANCE 锁定的对象受到保护, 无法被 所有 用户(包括 MinIO root 用户)执行写操作。

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

MinIO COMPLIANCE 锁在功能上与 S3 COMPLIANCE mode

合法保全

受到合法保留的对象受到 所有 用户的保护, 包括 MinIO root

合法保留是无限期的,并确保被锁定的对象完全不可变。 只有拥有 s3:PutObjectLegalHold 权限的特权用户可以设置或解除合法保留。

合法保留适用于对象级别。 如果您为一批对象启用合法保留,例如一个存储桶中的内容,随后在该存储桶中创建的对象不会受到影响。

合法保留是对 GOVERNANCE Mode合规模式 保留设置的补充。 一个同时受到合法保留和 治理/合规 保留规则限制的对象,将保持WORM锁定状态,直到法律保留被解除 保留规则到期。

对于被 GOVERNANCE 锁定的对象,法律保留阻止了对对象的修改,即使用户拥有绕过保留的必要权限。

Join Slack 商业支持购买咨询