MinIO对象锁定
概述
MinIO对象锁定(“对象保留”)实施一次写入多次读取(Write-Once Read-Many,WORM)的不可变性, 以保护 版本对象 不可以 被删除。MinIO支持两种对象保留方式: 基于持续时间的对象保留 和 无限期合法保留 。
MinIO 对象锁定功能提供了关键的数据保留合规性,并满足 SEC17a-4(f)、 FINRA 4511© 以及 CFTC 1.31©-(d)的要求。 Cohasset Associates 。
Delete operations 按照正常情况
versioned buckets , 其中 MinIO 会为对象创建一个 DeleteMarker
。
但是, 对象的非 non-Delete 版本仍受保留规则的保护,不受特定删除或覆盖尝试的影响。 不受任何特定删除或覆盖尝试的影响。
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.csv
的 v1
版本被解锁,因此有资格被删除。
教程
创建启用对象锁定
您必须在创建桶时根据S3行为启用对象锁定。
您可以通过MinIO控制台、MinIO mc
CLI或使用S3兼容的SDK
来创建一个启用了对象锁定的桶。
配置桶-默认对象保留
您可以使用MinIO控制台、MinIO的 mc
CLI或
使用一个S3兼容的SDK来配置对象锁定规则 (“对象保留”) 。
MinIO支持设置桶默认 和 每个对象保留规则。
以下示例设置桶默认保留规则。For per-object retention
对于每个对象的保留设置,请参考您首选
SDK中使用的 PUT
操作的文档。
在MinIO控制台中,选择 Buckets 部分以访问桶创建和管理功能。您可以使用 Search 栏来过滤列表。

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

从: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
替换为 COMPLIANCE 或 GOVERNANCE 。将
DURATION
替换为 对象锁定保持有效的持续时间。将
ALIAS
替换为 配置的MinIO部署的alias
。将
BUCKET
替换为 要设置默认保留规则的桶的名称。
启用合法保留期限
您可以使用MinIO控制台、MinIO的 mc
命令行界面(CLI)或使用一个与S3兼容的软件开发工具包(SDK)来启用或禁用对一个对象的无限期法律保留。
您可以对已经被 COMPLIANCE 或 GOVERNANCE 锁定的对象施加合法保留。 即使保留锁到期,对象在合法保留下仍然保持WORM锁定。 您或具有必要权限的其他用户必须明确解除合法保留,以去除WORM锁。
对象保留模式
MinIO实现了以下 S3对象锁定模式 :
Mode |
Summary |
---|---|
防止任何会由非特权用户对对象或其锁定设置 进行修改或变异的操作。 具有对桶或对象上的 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
锁定的对象,法律保留阻止了对对象的修改,即使用户拥有绕过保留的必要权限。