MinIO 物件鎖定
概觀
MinIO 物件鎖定(「物件保留」)強制執行「一次寫入,多次讀取」(WORM)的不可變性,以保護版本化物件免於刪除。MinIO 支援基於持續時間的物件保留和無限期的法律保留。
根據Cohasset Associates的說法,MinIO 物件鎖定提供關鍵資料保留合規性,並符合 SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 的要求。
MinIO 物件鎖定在功能和 API 上與 AWS S3 相容。此頁面總結了 MinIO 實作的物件鎖定/保留概念。有關其他資源,請參閱 AWS S3 文件中的S3 物件鎖定如何運作。
根據S3 行為,您只能在建立儲存桶時啟用物件鎖定。您無法在未啟用鎖定的情況下建立的儲存桶上啟用物件鎖定。然後,您可以隨時設定物件保留規則。物件鎖定需要版本控制,並隱式啟用此功能。
與版本控制的互動
在 WORM 鎖定下的物件在鎖定到期或明確解除之前都是不可變的。鎖定是按每個物件版本進行的,其中每個版本都是獨立不可變的。
如果應用程式對鎖定的物件執行未版本化的刪除操作,該操作將產生刪除標記。嘗試明確刪除任何 WORM 鎖定的物件都會失敗並顯示錯誤。刪除標記不能在 WORM 鎖定下獲得保護。有關更多資訊,請參閱 S3 文件中的管理刪除標記和物件生命週期。
例如,考慮以下儲存桶,其中預設啟用GOVERNANCE 模式鎖定
$ mc ls --versions play/locking-guide
[DATETIME] 29B 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 v3 PUT data.csv
[DATETIME] 32B 78b3105a-02a1-4763-8054-e66add087710 v2 PUT data.csv
[DATETIME] 23B c6b581ca-2883-41e2-9905-0a1867b535b8 v1 PUT data.csv
嘗試對 data.csv
的特定版本執行刪除操作,會因物件鎖定設定而失敗
$ mc rm --version-id 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 play/data.csv
Removing `play/locking-guide/data.csv` (versionId=62429eb1-9cb7-4dc5-b507-9cc23d0cc691).
mc: <ERROR> Failed to remove `play/locking-guide/data.csv`.
Object, 'data.csv (Version ID=62429eb1-9cb7-4dc5-b507-9cc23d0cc691)' is
WORM protected and cannot be overwritten
嘗試對 data.csv
執行未版本化的刪除操作會成功,並為該物件建立新的 DeleteMarker
$ mc rm play/locking-guide/data.csv
[DATETIME] 0B acce329f-ad32-46d9-8649-5fe8bf4ec6e0 v4 DEL data.csv
[DATETIME] 29B 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 v3 PUT data.csv
[DATETIME] 32B 78b3105a-02a1-4763-8054-e66add087710 v2 PUT data.csv
[DATETIME] 23B c6b581ca-2883-41e2-9905-0a1867b535b8 v1 PUT data.csv
與生命週期管理互動
MinIO 物件過期會遵守過期規則所涵蓋的物件的所有作用中物件鎖定和保留設定。
對於僅作用於目前物件版本的過期規則,MinIO 會為鎖定的物件建立刪除標記 (Delete Marker)。
對於作用於非目前物件版本的過期規則,MinIO 只能在保留期限過後或已明確解除(例如,法律保留)後,才能使非目前版本過期。
例如,考慮以下儲存桶,其中預設啟用GOVERNANCE 模式鎖定 45 天
$ mc ls --versions play/locking-guide
[7D] 29B 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 v3 PUT data.csv
[30D] 32B 78b3105a-02a1-4763-8054-e66add087710 v2 PUT data.csv
[60D] 23B c6b581ca-2883-41e2-9905-0a1867b535b8 v1 PUT data.csv
為早於 7 天的目前物件建立過期規則會為該物件建立刪除標記 (Delete Marker)
$ mc ls --versions play/locking-guide
[0D] 0B acce329f-ad32-46d9-8649-5fe8bf4ec6e0 v4 DEL data.csv
[7D] 29B 62429eb1-9cb7-4dc5-b507-9cc23d0cc691 v3 PUT data.csv
[30D] 32B 78b3105a-02a1-4763-8054-e66add087710 v2 PUT data.csv
[60D] 23B c6b581ca-2883-41e2-9905-0a1867b535b8 v1 PUT data.csv
但是,針對早於 7 天的非目前物件的過期規則,只會在設定的 WORM 鎖定過期後才會生效。由於儲存桶設定了 45 天的 GOVERNANCE
保留期,因此只有 data.csv
的 v1
版本解除鎖定,因此符合刪除條件。
教學
建立啟用物件鎖定的儲存桶
您必須按照 S3 的行為,在建立儲存桶時啟用物件鎖定。您可以使用 MinIO Console、MinIO mc
CLI 或使用與 S3 相容的 SDK 來建立啟用物件鎖定的儲存桶。
選取 MinIO Console 的 儲存桶區段,以存取儲存桶建立和管理功能。從儲存桶列表中選取儲存桶列。您可以使用 搜尋列篩選列表。

