使用 S3 REST API 設定 S3 物件鎖
如果您的StorageGRID系統啟用了全域 S3 物件鎖定設置,則可以建立啟用了 S3 物件鎖定的儲存桶。您可以為每個儲存桶指定預設保留或為每個物件版本指定保留設定。
如何為儲存桶啟用 S3 物件鎖定
如果您的StorageGRID系統啟用了全域 S3 物件鎖定設置,則可以在建立每個儲存桶時選擇啟用 S3 物件鎖定。
S3 物件鎖定是一個永久設置,只有在建立儲存桶時才能啟用。建立儲存桶後,您無法新增或停用 S3 物件鎖定。
若要為儲存桶啟用 S3 物件鎖定,請使用下列任一方法:
-
使用租用戶管理器建立儲存桶。看"建立 S3 儲存桶" 。
-
使用 CreateBucket 請求建立儲存桶 `x-amz-bucket-object-lock-enabled`請求標頭。看"對 bucket 的操作" 。
S3 物件鎖定需要儲存桶版本控制,該功能在建立儲存桶時自動啟用。您無法暫停儲存桶的版本控制。看"物件版本控制" 。
儲存桶的預設保留設定
當為儲存桶啟用 S3 物件鎖定時,您可以選擇為儲存桶啟用預設保留,並指定預設保留模式和預設保留期。
預設保留模式
-
在合規模式下:
-
在達到保留截止日期之前,無法刪除該物件。
-
物件的保留截止日期可以增加,但不能減少。
-
在達到該日期之前,不能刪除物件的保留截止日期。
-
-
在治理模式下:
-
使用者 `s3:BypassGovernanceRetention`許可可以使用 `x-amz-bypass-governance-retention: true`請求標頭以繞過保留設定。
-
這些用戶可以在達到保留截止日期之前刪除物件版本。
-
這些使用者可以增加、減少或刪除物件的保留期限。
-
預設保留期
每個儲存桶可以具有以年或天為單位指定的預設保留期。
如何設定儲存桶的預設保留
若要設定儲存桶的預設保留,請使用下列任一方法:
-
從租戶管理器管理儲存桶設定。看"建立 S3 儲存桶"和"更新 S3 物件鎖定預設保留"。
-
針對儲存桶發出 PutObjectLockConfiguration 請求,指定預設模式和預設天數或年數。
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 模式下,如果保留截止日期是將來,則可以檢索對象,但不能修改或刪除它。保留截止日期可以增加,但不能減少或刪除。
-
在治理模式下,具有特殊權限的使用者可以繞過保留截止日期設定。他們可以在保留期結束之前刪除物件版本。他們還可以增加、減少甚至刪除保留截止日期。
-
-
合法保留:對物件版本套用合法保留會立即鎖定該物件。例如,您可能需要對與調查或法律糾紛相關的對象實施法律保留。合法保留沒有到期日,但會一直有效,直到明確取消。
物件的合法保留設定與保留模式和保留截止日期無關。如果物件版本處於合法保留狀態,則任何人都無法刪除該版本。
您可以使用以下內容:
-
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-mode,x-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 操作以增加、減少或刪除物件版本的保留期。