共用方式為


不可變 Blob 資料的版本層級單寫多讀 (WORM) 原則

版本層級的唯寫多讀(WORM)政策是一種可在帳戶、容器或版本層級設定的不變性規則。 若要深入瞭解 Azure Blob Storage 的不可變儲存,請參閱 使用不可變儲存將關鍵業務的 Blob 資料儲存於一次寫入、多次讀取 (WORM) 狀態

可用性

新帳戶的帳戶層級支援版本層級不變性 (VLW) 原則,而新的及現有帳戶/容器則在容器及 Blob 層級支援此原則。 一般用途 v2 和進階區塊 Blob 帳戶都支援這些原則。 階層命名空間帳戶不支援此功能。

版本相依性

版本層級原則要求為儲存體帳戶啟用 Blob 版本設定。 若要了解如何啟用 Blob 版本設定,請參閱啟用和管理 Blob 版本設定。 請記住,啟用版本控制可能會影響計費。 如需詳細資訊,請參閱 Blob 版本設定的定價和計費一節

啟用版本控制之後,第一次上傳 Blob 時,該版本即為當前版本。 每次覆寫 Blob 時,都會建立新版本來儲存 Blob 的先前狀態。 當您刪除 Blob 的目前版本時,目前的版本會變成舊版,並保留到明確刪除為止。 先前的 Blob 版本具有限時保留原則,當目前的版本成為舊版時就會生效。

如果記憶體帳戶或容器的默認原則生效,則當覆寫作業建立舊版時,新的目前版本會繼承帳戶或容器的默認原則。

每個版本可能只設定一個以時間為基礎的保留原則。 版本也可能設定了一個法務保存措施。

若要瞭解如何設定版本層級的時間型保留原則,請參閱 設定 Blob 版本的不變性原則

啟用和原則設定

使用版本層級 WORM 的不可變政策是分為兩個步驟的過程。 首先,啟用版本層級不變性。 然後,您可以設定版本層級不變性原則。

若要在記憶體帳戶層級設定原則,您必須先在記憶體帳戶上啟用版本層級 WORM。 您只能在帳戶建立時執行此動作。 沒有選項可針對預先存在帳戶啟用版本層級 WORM。

在帳戶層級設定版本層級不可變儲存策略的圖表。

若要在容器層級設定原則,您必須先在帳戶或容器上啟用版本層級 WORM。

如果您打算在容器上啟用版本層級 WORM,Microsoft建議您在容器建立期間啟用它。 不過,您可以將已啟用非版本層級 WORM 的容器移轉至已啟用版本層級 WORM 的容器。 如果您選擇不移轉容器,您仍然可以在該容器上設定容器層級的WORM原則,但該容器上將無法使用設定 Blob 層級原則的選項。

在容器層級設定版本層級固定記憶體原則的圖表。

若要在 Blob 層級設定原則,您必須在帳戶或容器上啟用版本層級 WORM。 沒有選項可在 Blob 層級啟用版本層級 WORM;必須繼承。

在 Blob 層級設定版本層級不可變儲存體原則的圖表。

遷移

現有的容器可以支援版本層級不變性,但必須先進行移轉程式。 此過程可能需要一些時間。 啟用之後,就無法移除該容器的版本層級 WORM 支援。 針對一個儲存體帳戶,您一次只能移轉 10 個容器。 移轉所需的時間主要取決於容器中的 Blob 數量。 具有大量 Blob 的容器需要更長的時間才能移轉。 如需移轉容器以支援版本層級不變性的詳細資訊,請參閱 移轉現有的容器以支援版本層級不變性

設定目前版本的原則

啟用記憶體帳戶或容器版本層級不變性支持之後,您可以選擇為帳戶或容器設定預設的時間型保留原則。 當您設定帳戶或容器的默認時間型保留原則,然後上傳 Blob 時,Blob 會繼承該默認原則。 您也可以針對該 Blob 設定自訂原則,以在上傳時選擇覆寫任何 Blob 的預設原則。

如果帳戶或容器的預設限時保留原則未鎖定,則繼承預設原則的 Blob 目前版本也會有未鎖定的原則。 上傳個別 Blob 之後,您可以縮短或延長目前 Blob 版本的原則保留期間,或刪除目前的版本。 即使帳戶或容器上的預設原則保持未鎖定,您也可以鎖定目前版本的原則。

如果帳戶或容器的預設基於時間的保留政策已鎖定,則繼承該預設政策的 Blob 的目前版本也會有鎖定的政策。 不過,如果您在上傳 Blob 時,藉由只設定該 Blob 的原則來覆寫預設原則,則該 Blob 的原則會保持未鎖定狀態,直到您明確鎖定為止。 鎖定目前版本的原則時,您可以延長保留間隔,但無法刪除原則或縮短保留間隔。

