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.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 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 模式 相同。
法律保留
处于法律保留状态下的对象受到保护,防止所有用户(包括 MinIO root 用户)进行写入操作。
法律保留是无限期的,并对已锁定对象强制实施完全不变性。只有拥有 s3:PutObjectLegalHold
权限的特权用户才能设置或解除法律保留。
法律保留适用于对象级别。如果您为一组对象(例如桶的内容)启用法律保留,则随后在该桶中创建的对象不受影响。
法律保留与 GOVERNANCE 模式 和 COMPLIANCE 模式 保留设置互补。同时处于法律保留和 GOVERNANCE/COMPLIANCE
保留规则下的对象将保持 WORM 锁定状态,直到法律保留被解除并且规则过期。
对于 GOVERNANCE
锁定的对象,即使用户拥有绕过保留的必要权限,法律保留也会阻止修改对象。