Azure Blob 儲存體的不變性儲存體可讓使用者以 WORM (一次寫入,多次讀取) 狀態儲存商務關鍵性資料。 在 WORM 狀態下,您無法在使用者指定的間隔內修改或刪除資料。 您可透過設定 Blob 資料的不可變性原則,保護資料免於遭到覆寫和刪除。 不可變更原則包括以時間為基礎的保留原則和法律保留。 如需 Blob 儲存體不變性原則的詳細資訊,請參閱使用不可變儲存體儲存商務關鍵性 Blob 資料。
不可變更原則可套用於個別 Blob 版本或容器。 本文說明如何設定容器層級的不變性原則。 若要了解如何設定版本層級不變性原則,請參閱 設定 Blob 版本的不變性原則。
若要在容器上設定限時保留原則,請使用 Azure 入口網站、PowerShell 或 Azure CLI。 您可以設定介於 1 到 146,000 天之間的容器層級保留原則。
Important
不可變政策的生效時間可達35秒。 在啟用期間,項目仍可能被刪除或覆寫。 在這段期間內,即使容器屬性上看到 CLW 原則,也不保證該原則已經生效。
若要使用 Azure 入口網站在容器上設定限時保留原則,請遵循下列步驟:
瀏覽至所需的容器。
選取右側的 [更多] 按鈕,然後選取 [存取原則]。
在 [不可變的 Blob 儲存體] 區段中,選取 [新增原則]。
在 [原則類型] 欄位中,選取 [限時保留],並指定保留期間 (以天為單位)。
若要建立具有容器範圍的原則,請勿核取 [啟用版本層級不變性] 的方塊。
選擇是否允許受保護的附加寫入。
附加 Blob 選項可讓您的工作負載使用 附加區塊 作業,在附加 Blob 的結尾附加新的資料區塊。
[區塊和附加 Blob] 選項提供與 [附加 Blob] 選項相同的權限,但新增了將新區塊寫入至區塊 Blob 的能力。 Blob 儲存體 API 不提供讓應用程式直接執行此動作的途徑。 不過,應用程式可以使用 Data Lake Storage API 中提供的 append 和 flush 方法來達成此目的。 此外,有些 Microsoft 應用程式會使用內部 API 建立區塊 Blob,然後附加於其上。 如果您的工作負載相依於上述任何工具,您可以使用此屬性,以避免在這些工具嘗試將區塊附加至區塊 Blob 時出現錯誤。
若要進一步了解這些選項,請參閱 允許受保護的附加 Blob 的寫入。
設定不變性原則之後,您會看到其範圍限定於容器:
若要使用 PowerShell 在容器上設定限時保留原則,請呼叫 Set-AzRmStorageContainerImmutabilityPolicy 命令,並提供保留間隔 (以天為單位)。 請記得以您自己的值取代角括號中的預留位置值:
Set-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-ContainerName <container> `
-ImmutabilityPeriod 10
若要允許受保護的附加寫入,請將 -AllowProtectedAppendWrite 或 -AllowProtectedAppendWriteAll 參數設定為 true。
AllowProtectedAppendWrite 選項可讓您的工作負載藉由使用 附加區塊 作業,將新的資料區塊新增至附加 Blob 的結尾。
AllowProtectedAppendWriteAll 選項提供與 AllowProtectedAppendWrite 選項相同的權限,但新增了將新區塊寫入至區塊 Blob 的能力。 Blob 儲存體 API 不提供讓應用程式直接執行此動作的途徑。 不過,應用程式可以使用 Data Lake Storage API 中提供的 append 和 flush 方法來達成此目的。 此外,有些 Microsoft 應用程式會使用內部 API 建立區塊 Blob,然後附加於其上。 如果您的工作負載相依於上述任何工具,您可以使用此屬性,以避免在這些工具嘗試將區塊附加至區塊 Blob 時出現錯誤。
若要進一步了解這些選項,請參閱 允許受保護的附加 Blob 的寫入。
若要使用 Azure CLI 在容器上設定限時保留原則,請呼叫 az storage container immutability-policy create 命令,並提供保留間隔 (以天為單位)。 請記得以您自己的值取代角括號中的預留位置值:
az storage container immutability-policy create \
--resource-group <resource-group> \
--account-name <storage-account> \
--container-name <container> \
--period 10
若要允許受保護的附加寫入,請將 --allow-protected-append-writes 或 --allow-protected-append-writes-all 參數設定為 true。
--allow-protected-append-writes 選項可讓您的工作負載使用 附加區塊 作業,將新的資料區塊附加到附加 blob 的末端。
--allow-protected-append-writes-all 選項提供與 --allow-protected-append-writes 選項相同的權限,但新增了將新區塊寫入至區塊 Blob 的能力。 Blob 儲存體 API 不提供讓應用程式直接執行此動作的途徑。 不過,應用程式可以使用 Data Lake Storage API 中提供的 append 和 flush 方法來達成此目的。 此外,有些 Microsoft 應用程式會使用內部 API 建立區塊 Blob,然後附加於其上。 如果您的工作負載相依於上述任何工具,您可以使用此屬性,以避免在這些工具嘗試將區塊附加至區塊 Blob 時出現錯誤。
若要進一步了解這些選項,請參閱 允許受保護的附加 Blob 的寫入。
修改解除鎖定的保留原則
您可以修改未鎖定的以時間為基礎的保留原則,以縮短或延長保留期限,並允許對容器中的附加 Blob 進行額外寫入。 您也可以刪除未鎖定的原則。
若要在 Azure 入口網站中修改解除鎖定的限時保留原則,請遵循下列步驟:
瀏覽至所需的容器。
選取 [更多] 按鈕,然後選擇 [存取原則]。
在 不可變 Blob 版本 區段中,找出現有的未鎖定原則。 選取 [更多] 按鈕,然後從功能表選取 [編輯]。
請為此原則設定新的保留期間。 您也可以選取 [允許附加其他受保護的項目],以允許寫入受保護的附加 Blob。
若要刪除解除鎖定的原則,請選取 [更多] 按鈕,然後選取 [刪除]。
注意
您可以選取 [啟用版本層級不變性] 複選框來啟用版本層級不變性 原則。 如需有關啟用版本層級不變性原則的詳細資訊,請參閱設定 Blob 版本的不變性原則。
若要修改解除鎖定的原則,請先藉由呼叫 Get-AzRmStorageContainerImmutabilityPolicy 命令來擷取原則。 接下來,呼叫 Set-AzRmStorageContainerImmutabilityPolicy 命令以更新原則。 包含新的保留間隔 (以天為單位) 和 -ExtendPolicy 參數。 請記得以您自己的值取代角括號中的預留位置值:
$policy = Get-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-AccountName <storage-account> `
-ContainerName <container>
Set-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-ContainerName <container> `
-ImmutabilityPeriod 21 `
-AllowProtectedAppendWriteAll true `
-Etag $policy.Etag `
-ExtendPolicy
若要刪除解除鎖定的原則,請呼叫 Remove-AzRmStorageContainerImmutabilityPolicy 命令。
Remove-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-AccountName <storage-account> `
-ContainerName <container>
-Etag $policy.Etag
若要使用 Azure CLI 修改解除鎖定的限時保留原則,請呼叫 az storage container immutability-policy extend 命令,並提供新的保留間隔 (以天為單位)。 請記得以您自己的值取代角括號中的預留位置值:
etag=$(az storage container immutability-policy show \
--account-name <storage-account> \
--container-name <container> \
--query etag \
--output tsv)
az storage container immutability-policy extend \
--resource-group <resource-group> \
--account-name <storage-account> \
--container-name <container> \
--period 21 \
--if-match $etag \
--allow-protected-append-writes-all true
若要刪除解除鎖定的原則,請呼叫 az storage container immutability-policy delete 命令。
鎖定以時間為基礎的保留原則
當您完成以時間為基礎的保留原則測試後,便可以鎖定該原則。 鎖定的原則符合 SEC 17a-4(f) 及其他法規合規性。 您可以將鎖定原則的保留間隔延長最多五倍,但是無法縮短。
原則一旦鎖定,您就無法刪除它。 不過,您可以在保留間隔到期之後刪除 Blob。
若要使用 Azure 入口網站來鎖定原則,請遵循下列步驟:
- 瀏覽至具有已解除鎖定原則的容器。
- 在 不可變 Blob 版本 區段中,找出現有的未鎖定原則。 選取 [更多] 按鈕,然後從功能表選取 [鎖定原則]。
- 確認您要鎖定該原則。
若要使用 PowerShell 來鎖定原則,請先呼叫 Get-AzRmStorageContainerImmutabilityPolicy 命令來擷取原則的 ETag。 接下來,呼叫 Lock-AzRmStorageContainerImmutabilityPolicy 命令並傳入 ETag 值以鎖定原則。 請記得以您自己的值取代角括號中的預留位置值:
$policy = Get-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-AccountName <storage-account> `
-ContainerName <container>
Lock-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-AccountName <storage-account> `
-ContainerName <container> `
-Etag $policy.Etag
若要使用 Azure CLI 來鎖定原則,請先呼叫 az storage container immutability-policy show 命令以擷取原則的 ETag。 接下來,呼叫 az storage container immutability-policy lock 命令並傳入 ETag 值以鎖定原則。 請記得以您自己的值取代角括號中的預留位置值:
etag=$(az storage container immutability-policy show \
--account-name <storage-account> \
--container-name <container> \
--query etag \
--output tsv)
az storage container immutability-policy lock \
--resource-group <resource-group> \
--account-name <storage-account> \
--container-name <container> \
--if-match $etag
法律保留會儲存不可變更的資料,直到明確解除法律保留為止。 若要深入了解合法保存原則,請參閱不可變 Blob 資料的合法保存。
若要使用 Azure 入口網站對容器設定法律保留,請依照下列步驟操作:
導覽至所需的容器。
選取 [更多] 按鈕,然後選擇 [存取原則]。
在 不可變 Blob 版本 區段中,選取 新增原則。
選擇 [合法保存] 作為原則類型。
新增一或多個合法保留標籤。
選擇是否允許受保護的附加寫入,然後選取 [儲存]。
附加 Blob 選項可讓您的工作負載使用 附加區塊 作業,將新的資料區塊附加到附加 Blob 的尾端。
此設定也會新增將新區塊寫入區塊 Blob 的功能。 Blob 儲存體 API 不提供讓應用程式直接執行此動作的途徑。 不過,應用程式可以使用 Data Lake Storage API 中提供的 append 和 flush 方法來達成此目的。 此外,此屬性可讓 Microsoft 應用程式 (例如 Azure Data Factory) 使用內部 API 來附加資料區塊。 如果您的工作負載相依於上述任何工具,您可以使用此屬性,以避免在這些工具嘗試將資料附加至 Blob 時出現錯誤。
若要深入了解這些選項,請參閱允許受保護的附加 Blob 寫入。
設定不變性原則之後,您會看到其範圍限定於容器:
下圖顯示已同時設定以時間為基礎的保留原則和法律保留的容器。
若要清除法律保留,請流覽至 [ 存取原則 ] 對話框,然後在原則的操作功能表中,選取 [ 編輯]。 接著,刪除該原則的所有標籤,以清除保留狀態。
若要使用 PowerShell 在容器上設定合法保存,請呼叫 Add-AzRmStorageContainerLegalHold 命令。 請記得以您自己的值取代角括號中的預留位置值:
Add-AzRmStorageContainerLegalHold -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-Name <container> `
-Tag <tag1>,<tag2>,...`
-AllowProtectedAppendWriteAll true
若要移除法定保留,請呼叫 Remove-AzRmStorageContainerLegalHold 命令:
Remove-AzRmStorageContainerLegalHold -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-Name <container> `
-Tag <tag1>,<tag2>,...
若要使用 PowerShell 在容器上設定合法保存,請呼叫 az storage container legal-hold set 命令。 請記得以您自己的值取代角括號中的預留位置值:
az storage container legal-hold set \
--tags tag1 tag2 \
--container-name <container> \
--account-name <storage-account> \
--resource-group <resource-group> \
--allow-protected-append-writes-all true
若要清除法律保留,請執行 az storage container legal-hold clear 命令:
az storage container legal-hold clear \
--tags tag1 tag2 \
--container-name <container> \
--account-name <storage-account> \
--resource-group <resource-group> \
下一步