使用处于一次写入、多次读取 (WORM) 状态的不可变存储来存储业务关键 Blob 数据

Azure Blob 存储 的不可变存储允许你以 WORM(写一次,多次读取)状态存储业务关键数据。 在 WORM 状态下,在用户指定的间隔内无法修改或删除数据。 为 Blob 数据配置不可变性策略可以防范数据被覆盖和删除。

Azure Blob 存储的不可变存储支持两种类型的不可变性策略:

  • 基于时间的保留策略:使用基于时间的保留策略,用户可以设置策略以按指定的间隔持续时间存储数据。 设置基于时间的保留策略后,可以创建和读取对象,但不能修改或删除对象。 保留期过后,对象可以被删除,但不能被覆盖。

  • 法定保留策略:在显式清除法定保留之前,该法定保留会一直存储不可变数据。 设置法定保留后,可以创建和读取对象,但不能修改或删除对象。

你可以同时设置这些策略。 例如,你可以在同一级别同时设置基于时间的保留策略和法定保留。 要让写入成功,你要么启用了版本控制,要么对数据既没有法律保留,也没有基于时间的保留策略。 要成功删除数据,该数据不得受法律保留或基于时间的保留策略约束。

下图显示了基于时间的保留策略和法律保留如何在其生效期间阻止写入和删除操作。

显示保留策略和法定保留如何防止写入和删除操作的示意图。

不可变存储之下存在两个功能:容器级 WORM 和版本级 WORM。 容器级 WORM 允许你在容器层面设置策略,而版本级 WORM 允许你在账户、容器或版本层面设置策略。

关于 Blob 存储对象的不可变存储

不可篡改存储帮助医疗机构、金融机构及相关行业(尤其是经纪自营机构)安全存储数据。 不可变存储可以在任何方案中用于防止修改或删除关键数据。

典型的应用程序包含:

  • 法规遵从:Azure Blob 存储的不可变存储可帮助组织达到 SEC 17a-4(f)、CFTC 1.31(d)、FINRA 和其他法规要求。

  • 安全的文档保留:Blob 的不可变存储确保任何用户(甚至包括拥有帐户管理特权的用户)都无法修改或删除数据。

  • 法定保留:Blob 对象的不可变存储使你能够以防篡改状态存储对诉讼或业务用途至关重要的敏感信息,并在移除法定保留之前保持该状态达所需时长。 此功能并不仅限于法律用例,而是还可将其视为基于事件的保留或企业锁定机制,其中基于事件触发器或企业策略保护数据的需求则是必需的。

基于时间的保留策略

基于时间的保留策略会在指定的间隔内以 WORM 格式存储 Blob 数据。 当你设置基于时间的保留策略时,客户端可以创建和读取blob,但不能修改或删除它们。 保留期结束后,blob 可以被删除但不能覆盖。

Scope

你可以在以下范围内配置基于时间的保留策略:

  • 版本级 WORM 策略:在账户、容器或版本级别配置基于时间的保留策略(账户必须启用版本控制)。 如果你在账户或容器层面配置,相应账户或容器中的所有 blob 都会继承该策略。 如果某个容器存在法律限制,你就无法为同一容器创建版本级别的 WORM。 这一限制存在是因为法律保留阻止了生成这些版本。
  • 容器级 WORM 策略:在容器级配置的基于时间的保留策略将应用于该容器中的所有 Blob。 不能为单个 Blob 配置其各自的不可变策略。

基于时间的策略的保留间隔

基于时间的保留策略的保留间隔最小为 1 天,最大为 146,000 天(400 年)。 在配置基于时间的保留策略时,受影响对象将在有效保留期内保持不可变状态。 对象的有效保留期是 Blob 创建时间和用户指定的保留间隔之差。 由于策略的保留间隔可以延长,不可变存储使用用户指定的保留间隔的最新值来计算有效保留期。

例如,假设用户创建了一个基于时间的保留策略,将保留时间间隔设置为五年。 一年前,在该容器中创建了现有的 Blob testblob1,因此,testblob1 的有效保留期为四年 。 当新 Blob testblob2 被上传到容器时,其有效保留期为从创建时间开始算起的五年。

已锁定策略与未锁定策略

首次配置基于时间的保留策略时,将出于测试目的解锁该策略。 完成测试后,可以锁定该策略,以便其完全符合 SEC 17a-4(f) 和其他法规合规性。

已锁定策略和开放策略都能够防止删除和覆盖。 但是,可以通过缩短或延长保留期来修改已解锁的策略。 还可以删除已解锁的策略。 无法删除已锁定的基于时间的保留策略。 可以延长但不能缩短保留期。 在容器级别定义的已锁定策略的整个生命周期内,最多可以延长有效保留期五次。 针对 Blob 版本配置的策略的有效期延长次数没有限制。

