本文內容
Azure Blob 儲存體的不變性儲存體可讓使用者以 WORM (一次寫入,多次讀取) 狀態儲存商務關鍵性資料。 在 WORM 狀態下,您無法在使用者指定的間隔內修改或刪除資料。 您可設定 Blob 資料的永久性原則,以免資料遭覆寫和刪除。 不變性原則包含限時保留原則和合法保存。 如需 Blob 儲存體不變性原則的詳細資訊,請參閱使用不可變儲存體儲存商務關鍵性 Blob 資料 。
不變性原則的範圍可能是個別 Blob 版本或容器。 本文說明如何設定容器層級的不變性原則。 若要了解如何設定版本層級不變性原則,請參閱 設定 Blob 版本的不變性原則 。
注意
在已啟用網路檔案系統 (NFS) 3.0 通訊協定或 SSH 檔案傳輸通訊協定 (SFTP) 的帳戶中,不支援不變性原則。
若要在容器上設定限時保留原則,請使用 Azure 入口網站、PowerShell 或 Azure CLI。 您可以設定介於 1 到 146,000 天之間的容器層級保留原則。
若要使用 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> \
下一步