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
配置存储桶默认对象保留
您可以使用 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
启用法律保留保留期
您可以使用 MinIO 启用或禁用对象的无限法律保留期限。mcCLI 或使用 S3 兼容的 SDK。
您可以在已经处于合法保留状态的对象上设置合法保留。合规 or 治理锁定。 即使保留锁定到期,对象在法律保留下仍保持WORM锁定状态。 您或其他具有必要权限的用户必须明确解除法律保留才能移除WORM锁定。
使用mc legalhold set切换对象法定保留状态的命令。
mc legalhold set ALIAS/PATH
对象保留模式
MinIO 实现了以下功能S3 Object Locking Modes:
模式 |
总结 |
|---|---|
防止非特权用户执行任何会改变或修改该对象或其锁定设置的操作。 具有 MinIO 会在配置的保留规则持续时间过后自动解除锁定。 |
|
防止任何会改变或修改对象或其锁定设置的操作。 没有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.
法律保留
处于法律保留状态的对象受到保护,禁止进行写入操作全部用户,包括MinIO root用户。
Legal holds are indefinite and enforce complete immutability for locked objects.
Only privileged users with the 对象锁定权限可以移除保留策略s3:PutObjectLegalHold权限可以设置或解除法律保留。
法律保留适用于对象级别。 如果您为一组对象(例如存储桶的内容)启用了法律保留,随后在该存储桶中创建的对象不会受到影响。
Legal holds 是对两者的补充GOVERNANCE 模式和COMPLIANCE 模式保留设置。
同时受法律保留约束的对象和 a GOVERNANCE/COMPLIANCE保留规则在解除法律保留之前保持WORM锁定状态和规则到期。
对于GOVERNANCE锁定的对象,法律保留阻止对对象的修改即使用户拥有绕过保留的必要权限。