Azure Blob 存储的不可变存储使用户能够以 WORM(一次写入,多次读取)状态存储业务关键的数据。 在 WORM 状态下,在用户指定的间隔内无法修改或删除数据。 为 Blob 数据配置不可变性策略可以防范数据被覆盖和删除。 不可变性策略包括基于时间的保留策略和法定保留。 有关 Blob 存储的不可变性策略的详细信息,请参阅使用不可变存储来存储业务关键型 Blob 数据。
不可变性策略的范围可以限定为单个 Blob 版本或容器。 本文介绍如何配置容器级不可变性策略。 若要了解如何配置版本级不可变性策略,请参阅为 Blob 版本配置不可变性策略。
注意
启用了网络文件系统 (NFS) 3.0 协议或 SSH 文件传输协议 (SFTP) 的帐户不支持不可变性策略。
若要在容器上配置基于时间的保留策略,请使用 Azure 门户、PowerShell 或 Azure CLI。 可以将容器级别的保留策略配置为介于 1 到 146000 天之间。
若要使用 Azure 门户在容器上配置基于时间的保留策略,请执行以下步骤:
导航到所需的容器。
选择右侧的“更多”按钮,然后选择“访问策略” 。
在“不可变 blob 存储”部分,选择“添加策略” 。
对于“策略类型”字段,请选择“基于时间的保留”并指定保留天数 。
若要创建容器范围的策略,请勿选中“启用版本级不可变性”复选框。
选择是否允许受保护的追加写入。
“追加 Blob”选项使工作负荷能够使用追加块操作将新的数据块添加到追加 Blob 的末尾。
若要详细了解这些选项,请参阅允许受保护的追加 Blob 写入。
配置不可变性策略后,你会看到它的范围限定为容器:
若要使用 PowerShell 在容器上配置基于时间的保留策略,请调用 Set-AzRmStorageContainerImmutabilityPolicy 命令,并提供保留间隔(天)。 请务必将尖括号中的占位符值替换为你自己的值:
Set-AzRmStorageContainerImmutabilityPolicy -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-ContainerName <container> `
-ImmutabilityPeriod 10
若要允许受保护的追加写入,请将 -AllowProtectedAppendWrite
参数设置为 true
。
“AllowProtectedAppendWrite”选项使工作负荷能够使用追加块操作将新的数据块添加到追加 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
参数设置为 true
。
“--allow-protected-append-writes”选项使工作负荷能够使用追加块操作将新的数据块添加到追加 Blob 的末尾。
若要详细了解这些选项,请参阅允许受保护的追加 Blob 写入。
修改已解锁的保留策略
你可以修改已解锁的基于时间的保留策略,以缩短或延长保留间隔,并允许在容器中额外写入追加 blob。 还可删除已解锁的策略。
若要在 Azure 门户中修改已解锁的基于时间的保留策略,请执行以下步骤:
导航到所需的容器。
依次选择“更多”按钮和“访问策略” 。
在“不可变 Blob 版本”部分下,找到现有的已解锁策略。 选择“更多”按钮,然后从菜单中选择“编辑” 。
为策略提供新的保留间隔。 还可选择“允许其他受保护的追加”,以允许写入受保护的追加 blob。
若要删除已解锁的策略,请选择“更多”按钮,然后选择“删除” 。
若要修改已解锁的策略,请先通过调用 AzRmStorageContainerImmutabilityPolicy 命令以检索策略。 接下来,调用 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 `
-AllowProtectedAppendWrite true `
-Etag $policy.Etag `
-ExtendPolicy
若要删除已解锁的策略,请调用 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 true
若要删除已解锁的策略,请调用 az storage container immutability-policy delete 命令。
锁定基于时间的保留策略
测试完基于时间的保留策略后,可以锁定该策略。 已锁定的策略符合 SEC 17a-4(f) 和其他法规标准。 最多可将已锁定策略的保留间隔延长五倍,但不能缩短保留间隔。
锁定策略后,无法删除该策略。 但是,可以在保留间隔过期后删除 blob。
若要使用 Azure 门户锁定策略,请执行以下步骤:
- 导航到具有已解锁策略的容器。
- 在“不可变 blob 版本”部分下,找到现有的已解锁策略。 选择“更多”按钮,然后从菜单中选择“锁定策略” 。
- 确认要锁定该策略。
若要使用 PowerShell 锁定策略,请先调用 Get-AzRmStorageContainerImmutabilityPolicy 命令以检索策略的 ETag。 接下来,调用 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 版本”部分下,选择“添加策略” 。
选择“法定保留”作为策略类型。
添加一个或多个法定保留标记。
配置不可变性策略后,你会看到它的范围限定为容器:
下图显示了一个配置了基于时间的保留策略和法定保留的容器。
若要清除法定保留,请导航到“访问策略”对话,在策略的上下文菜单中选择“编辑”。 然后,删除策略的所有标记以清除保留。
若要使用 PowerShell 配置容器上的法定保留,请调用 AzRmStorageContainerLegalHold 命令。 请务必将尖括号中的占位符值替换为你自己的值:
Add-AzRmStorageContainerLegalHold -ResourceGroupName <resource-group> `
-StorageAccountName <storage-account> `
-Name <container> `
-Tag <tag1>,<tag2>,...
若要清除法定保留,请调用 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> \
若要清除合法保留,请调用 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> \
后续步骤