如果沒有針對記憶體帳戶或容器設定的默認原則,您可以使用自定義原則或沒有原則來上傳 Blob。

如果修改記憶體帳戶或容器上的默認原則,該容器內對象的原則會保持不變,即使這些原則繼承自默認原則也一樣。

下表顯示上傳時,可在 Blob 上設定以時間為基礎的保留原則的各種選項:

帳戶或容器的預設政策狀態 上傳具有預設策略的資料塊 上傳使用自訂原則的 Blob 上傳沒有原則的 Blob
帳戶或容器的預設原則 (解除鎖定) Blob 會以預設解除鎖定原則上傳 上傳的 Blob 使用自訂的未鎖定原則 上傳的 Blob 沒有原則
帳戶或容器的預設原則 (已鎖定) 上傳的 Blob 使用預設的已鎖定原則 上傳的 Blob 使用自訂的未鎖定原則 上傳的 Blob 沒有原則
帳戶或容器上沒有默認原則 N/A 上傳的 Blob 使用自訂的未鎖定原則 上傳的 Blob 沒有原則

在先前版本上設定政策

啟用版本設定時,對 Blob 的寫入或刪除作業會建立該 Blob 的新版本,以在作業之前儲存 Blob 的狀態。 依預設,先前的 Blob 版本具有限時保留原則,適用於目前的版本,若存在,則當目前版本變成先前的版本時就會生效。 如果有政策,則新的當前版本會繼承容器上的政策。

如果舊版繼承的原則已解除鎖定,則可以縮短或延長保留間隔,也可以刪除原則。 即使目前版本上的原則未鎖定,也可以針對該版本鎖定先前版本的原則。

如果先前版本繼承的政策已鎖定,則可以延長保留期限。 無法刪除原則,也無法縮短保留間隔。 如果目前版本上未設定任何原則,則舊版不會繼承任何原則。

您可以設定版本的自訂政策。 如果修改了目前版本的原則,則即使原則繼承自目前版本,現有舊版的原則仍會保持不變。

刪除

一旦針對不可變原則啟用帳戶或容器之後,就無法刪除該帳戶或容器,直到它是空的為止。 要注意的主要事項是,是否在版本層級 WORM 帳戶或容器上設定不可變原則並不重要,重要的是是否針對原則啟用。 一旦完成,帳戶或容器就必須是空的,才能刪除。

此圖顯示刪除具有版本層級不變性原則之帳戶的作業順序。

您只能使用控制平面作業,刪除針對不可變原則啟用的容器。 所有這類要求都會傳送至 Azure Resource Manager URL。 例如,PowerShell 命令 Remove-AzRmStorageContainer 會使用控制平面作業來刪除容器。 相反地,Remove-AzStorageContainer 命令會嘗試使用資料平面操作,但不會成功。 同樣地,Azure CLI 命令 az storage container-rm delete 會使用控制平面作業,而 az storage container delete 則依賴數據平面作業。 您也可以透過 Azure 入口網站刪除容器,因為它會使用控制平面作業來執行工作。

案例

狀況 禁止的作業 Blob 保護 容器保護 帳戶保護
Blob 版本受作用中保留原則保護和/或有合法保存生效 刪除 Blob設定 Blob 中繼資料放置頁面 無法刪除 Blob 版本。 無法寫入使用者元數據。
透過放置頁面放置區塊清單複製 Blob 來覆寫 Blob 會建立新版本。1
如果容器中至少有一個 Blob 存在,則無論是否已鎖定或解除鎖定原則,容器刪除作業都會失敗。 如果至少有一個容器啟用了版本層級不可變儲存,或該帳戶啟用了不可變儲存,則儲存帳戶刪除會失敗。
Blob 版本受作用中保留原則保護,沒有任何合法保存生效 設定 Blob 中繼資料和放置頁面 Blob 版本受作用中保留原則保護,沒有任何合法保存生效 可以刪除 Blob 版本。
透過放置頁面放置區塊清單複製 Blob 來覆寫 Blob 會建立新版本。1
如果至少有一個容器包含具有鎖定時間型保留原則的 Blob 版本,則記憶體帳戶刪除會失敗。
解除鎖定的原則不會提供刪除保護。

1 Blob 版本的內容始終是不可變的。 如果已針對儲存體帳戶啟用版本設定,則將作業寫入至區塊 Blob 會建立新版本,但是放置區塊作業例外。

限制

一個帳戶中只能有 10,000 個容器設定唯一時間型保留原則:不過,您可以設定帳戶層級原則,超過 10,000 個容器會繼承。

後續步驟