按一下 建立儲存桶按鈕以開啟儲存桶建立模式視窗。切換 物件鎖定選取器以在儲存桶上啟用物件鎖定。

使用 mc mb
命令搭配 --with-lock
選項,建立啟用物件鎖定的儲存桶
mc mb --with-lock ALIAS/BUCKET
設定儲存桶預設物件保留
您可以使用 MinIO Console、MinIO mc
CLI 或使用與 S3 相容的 SDK 來設定物件鎖定規則(「物件保留」)。
MinIO 支援設定儲存桶預設和每個物件的保留規則。以下範例設定儲存桶預設保留。對於每個物件的保留設定,請參閱您偏好 SDK 所使用 PUT
操作的文件。
選取 MinIO Console 的 儲存桶區段,以存取儲存桶建立和管理功能。您可以使用 搜尋列篩選列表。

每個儲存桶列都有一個 管理按鈕,可開啟該儲存桶的管理檢視。

從 保留區段,選取 已啟用。此區段僅適用於啟用物件鎖定建立的儲存桶。
從 設定保留設定模式視窗中,設定所需的儲存桶預設保留設定。
對於 保留模式,選取 COMPLIANCE 或 GOVERNANCE。
對於 期間,選取 天或 年的保留期間單位。
對於 保留有效性,設定 MinIO 在指定儲存桶的保留模式下持有物件的時間長度。
使用 mc retention set
命令搭配 --recursive
和 --default
選項,設定儲存桶的預設保留模式
mc retention set --recursive --default MODE DURATION ALIAS/BUCKET
將
MODE
替換為 COMPLIANCE 或 GOVERNANCE。將
DURATION
替換為物件鎖定保持有效性的持續時間。將
BUCKET
替換為要設定預設保留規則的儲存桶名稱。
啟用法律保留
您可以使用 MinIO Console、MinIO mc
CLI 或使用與 S3 相容的 SDK 來啟用或停用物件的無限期法律保留。
您可以將法律保留置於已在 COMPLIANCE 或 GOVERNANCE 鎖定下持有的物件上。即使保留鎖定過期,該物件仍會在法律保留下保持 WORM 鎖定。您或具有必要權限的其他使用者必須明確解除法律保留才能移除 WORM 鎖定。
物件保留模式
MinIO 實作下列 S3 物件鎖定模式
模式 |
摘要 |
---|---|
防止非特權使用者執行任何會變更或修改物件或其鎖定設定的操作。 在儲存桶或物件上具有 MinIO 會在設定的保留規則持續時間過後自動解除鎖定。 |
|
防止任何會變更或修改物件或其鎖定設定的操作。 包括 MinIO 根使用者在內的任何 MinIO 使用者都無法修改物件或其設定。 MinIO 會在設定的保留規則持續時間過後自動解除鎖定。 |
GOVERNANCE 模式
處於 GOVERNANCE
鎖定下的物件受到非特權使用者寫入操作的保護。
GOVERNANCE
鎖定的物件會對鎖定的物件強制執行受管理的不可變性,其中具有 s3:BypassGovernanceRetention
操作權限的使用者可以修改鎖定的物件、變更保留期間或完全解除鎖定。略過 GOVERNANCE
保留也需要在要求中設定 x-amz-bypass-governance-retention:true
標頭。
MinIO GOVERNANCE
鎖定在功能上與 S3 GOVERNANCE 模式相同。
COMPLIANCE 模式
處於 COMPLIANCE
鎖定下的物件受到所有使用者(包括 MinIO 根使用者)的寫入操作保護。
COMPLIANCE
鎖定的物件會對鎖定的物件強制執行完全不可變性。您無法在設定的保留期間過期之前變更或移除鎖定。
MinIO COMPLIANCE
鎖定在功能上與 S3 COMPLIANCE 模式相同。
法律保留 (Legal Hold)
處於法律保留狀態的物件會受到保護,所有 使用者(包括 MinIO root 使用者)都無法對其執行寫入操作。
法律保留是無限期的,並強制鎖定物件的完全不可變性。只有具備 s3:PutObjectLegalHold
權限的特權使用者才能設定或解除法律保留。
法律保留適用於物件層級。如果您為一組物件(例如儲存桶的內容)啟用法律保留,則隨後在該儲存桶中建立的物件將不受影響。
法律保留是對 GOVERNANCE 模式 和 COMPLIANCE 模式 保留設定的補充。同時受法律保留和 GOVERNANCE/COMPLIANCE
保留規則約束的物件,將保持 WORM 鎖定狀態,直到法律保留解除且規則過期。
對於 GOVERNANCE
鎖定的物件,法律保留會阻止對物件進行修改,即使使用者擁有繞過保留的必要權限也是如此。