你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
容器级写入一次,读取多个 (WORM) 策略,以获取不可变 blob 数据
容器级写入一次,读取多个 (WORM) 策略是可在容器级别设置的不可变性策略类型。 若要详细了解 Azure Blob 存储的不可变存储,请参阅在写入一次中存储具有不可变存储的业务关键 blob 数据,读取多个 (WORM) 状态
可用性
容器级 WORM (CLW) 策略适用于所有新容器和现有容器。 常规用途 v2、高级块 blob、常规用途 v1(旧版)和 Blob 存储(旧版)帐户支持这些策略。
提示
Microsoft 建议将常规用途 v1 帐户升级为常规用途 v2,以便可以利用更多的功能。 有关升级现有常规用途 v1 存储帐户的信息,请参阅升级存储帐户。
分层命名空间帐户支持此功能。 如果启用了分层命名空间,在 blob 处于不可变状态时,不能重命名或移动该 blob。 Blob 名称和目录结构提供重要的容器级数据,在不可变策略生效后不可对其进行修改。
此功能没有启用过程,它自动适用于所有容器。 若要详细了解如何在新容器或现有容器上设置策略,请参阅配置容器级 WORM 不可变性策略。
删除
容器级 WORM 策略集的容器必须为空,然后才能删除容器。 如果在启用了分层命名空间的容器上设置了策略,则目录必须为空,然后才能将其删除。
方案
场景 | 禁止的操作 | Blob 保护 | 容器保护 | 帐户保护 |
---|---|---|---|---|
容器受容器范围的有效基于时间的保留策略保护,并且/或者某个法定保留会生效 | 删除 Blob、放置 Blob1、设置 Blob 元数据、放置页面、设置 Blob 属性、快照 Blob、增量复制 Blob、追加块2 | 容器中所有 blob 的内容和用户元数据不可变。 | 如果容器级 WORM 策略已生效,则容器删除操作将会失败。 | 如果某个容器中至少存在一个 blob,则存储帐户删除操作将会失败。 |
容器受容器范围的、已过期的基于时间的保留策略保护,并且不会有任何法定保留生效 | 放置 Blob1、设置 Blob 元数据、放置页面、设置 Blob 属性、快照 Blob、增量复制 Blob、追加块2 | 允许执行删除操作。 不允许执行覆盖操作。 | 如果容器中至少存在一个 Blob,无论策略是已锁定还是已解锁,容器删除操作都将失败。 | 如果至少有一个容器具有已锁定的基于时间的保留策略,则存储帐户删除操作将会失败。 已解锁的策略不提供删除保护。 |
1 Azure 存储允许使用放置 Blob 操作来创建新的 Blob。用。 不允许针对不可变容器中的现有 blob 路径执行后续覆盖操作。
2 只有启用了“allowProtectedAppendWrites”或“allowProtectedAppendWritesAll”属性的策略才允许执行追加块操作。
允许受保护的追加 Blob 写入
追加 Blob 由数据块组成,并针对审核和日志记录方案所需的数据追加操作进行了优化。 按照设计,追加 Blob 只允许将新块添加到 Blob 末尾。 无论是否不可变,基本上都不允许修改或删除追加 Blob 中的现有块。 若要详细了解追加 Blob,请参阅关于追加 Blob。
allowProtectedAppendWrites 属性设置允许将新块写入到追加 blob,同时保持不可变性保护与合规性。 如果已启用此设置,则可以直接在受策略保护的容器中创建追加 Blob,然后使用“追加块”操作继续将新数据块添加到追加 Blob 的末尾。 只能添加新块,而不能修改或删除任何现有块。 启用此设置不影响块 Blob 或页 Blob 的不可变性行为。
AllowProtectedAppendWritesAll 属性设置提供与 allowProtectedAppendWrites 属性相同的权限,并添加了将新块写入块 Blob 的功能。 Blob 存储 API 不提供方便应用程序直接执行此操作的方法。 但是,应用程序可以使用 Data Lake Storage Gen2 API 中提供的追加和刷新方法来实现此目的。 另外,此属性使 Microsoft 应用程序(如 Azure 数据工厂)能够使用内部 API 来追加数据块。 如果工作负荷依赖于这些工具中的任何一种,则可以使用此属性来避免在这些工具尝试将数据追加到 Blob 时可能出现的错误。
追加 Blob 在有效保留期内保持不可变状态。 由于新数据可以在最初创建追加 Blob 之后追加,因此确定保留期的方式略有不同。 有效保留期是追加 Blob 的上次修改时间和用户指定的保留时间间隔之差。 类似地,当延长保留间隔时,不可变存储将使用用户指定的保留间隔的最新值来计算有效保留期。
例如,假设用户创建了一个基于时间的保留策略,该策略已启用 allowProtectedAppendWrites 属性,保留间隔为 90 天。 当天在容器中创建了追加 Blob logblob1,而接下来的 10 天,新日志会持续添加到该追加 Blob,因此,logblob1 的有效保留期是从当天开始算起的 100 天(最后一次追加的时间 + 90 天) 。
已解锁的基于时间的保留策略允许随时启用和禁用 allowProtectedAppendWrites 和 AllowProtectedAppendWritesAll 属性设置。 锁定基于时间的保留策略后,无法更改 allowProtectedAppendWrites 和 AllowProtectedAppendWritesAll 属性设置。
限制
对于存储帐户,具有不可变策略(基于时间的保留或法定保留)的最大容器数为 10,000。
对于容器,任何一次法定保留标记的最大数目为 10。
法定保留标记的最小长度为三个字母数字字符。 最大长度为 23 个字母数字字符。
对于容器,在策略持续时间内最多保留 10 个法定保留策略审核日志。