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

使用 S3 REST API 設定 S3 物件鎖

如果您的StorageGRID系統啟用了全域 S3 物件鎖定設置,則可以建立啟用了 S3 物件鎖定的儲存桶。您可以為每個儲存桶指定預設保留或為每個物件版本指定保留設定。

如何為儲存桶啟用 S3 物件鎖定

如果您的StorageGRID系統啟用了全域 S3 物件鎖定設置,則可以在建立每個儲存桶時選擇啟用 S3 物件鎖定。

S3 物件鎖定是一個永久設置,只有在建立儲存桶時才能啟用。建立儲存桶後,您無法新增或停用 S3 物件鎖定。

若要為儲存桶啟用 S3 物件鎖定,請使用下列任一方法:

S3 物件鎖定需要儲存桶版本控制,該功能在建立儲存桶時自動啟用。您無法暫停儲存桶的版本控制。看"物件版本控制"

儲存桶的預設保留設定

當為儲存桶啟用 S3 物件鎖定時,您可以選擇為儲存桶啟用預設保留,並指定預設保留模式和預設保留期。

預設保留模式

  • 在合規模式下:

    • 在達到保留截止日期之前,無法刪除該物件。

    • 物件的保留截止日期可以增加,但不能減少。

    • 在達到該日期之前,不能刪除物件的保留截止日期。

  • 在治理模式下:

    • 使用者 `s3:BypassGovernanceRetention`許可可以使用 `x-amz-bypass-governance-retention: true`請求標頭以繞過保留設定。

    • 這些用戶可以在達到保留截止日期之前刪除物件版本。

    • 這些使用者可以增加、減少或刪除物件的保留期限。

預設保留期

每個儲存桶可以具有以年或天為單位指定的預設保留期。

如何設定儲存桶的預設保留

若要設定儲存桶的預設保留,請使用下列任一方法:

PutObjectLock配置

PutObjectLockConfiguration 請求可讓您設定和修改已啟用 S3 物件鎖定的儲存桶的預設保留模式和預設保留期。您也可以刪除先前配置的預設保留設定。

當新的物件版本被提取到儲存桶時,如果 `x-amz-object-lock-mode`和 `x-amz-object-lock-retain-until-date`未指定。如果 `x-amz-object-lock-retain-until-date`未指定。

如果在擷取物件版本後修改了預設保留期,則物件版本的保留截止日期保持不變,並且不會使用新的預設保留期重新計算。

你必須擁有 `s3:PutBucketObjectLockConfiguration`權限,或成為帳戶 root,即可完成此操作。

這 `Content-MD5`必須在 PUT 請求中指定請求標頭。

請求範例

此範例為儲存桶啟用 S3 物件鎖定,並將預設保留模式設為 COMPLIANCE,將預設保留期設為 6 年。

PUT /bucket?object-lock HTTP/1.1
Accept-Encoding: identity
Content-Length: 308
Host: host
Content-MD5: request header
User-Agent: s3sign/1.0.0 requests/2.24.0 python/3.8.2
X-Amz-Date: date
X-Amz-Content-SHA256: authorization-string
Authorization: authorization-string

<ObjectLockConfiguration>
    <ObjectLockEnabled>Enabled</ObjectLockEnabled>
    <Rule>
        <DefaultRetention>
            <Mode>COMPLIANCE</Mode>
            <Years>6</Years>
        </DefaultRetention>
    </Rule>
</ObjectLockConfiguration>

如何決定儲存桶的預設保留時間

若要確定儲存桶是否啟用了 S3 物件鎖定並查看預設保留模式和保留期,請使用下列任一方法:

  • 在租用戶管理員中查看儲存桶。看"查看 S3 儲存桶"

  • 發出 GetObjectLockConfiguration 請求。

取得物件鎖配置

GetObjectLockConfiguration 要求可讓您確定是否為儲存桶啟用了 S3 物件鎖定,如果啟用,則檢視是否為儲存桶配置了預設保留模式和保留期。

當新的物件版本被提取到儲存桶時,如果 `x-amz-object-lock-mode`未指定。如果 `x-amz-object-lock-retain-until-date`未指定。

你必須擁有 `s3:GetBucketObjectLockConfiguration`權限,或成為帳戶 root,即可完成此操作。

請求範例

GET /bucket?object-lock HTTP/1.1
Host: host
Accept-Encoding: identity
User-Agent: aws-cli/1.18.106 Python/3.8.2 Linux/4.4.0-18362-Microsoft botocore/1.17.29
x-amz-date: date
x-amz-content-sha256: authorization-string
Authorization: authorization-string

回應範例

HTTP/1.1 200 OK
x-amz-id-2: iVmcB7OXXJRkRH1FiVq1151/T24gRfpwpuZrEG11Bb9ImOMAAe98oxSpXlknabA0LTvBYJpSIXk=
x-amz-request-id: B34E94CACB2CEF6D
Date: Fri, 04 Sep 2020 22:47:09 GMT
Transfer-Encoding: chunked
Server: AmazonS3

