简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。
测试并演示StorageGRID 上的S3对象锁定
贡献者
建议更改
作者:Aron Klein
对象锁定提供了一个WORM模型、用于防止删除或覆盖对象。对StorageGRID 对象锁定实施情况进行了评估、以帮助满足法规要求、支持对象保留的合法保留和合规模式以及默认存储分段保留策略。
本指南将演示S3对象锁定API。
合法保留
-
对象锁定合法保持是应用于对象的简单开/关状态。
aws s3api put-object-legal-hold --bucket <bucket> --key <file> --legal-hold Status=ON --endpoint-url https://s3.company.com
-
使用GET操作对其进行验证。
aws s3api get-object-legal-hold --bucket <bucket> --key <file> --endpoint-url https://s3.company.com
{ "LegalHold": { "Status": "ON" } }
-
关闭合法保留
aws s3api put-object-legal-hold --bucket <bucket> --key <file> --legal-hold Status=OFF --endpoint-url https://s3.company.com
-
使用GET操作对其进行验证。
aws s3api get-object-legal-hold --bucket <bucket> --key <file> --endpoint-url https://s3.company.com
{ "LegalHold": { "Status": "OFF" } }
合规模式
-
对象保留是使用"保留到"时间戳完成的。
aws s3api put-object-retention --bucket <bucket> --key <file> --retention '{"Mode":"COMPLIANCE", "RetainUntilDate": "2025-06-10T16:00:00"}' --endpoint-url https://s3.company.com
-
验证保留状态
aws s3api get-object-retention --bucket <bucket> --key <file> --endpoint-url https://s3.company.com +
{ "Retention": { "Mode": "COMPLIANCE", "RetainUntilDate": "2025-06-10T16:00:00+00:00" } }
默认保留
-
将保留期限设置为天数和年数以及使用每个对象API定义的保留截止日期。
aws s3api put-object-lock-configuration --bucket <bucket> --object-lock-configuration '{"ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 10 }}}' --endpoint-url https://s3.company.com
-
验证保留状态
aws s3api get-object-lock-configuration --bucket <bucket> --endpoint-url https://s3.company.com
{ "ObjectLockConfiguration": { "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 10 } } } }
-
将对象放入存储分段中
aws s3api put-object --bucket <bucket> --key <file> --body "file" --endpoint-url https://s3.example.com
-
存储分段上设置的保留持续时间将转换为对象上的保留时间戳。
aws s3api get-object-retention --bucket <bucket> --key <file> --endpoint-url https://s3.company.com
{ "Retention": { "Mode": "COMPLIANCE", "RetainUntilDate": "2022-03-02T15:22:47.202000+00:00" } }
测试删除已定义保留的对象
对象锁定基于版本控制构建。保留是在对象的某个版本上定义的。如果尝试删除定义了保留的对象、但未指定版本、则会创建一个删除标记作为对象的当前版本。
-
删除定义了保留的对象
aws s3api delete-object --bucket <bucket> --key <file> --endpoint-url https://s3.example.com
-
列出存储分段中的对象
aws s3api list-objects --bucket <bucket> --endpoint-url https://s3.example.com
-
请注意、此对象未列出。
-
-
列出可查看删除标记的版本以及原始锁定版本
aws s3api list-object-versions --bucket <bucket> --prefix <file> --endpoint-url https://s3.example.com
{ "Versions": [ { "ETag": "\"82e8bfb872e778a4687a26e6c0b36bc1\"", "Size": 47, "StorageClass": "STANDARD", "Key": "file.txt", "VersionId": "RDVDMjYwMTQtQkNDQS0xMUVDLThGOEUtNjQ3NTAwQzAxQTk1", "IsLatest": false, "LastModified": "2022-04-15T14:46:29.734000+00:00", "Owner": { "DisplayName": "Tenant01", "ID": "56622399308951294926" } } ], "DeleteMarkers": [ { "Owner": { "DisplayName": "Tenant01", "ID": "56622399308951294926" }, "Key": "file01.txt", "VersionId": "QjVDQzgzOTAtQ0FGNi0xMUVDLThFMzgtQ0RGMjAwQjk0MjM1", "IsLatest": true, "LastModified": "2022-05-03T15:35:50.248000+00:00" } ] }
-
删除对象的锁定版本
aws s3api delete-object --bucket <bucket> --key <file> --version-id "<VersionId>" --endpoint-url https://s3.example.com
An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied