文件

MinIO 物件鎖定

概觀

MinIO 物件鎖定(「物件保留」)強制執行「一次寫入,多次讀取」(WORM) 不可變性,以保護已版本控制的物件免於刪除。MinIO 支援基於持續時間的物件保留無限期的法律保留

根據Cohasset Associates的說法,MinIO 物件鎖定可提供重要的資料保留合規性,並符合 SEC17a-4(f)、FINRA 4511(C) 和 CFTC 1.31(c)-(d) 的要求。

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.csvv1 版本被解除鎖定,因此有資格刪除。

教學課程

建立已啟用物件鎖定的儲存貯體

根據 S3 的行為,您必須在建立儲存貯體時啟用物件鎖定。您可以使用 MinIO 主控台、MinIO mc CLI 或使用 S3 相容的 SDK 建立已啟用物件鎖定的儲存貯體。

選取 MinIO 主控台的 儲存貯體 區段以存取儲存貯體建立和管理功能。從儲存貯體清單中選取儲存貯體列。您可以使用 搜尋列來篩選清單。

MinIO Console Bucket Management

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

MinIO Console Bucket Management

使用具有 --with-lock 選項的 mc mb 命令建立已啟用物件鎖定的儲存貯體

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

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

設定儲存貯體預設物件保留

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

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

選取 MinIO 主控台的 儲存貯體 區段以存取儲存貯體建立和管理功能。您可以使用 搜尋列來篩選清單。

MinIO Console Bucket Management

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

MinIO Console Bucket Management

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

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

  • 對於 保留模式,選取 合規治理

  • 對於 持續時間,選取 的保留持續時間單位。

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

使用具有 --recursive--default 選項的 mc retention set 命令,為儲存貯體設定預設保留模式

mc retention set --recursive --default MODE DURATION ALIAS/BUCKET
  • MODE 替換為 合規治理

  • DURATION 替換為物件鎖定保持有效的持續時間。

  • ALIAS 替換為已設定的 MinIO 部署的 別名

  • BUCKET 替換為要設定預設保留規則的儲存貯體的名稱。

物件保留模式

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

模式

摘要

治理模式

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

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

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