重要

根据 SEC 17a-4(f) 和其他监管合规性要求,基于时间的保留策略必须被锁定,以保证 Blob 处于合规和不可变的状态(即保护其不被写入和删除)。 我们建议您在合理的时间内锁定政策,通常不超过 24 小时。 虽然解锁状态提供了不可变性保护,但我们不建议将解锁状态用于短期测试以外的任何用途。

保留策略审核日志记录

每个启用了基于时间的保留策略的容器都会提供策略审核日志。 审核日志最多包含七个与已锁定的基于时间的保留策略相关的命令。 锁定策略后,日志记录一般会开始。 日志条目包括用户 ID、命令类型、时间戳和保留间隔。 根据 SEC 17a-4(f) 法规准则,审核日志将会在策略生存期内保留。

Azure 活动日志提供有关所有管理服务活动的更全面日志。 Azure 资源日志保留有关数据操作的信息。 您有责任持续存储这些日志,这可能是监管或其他目的所需要的。

不会审核对版本级基于时间的保留策略所做的更改。

法定保留是一种临时不可变策略,可用于法律调查目的或常规保护策略。 法律保留会以“一次写入、多次读取”(WORM) 格式存储 Blob 数据,直到明确解除该保留。 法定保留生效时,Blob 可以创建和读取,但不能修改或删除。 如果数据必须保持为 WORM 状态的时间是未知的,请使用法定保留。

Scope

可在以下任一范围配置法定保留策略:

  • 版本级 WORM 策略:可以在单个 blob 版本层面配置法律保留,以实现敏感数据的细致管理(账户必须启用版本控制)。

  • 容器级 WORM 策略:在容器级配置的法定保留适用于该容器中的所有 Blob。 无法为单个 Blob 配置其自己的不可变策略。

标记

您必须将容器级法律保留与一个或多个用户定义的字母数字标签关联,这些标签作为标识符字符串。 例如,标签可能包含案件编号或事件名称。

审核日志

每个具有法律保留效力的容器都提供一个策略合规审核日志。 该日志包含用户 ID、命令类型、时间戳和法定保留标记。 根据 SEC 17a-4(f) 法规准则,审核日志将会在策略生存期内保留。

Azure 活动日志提供有关所有管理服务活动的更全面日志。 Azure 资源日志保留有关数据操作的信息。 您有责任持续存储这些日志,这可能是监管或其他目的所需要的。

对于版本级别的法定保留所进行的更改,不会被审核。

不可变存储功能选项

下表显示了容器级 WORM 与版本级 WORM 之间差异的明细:

类别 容器级 WORM 版本级 WORM
策略粒度级别 只在容器层面配置策略。 你上传到容器中的每个对象都会继承不可变的策略集。 在账户、容器或 blob 层面配置策略。 如果你在账户层面设置了策略,所有你上传到该账户的 blob 都会继承该策略。 容器会遵循相同的逻辑。 如果你在多个级别设置了策略,则优先顺序始终为 Blob -> 容器 -> 存储帐户。
可用的策略类型 在容器层面设置两种不同类型的策略:基于时间的保留策略和法定保留。 在账户和容器层面,只设置基于时间的保留政策。 在 Blob 级别,同时设置基于时间的保留策略和法定保留。
功能依赖关系 使用此功能不需要其他功能作为必备条件或要求。 版本控制是使用此功能的先决条件。
现有账户和容器的启用 可随时为现有容器启用此功能。 根据细粒度的不同,该功能可能无法为所有现有账户和容器启用。
帐户/容器删除 在你锁定了基于时间的保留策略后,只有当容器是空的,你才能删除。 在账户或容器层启用版本级 WORM 后,只有当它们是空的,你才能删除它们。
支持 Azure Data Lake Storage(启用了分层命名空间的存储帐户) 支持具有层级命名空间的账户中的容器级 WORM 策略。 在拥有层级命名空间的账户中,版本级的 WORM 策略尚未被支持。

想了解更多关于容器级 WORM 的信息,请参见 容器级 WORM 策略。 想了解更多版本级 WORM 的信息,请参见 版本级 WORM 策略

容器级 WORM 与版本级 WORM

下表可帮助你确定要使用的 WORM 策略类型。

