

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用物件鎖定來鎖定物件
<a name="object-lock"></a>

S3 物件鎖定可協助在一段固定時間內或無限期避免刪除或覆寫 Amazon S3 物件。物件鎖定會使用*單寫多讀* (WORM) 模式來存放物件。您可以使用物件鎖定協助符合要求使用 WORM 儲存的法規需求，或多加一道保護，以免物件遭到變更或刪除。

**注意**  
S3 物件鎖定經 Cohasset Associates 評定，可用於符合 SEC 17a-4、CFTC 和 FINRA 法規的環境。如需物件鎖定與上述法規有何相關性的詳細資訊，請參閱 [Cohasset Associates Compliance Assessment](https://d1.awsstatic.com/r2018/b/S3-Object-Lock/Amazon-S3-Compliance-Assessment.pdf)。

物件鎖定提供兩種管理物件保留的方式： *保留期*和*法務保存*。物件版本可以有保留期和/或法務保存。
+ **保留期**：保留期會指定一段讓物件版本保持鎖定狀態的固定期間。您可以為個別物件設定唯一保留期。此外，您還可以設定 S3 儲存貯體的預設保留期。您也可以使用儲存貯體政策中的 `s3:object-lock-remaining-retention-days` 條件金鑰來限制允許的保留期間下限和上限。此條件索引鍵可協助您建立允許的保留期。如需詳細資訊，請參閱[使用儲存貯體政策設定保留期的限制](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-retention-limits)
+ **法務保存**：法務保存提供與保留期相同的保護，但沒有過期日期。因此，在您明確移除法務保存之前，它都會持續保留。法務保存與保留期互不相關，並且會針對個別物件版本進行設定。

物件鎖定只能在已啟用 S3 版本控制的儲存貯體中使用。當您鎖定物件版本時，Amazon S3 會將鎖定資訊存放在該物件版本的中繼資料中。當您在物件上設定保留期或法務保存時，僅會保護請求中指定的版本。保留期和法務保存不會阻止建立物件的新版本，或阻止在物件上新增刪除標記。如需 S3 版本控制的詳細資訊，請參閱「[使用 S3 版本控制保留多個版本的物件](Versioning.md)」。

若您將物件放入儲存貯體，而當中已包含具備相同物件索引鍵名稱的現有受保護物件，則 Amazon S3 會建立該物件的新版本。現有的受保護版本物件則會根據其保留組態，而保持鎖定狀態。

## S3 物件鎖定的運作方式
<a name="object-lock-overview"></a>

**Topics**
+ [保留期](#object-lock-retention-periods)
+ [保留模式](#object-lock-retention-modes)
+ [法務保存](#object-lock-legal-holds)
+ [S3 物件鎖定如何執行刪除功能](#object-lock-how-deletes-work)
+ [使用 S3 物件鎖定的最佳實務](#object-lock-best-practices)
+ [所需的許可](#object-lock-permissions)

### 保留期
<a name="object-lock-retention-periods"></a>

*保留期*可在一段固定期間保護物件版本。當您為物件版本設定保留期時，Amazon S3 會將時間戳記存放在物件版本的中繼資料內，以指出保留期何時過期。保留期過後，就可以覆寫或刪除物件版本。

您可以對個別物件版本或儲存貯體的屬性明確設定保留期，以便自動套用至儲存貯體中的所有物件。當您明確地將保留期套用至物件版本時，您可以為物件版本指定「保留截止日期」**。Amazon S3 會將此日期儲存在物件版本的中繼資料中。

您也可以在儲存貯體的屬性中設定保留期。當您在儲存貯體上設定保留期時，可以指定一段以天或年為單位的時間，代表要保護放置在儲存貯體中的每個物件版本的期間。當您將物件放入儲存貯體時，Amazon S3 會將指定的期間與物件版本的建立時間戳記相加，以計算出物件版本的*保留截止日期*。物件版本即可受到保護，完全就像您明確使用保留期對物件版本設定個別鎖定一樣。

**注意**  
當您對儲存貯體中具有明確的個別保留模式和保留期的物件版本執行 `PUT` 時，物件版本的個別物件鎖定設定會覆寫任何儲存貯體屬性保留設定。

如同所有其他的物件鎖定設定一樣，保留期也可套用至個別的物件版本。單一物件的不同版本可以擁有不同的保留模式和保留期。

例如，假設您有一個保留期為 15 天到 30 天的物件，而且您將同名且保留期為 60 天的物件 `PUT` 到 Amazon S3。在此情況下，`PUT` 請求會成功，而且 Amazon S3 會建立新版本的物件，且保留期為 60 天。舊版本仍會維持原本的保留期，並在 15 天後變成可供刪除的狀態。

對物件版本套用保留設定之後，可以延長保留期。若要這麼做，請針對物件版本提交新的物件鎖定請求，並將*保留截止日期*設為晚於目前為物件版本設定的日期。Amazon S3 會以新的更長期間取代現有的保留期。只要使用者具備設定物件保留期的許可，就可以延長物件版本的保留期。若要設定保留期，您必須具備 `s3:PutObjectRetention` 許可。

在物件或 S3 儲存貯體上設定保留期時，必須選取兩種保留模式之一：*合規*或*控管*。

### 保留模式
<a name="object-lock-retention-modes"></a>

S3 物件鎖定提供了兩種保留模式，可分別對物件套用不同程度的保護：
+ 合規模式
+ 控管模式

在*合規*模式下，任何使用者 (包括 AWS 帳戶中的根使用者) 都無法覆寫或刪除受保護的物件版本。當物件在合規模式中受到鎖定時，您無法變更物件的保留模式，亦無法縮短它的保留期。合規模式可協助確保物件版本在保留期間均不會受到覆寫或刪除。

**注意**  
在物件的保留日期過期之前，在合規模式下刪除物件的唯一方法是刪除相關聯的 AWS 帳戶。

在*控管*模式中，除非使用者具備特殊許可，否則都無法覆寫或刪除物件版本，或更改其鎖定設定。使用控管模式時，您可以保護物件免於遭到大多數使用者刪除，但您仍可以將許可授予部分使用者，讓他們視需要更改保留設定或刪除物件。您也可以使用控管模式來測試保留期設定，之後再建立合規模式的保留期。

若要覆寫或移除控管模式的保留設定，您必須具備 `s3:BypassGovernanceRetention` 許可，且需在任何請求中明確加入 `x-amz-bypass-governance-retention:true` 作為請求標頭，才能請求覆寫控管模式。

**注意**  
根據預設，Amazon S3 主控台會加入 `x-amz-bypass-governance-retention:true` 標頭。如果您嘗試刪除受*控管*模式保護的物件，且您具備 `s3:BypassGovernanceRetention` 許可，則操作會成功。

### 法務保存
<a name="object-lock-legal-holds"></a>

使用物件鎖定，您還可以對物件版本設定*法務保存*。法務保存就像保留期一樣，可避免物件版本遭到覆寫或刪除。不過，法務保存不具有一段相關聯的固定期間，除非將其移除，否則會持續有效。任何具備 `s3:PutObjectLegalHold` 許可的使用者均可自由設定並移除法務保存。

法務保存和保留期是彼此獨立的。當您為物件版本設定法務保存時，並不會影響該物件版本的保留模式或保留期。

例如，假設您在物件版本同時受到保留期保護的情況下，為物件版本設定法務保存。如果保留期到期，則物件不會失去其 WORM 保護。反之，法務保存會持續保護物件，直到授權使用者明確移除法務保存為止。同樣地，如果您移除法務保存但物件版本的保留期仍有效，則直到保留期過期為止物件版本仍會受到保護。

### S3 物件鎖定如何執行刪除功能
<a name="object-lock-how-deletes-work"></a>

如果您的儲存貯體已啟用 S3 物件鎖定，且物件受到保留期間或法務保存的保護，而且您嘗試刪除物件，Amazon S3 會根據您嘗試刪除物件的方式傳回下列其中一個回應：
+ **永久 `DELETE` 請求** – 如果您發出永久 `DELETE` 請求 (指定版本 ID 的請求)，Amazon S3 會在您嘗試刪除物件時傳回存取遭拒 (`403 Forbidden`) 錯誤。如需有關物件鎖定的存取遭拒錯誤故障診斷的詳細資訊，請參閱 [S3 物件鎖定設定](troubleshoot-403-errors.md#troubleshoot-403-object-lock)。
+ **簡單 `DELETE` 請求** – 如果您發出簡單 `DELETE` 請求 (未指定版本 ID 的請求)，Amazon S3 會傳回 `200 OK` 回應，並在儲存貯體中插入[刪除標記](DeleteMarker.md)，而該標記會成為具有新 ID 的物件目前版本。如需有關使用物件鎖定管理刪除標記的詳細資訊，請參閱 [使用物件鎖定管理刪除標記](object-lock-managing.md#object-lock-managing-delete-markers)。

### 使用 S3 物件鎖定的最佳實務
<a name="object-lock-best-practices"></a>

如果您想要在預先定義的保留期間保護物件，以防遭到大多數使用者刪除，但同時希望具有特殊許可的部分使用者擁有能夠變更保留設定或刪除物件的彈性，請考慮使用*控管模式*。

如果您不希望任何使用者 (包括 AWS 帳戶中的根使用者) 能夠在預先定義的保留期間刪除物件，請考慮使用*合規模式*。如果您需要儲存合規資料，則可以使用此模式。

當您不確定物件要在多少時間內保持不可變狀態時，可以使用*法務保存*功能。這可能是因為即將對資料進行外部稽核，並希望在稽核完成之前將物件保持在不可變狀態。或者，您可能有一個使用資料集的進行中專案，而且想要在專案完成前將該資料集保持在不可變狀態。

### 所需的許可
<a name="object-lock-permissions"></a>

物件鎖定操作需要特定許可。根據您嘗試執行的確切操作而定，您可能需要以下任何許可：
+ `s3:BypassGovernanceRetention`
+ `s3:GetBucketObjectLockConfiguration`
+ `s3:GetObjectLegalHold`
+ `s3:GetObjectRetention`
+ `s3:PutBucketObjectLockConfiguration`
+ `s3:PutObjectLegalHold`
+ `s3:PutObjectRetention`

如需具有說明的 Amazon S3 許可完整清單，請參閱服務授權參考**中的[適用於 Amazon S3 的動作、資源和條件金鑰](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html)。

如需依 S3 資源類型列出 S3 API 操作許可的詳細資訊，請參閱[Amazon S3 API 操作所需的許可](using-with-s3-policy-actions.md)。

如需有關搭配有許可使用條件的資訊，請參閱 [使用條件索引鍵的儲存貯體政策範例](amazon-s3-policy-keys.md)。