Skip to main content
How to enable StorageGRID in your environment
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

測試並示範StorageGRID S3物件鎖定功能

貢獻者

物件鎖定提供WORM模型、可防止物件遭到刪除或覆寫。物件鎖定的實作係由Cohasset進行評估、以協助符合法規要求、支援合法持有和符合法規的物件保留模式、以及預設的儲存貯體保留原則。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

_ 作者: Aron Klein_