MinIO 物件鎖定
概觀
MinIO 物件鎖定(「物件保留」)強制執行「一次寫入,多次讀取」(WORM) 不可變性,以保護已版本控制的物件免於刪除。MinIO 支援基於持續時間的物件保留和無限期的法律保留。
根據Cohasset Associates的說法,MinIO 物件鎖定可提供重要的資料保留合規性,並符合 SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 的要求。
刪除操作在已版本控制的 Bucket中遵循正常行為,其中 MinIO 會為物件建立一個 DeleteMarker
。但是,物件的非刪除標記版本仍受保留規則的約束,並受到任何特定刪除或覆寫嘗試的保護。
MinIO 物件鎖定功能與 AWS S3 在功能和 API 上相容。本頁總結了 MinIO 實作的物件鎖定/保留概念。有關其他資源,請參閱 AWS S3 文件中關於 S3 物件鎖定如何運作 的說明。
根據 S3 的行為,您只能在建立儲存貯體時啟用物件鎖定。您無法在未啟用鎖定的情況下建立的儲存貯體上啟用物件鎖定。您隨時可以設定物件保留規則。物件鎖定需要 版本控制,並隱含地啟用此功能。
與版本控制的互動
以 WORM 鎖定方式持有的物件在鎖定到期或被明確解除之前都是不可變的。鎖定是針對每個物件版本進行的,每個版本都是獨立的不可變物件。
如果應用程式對鎖定的物件執行未版本化的刪除操作,該操作將產生一個刪除標記。嘗試明確刪除任何 WORM 鎖定物件的操作都會失敗並產生錯誤。刪除標記*不*符合 WORM 鎖定的保護資格。有關更多資訊,請參閱 S3 文件中關於 管理刪除標記和物件生命週期 的說明。
例如,考慮以下儲存貯體,其中預設啟用了 治理模式 鎖定
$ 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 會為鎖定的物件建立刪除標記。
對於對*非目前物件版本*進行操作的到期規則,MinIO 只能在保留期過後*或*明確解除(例如,法律保留)後才能使非目前版本到期。
例如,考慮以下儲存貯體,其中預設啟用了 治理模式 鎖定 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 天的*目前*物件建立到期規則會產生該物件的刪除標記
$ 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 主控台、MinIO mc
CLI 或使用 S3 相容的 SDK 建立已啟用物件鎖定的儲存貯體。
選取 MinIO 主控台的 儲存貯體 區段以存取儲存貯體建立和管理功能。從儲存貯體清單中選取儲存貯體列。您可以使用 搜尋列來篩選清單。

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

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

每個儲存貯體列都有一個 管理 按鈕,用於開啟該儲存貯體的管理檢視。

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