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 文档中关于管理删除标记和对象生命周期的内容。
例如,考虑以下存储桶,默认情况下已启用治理模式锁定。
$ 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.csv
的v1
版本被解锁,因此可以删除。
教程
创建启用对象锁定的存储桶
您必须在创建存储桶时启用对象锁定,这与 S3 的行为一致。您可以使用 MinIO 控制台、MinIO 的mc
CLI 或使用与 S3 兼容的 SDK 创建启用对象锁定的存储桶。
选择 MinIO 控制台中的存储桶部分,访问存储桶创建和管理功能。从存储桶列表中选择存储桶行。您可以使用 搜索栏过滤列表。
单击创建存储桶按钮以打开存储桶创建模式。切换对象锁定选择器以在存储桶上启用对象锁定。
使用mc mb
命令以及--with-lock
选项来创建启用对象锁定的存储桶。
mc mb --with-lock ALIAS/BUCKET
配置存储桶默认对象保留
您可以使用 MinIO 控制台、MinIO 的mc
CLI 或使用与 S3 兼容的 SDK 配置对象锁定规则(“对象保留”)。
MinIO 支持设置存储桶默认保留规则和每个对象的保留规则。以下示例设置了存储桶默认保留。对于每个对象的保留设置,请参考您首选 SDK 使用的PUT
操作的文档。
选择 MinIO 控制台中的存储桶部分,访问存储桶创建和管理功能。您可以使用 搜索栏过滤列表。
每个存储桶行都有一个管理按钮,可以打开该存储桶的管理视图。
在保留部分,选择已启用。此部分仅对创建时启用了对象锁定的存储桶可见。
在设置保留配置模式中,设置所需的存储桶默认保留设置。
使用mc retention set
命令,以及--recursive
和--default
选项,为存储桶设置默认保留模式。
mc retention set --recursive --default MODE DURATION ALIAS/BUCKET
启用法律保留
您可以使用 MinIO 控制台、MinIO 的mc
CLI 或使用与 S3 兼容的 SDK 启用或禁用对象的无限期法律保留。
您可以对已处于合规性或治理锁定的对象放置法律保留。即使在保留锁定过期后,该对象仍将在法律保留下保持 WORM 锁定状态。您或其他具有必要权限的用户必须显式解除法律保留才能删除 WORM 锁定。
对象保留模式
MinIO 实现以下 S3 对象锁定模式
模式 |
摘要 |
---|---|
阻止任何非特权用户可能修改或更改对象或其锁定设置的操作。 拥有 MinIO 在配置的保留规则持续时间过后会自动解除锁定。 |
|
阻止任何可能修改或更改对象或其锁定设置的操作。 没有任何 MinIO 用户可以修改对象或其设置,包括 MinIO 根 用户。 MinIO 在配置的保留规则持续时间过后会自动解除锁定。 |
治理模式
处于 GOVERNANCE
锁定状态下的对象受到非特权用户写入操作的保护。
GOVERNANCE
锁定的对象对锁定对象强制实施受管理的不变性,其中拥有 s3:BypassGovernanceRetention
操作的用户可以修改锁定对象,更改保留持续时间,或完全解除锁定。绕过 GOVERNANCE
保留还要求在请求中设置 x-amz-bypass-governance-retention:true
标头。
MinIO GOVERNANCE
锁定在功能上与 S3 治理模式 相同。
合规模式
处于 COMPLIANCE
锁定状态下的对象受到所有用户写入操作的保护,包括 MinIO 根 用户。
COMPLIANCE
锁定的对象对锁定对象强制实施完全不变性。在配置的保留持续时间过后,您无法更改或移除锁定。
MinIO COMPLIANCE
锁定在功能上与 S3 合规模式 相同。
法律保留
处于法律保留状态下的对象受到所有用户写入操作的保护,包括 MinIO 根 用户。
法律保留是无限期的,并且对锁定对象强制实施完全不变性。只有拥有 s3:PutObjectLegalHold
权限的特权用户才能设置或解除法律保留。
法律保留适用于对象级别。如果您为一组对象(例如桶的内容)启用法律保留,则该桶中随后创建的对象不受影响。
法律保留是对 治理模式 和 合规模式 保留设置的补充。在法律保留和 GOVERNANCE/COMPLIANCE
保留规则下保留的对象将一直处于 WORM 锁定状态,直到法律保留解除和规则过期。
对于 GOVERNANCE
锁定的对象,即使用户具有绕过保留所需的权限,法律保留也会阻止对对象进行修改。