<?xml version="1.0" encoding="UTF-8"?>
<ObjectLockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <ObjectLockEnabled>Enabled</ObjectLockEnabled>
    <Rule>
        <DefaultRetention>
            <Mode>COMPLIANCE</Mode>
            <Years>6</Years>
        </DefaultRetention>
    </Rule>
</ObjectLockConfiguration>

如何指定物件的保留設定

啟用了 S3 物件鎖的儲存桶可以包含具有和不具有 S3 物件鎖保留設定的物件的組合。

使用 S3 REST API 指定物件級保留設定。物件的保留設定會覆蓋儲存桶的任何預設保留設定。

您可以為每個物件指定以下設定:

  • 保留模式:合規或治理。

  • Retain-until-date:指定StorageGRID必須保留物件版本多久的日期。

    • 在 COMPLIANCE 模式下,如果保留截止日期是將來,則可以檢索對象,但不能修改或刪除它。保留截止日期可以增加,但不能減少或刪除。

    • 在治理模式下,具有特殊權限的使用者可以繞過保留截止日期設定。他們可以在保留期結束之前刪除物件版本。他們還可以增加、減少甚至刪除保留截止日期。

  • 合法保留:對物件版本套用合法保留會立即鎖定該物件。例如,您可能需要對與調查或法律糾紛相關的對象實施法律保留。合法保留沒有到期日,但會一直有效,直到明確取消。

    物件的合法保留設定與保留模式和保留截止日期無關。如果物件版本處於合法保留狀態,則任何人都無法刪除該版本。

若要在將物件版本新增至儲存桶時指定 S3 物件鎖定設置,請發出"放置對象""複製對象" , 或者"建立多部分上傳"要求。

您可以使用以下內容:

  • x-amz-object-lock-mode,可以是 COMPLIANCE 或 GOVERNANCE(區分大小寫)。

    註 如果您指定 x-amz-object-lock-mode,您還必須指定 x-amz-object-lock-retain-until-date
  • x-amz-object-lock-retain-until-date

    • 保留截止日期值必須採用以下格式 2020-08-10T21:46:00Z。允許使用小數秒,但只保留 3 位小數(毫秒​​精度)。不允許使用其他 ISO 8601 格式。

    • 保留截止日期必須是將來的日期。

  • x-amz-object-lock-legal-hold

    如果合法保留處於開啟狀態(區分大小寫),則該物件將被置於合法保留之下。如果合法保留處於關閉狀態,則不會設定合法保留。任何其他值都會導致 400 Bad Request (InvalidArgument) 錯誤。

如果您使用以下任何請求標頭,請注意以下限制:

  • 這 `Content-MD5`請求標頭(如果有) `x-amz-object-lock-*`請求標頭存在於 PutObject 請求中。 `Content-MD5`對於 CopyObject 或 CreateMultipartUpload 來說不是必需的。

  • 如果儲存桶未啟用 S3 物件鎖定,且 `x-amz-object-lock-*`請求標頭存在,則傳回 400 錯誤請求(InvalidRequest)錯誤。

  • PutObject 請求支援使用 `x-amz-storage-class: REDUCED_REDUNDANCY`以匹配 AWS 行為。但是,當將物件提取到啟用了 S3 物件鎖定的儲存桶中時, StorageGRID將始終執行雙重提交提取。

  • 後續的 GET 或 HeadObject 版本回應將包含標頭 x-amz-object-lock-modex-amz-object-lock-retain-until-date , 和 x-amz-object-lock-legal-hold,如果配置並且請求發送者有正確的 `s3:Get*`權限。

您可以使用 `s3:object-lock-remaining-retention-days`策略條件鍵用於限制物件的最小和最大允許保留期。

如何更新物件的保留設定

如果需要更新現有物件版本的合法保留或保留設置,您可以執行下列物件子資源操作:

  • PutObjectLegalHold

    如果新的合法保留值為 ON,則該物件將被置於合法保留之下。如果合法保留值為 OFF,則解除合法保留。

  • PutObjectRetention

    • 模式值可以是 COMPLIANCE 或 GOVERNANCE(區分大小寫)。

    • 保留截止日期值必須採用以下格式 2020-08-10T21:46:00Z。允許使用小數秒,但只保留 3 位小數(毫秒​​精度)。不允許使用其他 ISO 8601 格式。

    • 如果物件版本具有現有的保留截止日期,則只能增加它。新值必須是未來的值。

如何使用治理模式

擁有 `s3:BypassGovernanceRetention`權限可以繞過使用治理模式的物件的活動保留設定。任何 DELETE 或 PutObjectRetention 操作都必須包含 `x-amz-bypass-governance-retention:true`請求標頭。這些使用者可以執行以下附加操作:

  • 執行 DeleteObject 或 DeleteObjects 操作,在物件版本的保留期結束之前刪除該物件版本。

    處於合法保留狀態的物件無法被刪除。必須關閉合法保留。

  • 在物件的保留期結束之前,執行 PutObjectRetention 操作,將物件版本的模式從 GOVERNANCE 變更為 COMPLIANCE。

    絕不允許將模式從合規性改為治理性。

  • 執行 PutObjectRetention 操作以增加、減少或刪除物件版本的保留期。