文件

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.csvv1 版本解除鎖定,因此符合刪除條件。

教學

建立啟用物件鎖定的儲存桶

您必須按照 S3 的行為,在建立儲存桶時啟用物件鎖定。您可以使用 MinIO Console、MinIO mc CLI 或使用與 S3 相容的 SDK 來建立啟用物件鎖定的儲存桶。

選取 MinIO Console 的 儲存桶區段,以存取儲存桶建立和管理功能。從儲存桶列表中選取儲存桶列。您可以使用 搜尋列篩選列表。

MinIO Console Bucket Management

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

MinIO Console Bucket Management

使用 mc mb 命令搭配 --with-lock 選項,建立啟用物件鎖定的儲存桶

mc mb --with-lock ALIAS/BUCKET
  • ALIAS 替換為已設定的 MinIO 部署的別名

  • BUCKET 替換為要建立的儲存桶的名稱

設定儲存桶預設物件保留

您可以使用 MinIO Console、MinIO mc CLI 或使用與 S3 相容的 SDK 來設定物件鎖定規則(「物件保留」)。

MinIO 支援設定儲存桶預設每個物件的保留規則。以下範例設定儲存桶預設保留。對於每個物件的保留設定,請參閱您偏好 SDK 所使用 PUT 操作的文件。

選取 MinIO Console 的 儲存桶區段,以存取儲存桶建立和管理功能。您可以使用 搜尋列篩選列表。

MinIO Console Bucket Management

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

MinIO Console Bucket Management

保留區段,選取 已啟用。此區段僅適用於啟用物件鎖定建立的儲存桶。

設定保留設定模式視窗中,設定所需的儲存桶預設保留設定。

  • 對於 保留模式,選取 COMPLIANCEGOVERNANCE

  • 對於 期間,選取 的保留期間單位。

  • 對於 保留有效性,設定 MinIO 在指定儲存桶的保留模式下持有物件的時間長度。

使用 mc retention set 命令搭配 --recursive--default 選項,設定儲存桶的預設保留模式

mc retention set --recursive --default MODE DURATION ALIAS/BUCKET

物件保留模式

MinIO 實作下列 S3 物件鎖定模式

模式

摘要

GOVERNANCE 模式

防止非特權使用者執行任何會變更或修改物件或其鎖定設定的操作。

在儲存桶或物件上具有 s3:BypassGovernanceRetention 權限的使用者可以修改物件或其鎖定設定。

MinIO 會在設定的保留規則持續時間過後自動解除鎖定。

COMPLIANCE 模式

防止任何會變更或修改物件或其鎖定設定的操作。

包括 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 模式相同。