条件 容器级 WORM 用法 版本级 WORM 用法
数据组织 你需要为特定数据集设置策略,这些数据集可以按容器分类。 该容器中的所有数据需要在同一时间段内保持 WORM 状态。 不能按保持期将对象分组。 所有数据块必须根据该数据块的场景设置单独的保留时间,否则工作负载混合,这样有些数据组可以聚集成容器,而其他数据组则不能。 可能还需要在同一帐户中设置容器级策略和 Blob 级策略。
需要不可变策略的数据量 无需在每个账户中为超过 10,000 个容器设置策略。 你要为所有数据或大量数据设定政策,并按账户划分。 你知道,如果使用容器级 WORM,则必须超过 10,000 个容器限制。
对启用版本控制感兴趣 你不想启用版本控制是因为成本问题,或是因为工作负载会产生大量的额外版本需要处理。 你要么想要使用版本控制,要么不介意使用它。 你知道,如果不启用版本控制,就无法将对不可变 Blob 对象的编辑或覆盖保留为单独的版本。
存储位置(Blob 存储与数据湖存储) 您的工作负载完全集中在 Azure Data Lake Storage 上。 你目前没有兴趣或计划切换为使用未启用分层命名空间功能的帐户。 您的工作负载要么位于未启用分层命名空间功能的帐户中的 Blob 存储上,现在可以使用版本级 WORM,要么您愿意等待为启用了分层命名空间的帐户 (Azure Data Lake Storage) 提供版本控制。

访问层级

所有 Blob 访问层都支持不可变存储。 你可以用 设置 Blob 层 级操作更改 blob 的访问层级。 有关详细信息,请参阅 Blob 数据的访问层

冗余配置

所有冗余配置都支持不可变存储。 有关冗余配置的详细信息,请参阅 Azure 存储冗余

我们建议您主要为 block blob 和 append blob 配置不可变性策略。 不建议为存储正在运行的虚拟机的 VHD 磁盘的页 Blob 配置不可变策略,因为对该磁盘的写入会被阻止;或者,如果启用了版本控制,则每次写入都会存储为新版本。 建议在锁定任何基于时间的策略之前,仔细查看文档并测试方案。

使用 Blob 软删除的不可变存储

当你为存储账户配置 Blob 软删除时,无论法定保留或基于时间的保留策略是否生效,它都适用于该账户中的所有 Blob。 建议在应用任何不可变性策略之前启用软删除,以提供额外的保护。

如果你启用了blob软删除,然后配置不可变策略,那么你已经软删除的所有blob都会在软删除保留策略到期后永久删除。 你可以在软删除保留期内恢复已软删除的 Blob。 你还没软删除的blob或版本受不可篡改性策略保护,必须等基于时间的保留策略到期或法律保留解除后才能软删除。

使用 Blob 清单来跟踪不可变性策略

Azure 存储 Blob 清单提供存储帐户中的容器以及这些容器中的 Blob、快照和 Blob 版本的概述。 可以使用 Blob 清单报告来了解 Blob 和容器的属性,包括是否为资源配置了不可变性策略。

启用 Blob 库存后,Azure 存储每天会生成库存报告。 该报表概述了有关业务和符合性要求的数据。

有关 Blob 清单的详细信息,请参阅 Azure 存储 Blob 清单

注意

如果账户上启用了版本级不可变性支持,或者你在库存策略中定义的目标容器上启用了版本级不可篡改性支持,你就无法在账户中配置库存策略。

定价

使用不可变存储不会产生额外的容量费用。 不可变数据的定价方式与可变数据的定价方式相同。 如果你用的是版本级的 WORM,账单可能会更高,因为你启用了版本管理,而且存储额外版本会带来成本。 有关详细信息,请查看版本控制定价策略。 有关 Azure Blob 存储的定价详细信息,请参阅 Azure 存储定价页

创建或删除基于时间的保留策略或对 Blob 版本的法律保留会导致写入事务费用。 修改基于时间的保留策略(无论是锁定还是延长)都会产生“其他”操作费用“。 有关交易费用的更多信息,请参见 操作与数据传输

如果未能支付帐单,并且帐户中已有一个基于时间的保留策略生效,则根据你与我们签订的合同条款和条件的规定,将适用正常的数据保留策略。 有关一般信息,请参阅 Azure 数据管理

功能支持

重要

此功能与时间点还原和上次访问跟踪 不兼容

该功能支持客户管理的计划外故障切换。 然而,在上次同步时间后对不可变策略所做的任何更改(比如锁定基于时间的保留策略或延长时间)都不会同步到次要区域。 故障转移完成后,你可以对次要区域重新应用这些更改,以确保其符合最新的不可变性要求。 不可变性策略不支持在启用了网络文件系统 (NFS) 3.0 协议或 SSH 文件传输协议 (SFTP) 的帐户中使用。

某些工作负载(如 SQL Server 备份到 URL)会创建一个 blob,然后在此基础上进行增加。 如果容器已设置生效的基于时间的保留策略或法定保留,此模式将无法成功。 有关详细信息,请参阅允许受保护的追加 Blob 写入

有关详细信息,请参阅 Azure 存储帐户中的 Blob 存储功能支持

后续步骤