选择并配置防范数据安全威胁的适当方法(包括软删除、备份、版本控制以及不可变存储)
Azure 存储为 Blob Storage 和 Azure Data Lake Storage Gen2 提供全面的数据保护,帮助用户应对需恢复已删除或被覆盖数据的情况。 数据保护是安全策略的一个关键组成部分,假设存在违规并确保可以从安全事件中恢复,从而与零信任原则保持一致。 请务必考虑在可能导致数据泄露的事件发生之前如何最好地保护数据,无论是恶意行为者、意外删除还是操作失误。
基本数据保护建议
如果你正在查找存储帐户的基本数据保护覆盖范围以及它所包含的数据,Microsoft 建议从以下步骤开始:
- 在存储帐户上配置 Azure 资源管理器锁,以保护帐户免受删除或配置更改的影响。 这可以防止意外或未经授权的删除整个存储帐户。
- 为存储帐户启用容器软删除 以恢复已删除的容器及其内容。 这为防止意外删除容器提供了安全网络。
-
定期保存 Blob 的状态:
- 对于 Blob 存储工作负荷,每次覆盖 blob 时,启用 blob 版本控制以自动保存数据的状态。
- 对于 Azure Data Lake Storage 工作负荷,请生成手动快照,以保存特定的时间点的数据状态。
数据保护选项概述
下表总结了 Azure 存储中可用于常见数据保护方案的选项。 选择适用于你的情况的方案,以详细了解可供你使用的选项。 并非所有功能都适用于启用了分层命名空间的存储帐户。
安全说明:实施多层数据保护可提供深层防御,并确保可以从各种类型的事件(包括勒索软件攻击、意外删除和恶意数据修改)中恢复。
| 场景 | 数据保护选项 | 建议 | 保护优势 | 适用于 Data Lake Storage |
|---|---|---|---|---|
| 阻止删除或修改存储帐户。 | Azure 资源管理器锁定 了解更多信息。。。 |
使用 Azure 资源管理器锁定锁定所有存储帐户,以防止删除存储帐户。 | 防止存储帐户被删除或配置被更改。 无法防止帐户中的容器或 blob 被删除或覆盖。 |
是 |
| 在你控制的时间间隔防止删除 blob 版本。 | blob 版本上的不可变性策略 了解更多信息。。。 |
为了满足法律或法规遵从性要求等目的,在单个 blob 版本上设置一个不可变性策略以保护业务关键文档。 | 防止删除 blob 版本和覆盖其元数据。 每个覆盖操作都会创建一个新版本。 如果至少有一个容器启用了版本级不可变性,存储帐户也会受到保护,无法删除。 如果容器中至少存在一个 blob,则容器删除将失败。 |
否 |
| 在你控制的时间间隔防止容器及其 blob 被删除或修改。 | 容器上的不可变性策略 了解更多信息。。。 |
在容器上设置一个不可变性策略以保护关键业务文档,例如,为了满足法律或法规遵从性要求。 | 防止容器及其 blob 被删除和覆盖。 当合法保留或锁定的基于时间的保留策略生效时,存储帐户也会受到保护,无法删除。 未设置任何永久性策略的容器不会受到防删除的保护。 |
是 |
| 在指定的时间间隔内还原已删除的容器。 | 容器软删除 了解更多信息。。。 |
为所有存储帐户启用容器软删除,最短保留间隔为七天。 与容器软删除一起启用 blob 版本控制和 blob 软删除,以保护容器中的各个 blob。 在单独的存储帐户中存储需要不同保留期的容器。 |
删除的容器及其内容在保留期内可以被还原。 只能还原容器级操作(例如删除容器)。 如果删除了容器中的单个 blob,则无法通过容器软删除来还原该容器中的单个 blob。 |
是 |
| 在覆盖 blob 时,自动将其状态保存在以前的版本中。 | Blob 版本控制 了解更多信息。。。 |
对于某些存储帐户,如果需要对 blob 数据进行最佳保护,则启用 blob 版本控制,以及容器软删除和 blob 软删除。 将不需要版本控制的 blob 数据存储在不同的帐户中以限制成本。 |
每个 blob 写入操作都会创建一个新版本。 如果删除或覆盖当前版本,则可以从以前的版本还原 blob 的当前版本。 | 否 |
| 在指定的时间间隔内还原已删除的 blob 或 blob 版本。 | Blob 软删除 了解更多信息。。。 |
为所有存储帐户启用 blob 软删除,最短保留间隔为七天。 启用 blob 版本控制和容器软删除以及 blob 软删除功能,以实现 blob 数据的最佳保护。 在单独的存储帐户中存储需要不同保留期的 blob。 |
在保留期内可以还原已删除的 blob 或 blob 版本。 | 是 |
| 将一组块 blob 还原到以前的时间点。 | 时间点还原 了解更多信息。。。 |
要使用时间点还原恢复到以前的状态,请将应用程序设计为删除单个块 blob,而不是删除容器。 | 可以将一组块 blob 还原为过去特定时间点的状态。 只能还原在块 blob 上执行的操作。 对容器、页 blob 或追加 blob 执行的任何操作都不会还原。 |
否 |
| 手动保存 blob 在给定时间点的状态。 | Blob 快照 了解更多信息。。。 |
如果版本管理不适合你的方案(由于成本或其他考虑因素)或者存储帐户已启用分层命名空间,则建议采用 blob 版本控制的替代方法。 | 如果 blob 被覆盖,则可以从快照还原 blob。 如果删除该 blob,则快照也将被删除。 | 是 |
| blob 可以被删除或覆盖,但数据会定期复制到另一个存储帐户。 | 使用 Azure 存储对象复制或 AzCopy 或 Azure 数据工厂等工具将数据复制到第二个帐户的自创解决方案。 | 为了让保护更安心,建议采用,以防意外的有意操作或不可预测的情况。 在主帐户所在的同一区域中创建第二个存储帐户,以避免产生传出流量费用。 |
如果主要帐户以任何方式泄露,则可以从第二个存储帐户中还原数据。 | 支持 AzCopy 和 Azure 数据工厂。 不支持对象复制。 |
按资源类型进行的数据保护
下表根据所保护的资源总结了 Azure 存储数据保护选项。
| 数据保护选项 | 保护帐户不被删除 | 保护容器不被删除 | 保护对象不被删除 | 保护对象不被覆盖 |
|---|---|---|---|---|
| Azure 资源管理器锁定 | 是 | 否 | 否 | 否 |
| blob 版本上的不可变性策略 | 是 | 是 | 是 | 是 |
| 容器上的不可变性策略 | 是 | 是 | 是 | 是 |
| 容器软删除 | 否 | 是 | 否 | 否 |
| Blob 版本控制 | 否 | 否 | 是 | 是 |
| Blob 软删除 | 否 | 否 | 是 | 是 |
| 时间点还原 | 否 | 否 | 是 | 是 |
| Blob 快照 | 否 | 否 | 否 | 是 |
| 用于将数据复制到第二个帐户的自带解决方案 | 否 | 是 | 是 | 是 |
了解 Azure 存储中数据保护的细微差别可揭示多个作见解和限制,这些见解和限制对于安全性和符合性都很重要:
- Azure 资源管理器锁不会保护容器免受删除,仅保护存储帐户本身。
- 如果至少有一个容器启用了版本级不可变存储,则存储帐户删除会失败,从而防止意外删除帐户。
- 如果容器中至少有一个 Blob 存在,则容器删除将失败,而不管不可变性策略是锁定还是解锁。
- 覆盖 Blob 当前版本的内容会创建新版本。 不可变性策略可保护版本的元数据不被覆盖,确保数据完整性。
- 当法定保留或锁定的基于时间的保留策略在容器范围内生效时,存储帐户也会受到删除保护,从而确保合规性保护。
- 目前不支持 Data Lake Storage 工作负荷(适用于 Blob 版本控制和时间点还原)。
- 对于 Blob 存储和 Data Lake Storage 工作负荷,AzCopy 和 Azure 数据工厂是支持的选项。 仅 Blob 存储工作负荷支持对象复制。
恢复删除或覆盖的数据
如果需要恢复已覆盖或已删除的数据,则如何继续取决于已启用的数据保护选项以及受影响的资源。 下表描述了可以执行哪些操作来恢复数据。
| 已删除或覆盖的资源 | 可能的恢复操作 | 恢复要求 |
|---|---|---|
| 存储帐户 | 尝试恢复已删除的存储帐户 |
存储帐户最初是用 Azure 资源管理器部署模型创建的,并且是在过去 14 天内删除。 删除原始帐户后,尚未创建同名的新存储帐户。 |
| 容器 | 恢复软删除容器及其内容 |
已启用容器软删除并且容器软删除保留期尚未过期。 |
| 容器和 Blob | 还原另一个存储帐户中的数据 | 所有容器和 blob 操作都已有效地复制到另一个存储帐户。 |
| Blob(任何类型) | 从以前的版本还原 Blob |
已启用 blob 版本控制,且 blob 具有一个或多个以前版本。 |
| Blob(任何类型) | 恢复已软删除的 blob |
已启用 blob 软删除,且软删除保留间隔尚未过期。 |
| Blob(任何类型) | 从快照还原 blob |
Blob 具有一个或多个快照。 |
| 块 blob 集 | 将一组块 Blob 恢复到它们在较早时间点的状态 |
已启用时间点还原,且还原点在保留间隔内。 存储帐户未泄露或损坏。 |
| Blob 版本 | 恢复软删除的版本 |
已启用 Blob 软删除 |
成本注意事项摘要
| 数据保护选项 | 成本注意事项 |
|---|---|
| 存储帐户的 Azure Resource Manager 锁定 | 在存储帐户上配置锁定是免费的。 |
| blob 版本上的不可变性策略 | 在容器上启用版本级不可变性是免费的。 在 Blob 版本上创建、修改或删除基于时间的保留策略或法定保留会产生写入事务费用。 |
| 容器上的不可变性策略 | 在容器上配置永久性策略是免费的。 |
| 容器软删除 | 为存储帐户启用容器软删除是免费的。 软删除容器中的数据将按与活动数据相同的费率进行计费,直到软删除容器被永久删除。 |
| Blob 版本控制 | 为存储帐户启用 blob 版本控制是免费的。 启用 blob 版本控制后,对该帐户中的 blob 进行的每次写入或删除操作都将创建一个新版本,这可能会导致增加容量成本。 Blob 版本根据唯一的块或页进行计费。 因此,随着基础 blob 与特定版本分离,成本也会随之增加。 更改 blob 或 blob 版本的层级可能会对计费产生影响。 有关详细信息,请参阅 定价和计费。 根据需要使用生命周期管理来删除旧版本,以控制成本。 有关详细信息,请参阅 通过自动执行 Azure Blob 存储访问层来优化成本。 |
| Blob 软删除 | 为存储帐户启用 blob 软删除是免费的。 软删除 blob 中的数据将按与活动数据相同的费率进行计费,直到软删除 blob 被永久删除。 |
| 时间点还原 | 为存储帐户启用时间点还原是免费的;但是,启用时间点还原还会启用 blob 版本控制、软删除和更改源,其中每一项都可能产生其他费用。 执行还原操作时,会按时间点还原收费。 还原操作的成本取决于要还原的数据量。 有关详细信息,请参阅 定价和计费。 |
| Blob 快照 | 根据唯一的块或页对快照中的数据计费。 因此,随着基础 blob 与快照分离,成本也会随之增加。 更改 blob 或快照的层级可能会对计费产生影响。 有关详细信息,请参阅 定价和计费。 根据需要使用生命周期管理来删除旧快照,以控制成本。 有关详细信息,请参阅 通过自动执行 Azure Blob 存储访问层来优化成本。 |
| 将数据复制到另一个存储帐户 | 在第二个存储帐户中维护数据将产生容量和事务成本。 如果第二个存储帐户所在的区域不同于源帐户,则将数据复制到第二个帐户将额外产生传出流量费用。 |
灾难恢复
Azure 存储始终保留数据的多个副本,以防范各种计划内和计划外事件,包括暂时性的硬件故障、网络中断或断电、大范围自然灾害等。 冗余可确保即使遇到故障,存储帐户也能达到其可用性和持久性目标。
如果数据中心发生故障,且你的存储帐户在两个地理区域间具有冗余(异地冗余),则你可以将帐户从主区域故障转移到辅助区域。 此功能对于业务连续性和灾难恢复规划至关重要。
重要
对于启用了分层命名空间的存储帐户,目前不支持客户管理的故障转移。
实现数据保护的最佳做法
为 Azure 存储实现数据保护时,请考虑以下建议:
- 实现深度防御:结合使用多个保护机制。 例如,合并 Blob 版本控制、软删除和不可变性策略,以全面保护各种类型的数据丢失。
- 定期测试:定期测试数据恢复过程,以确保它们按预期工作,并且团队熟悉恢复过程。
- 保留期规划:根据合规性要求设置适当的保留期,但也考虑与保留软删除数据和版本相关的存储成本。
- 将不可变性策略用于符合性:对于受管制行业,请在容器或 Blob 版本上实施不可变策略以满足 WORM(写入一次、读取多个)符合性要求。
- 监视保护状态:使用 Azure Monitor 和 Azure Policy 跟踪哪些存储帐户已启用数据保护功能,并确定保护策略中的任何差距。
- 记录策略:维护数据保护配置的清晰文档,包括启用的功能、保留期和恢复过程。
- 考虑成本与保护:虽然全面的数据保护很重要,但应平衡对存储成本的保护级别。 使用生命周期管理策略根据要求自动删除旧版本和快照。
- 关键数据的异地冗余:对于业务关键型数据,请使用异地冗余存储(GRS 或 GZRS),以确保数据可用性,即使整个区域不可用也是如此。
- 结合备份解决方案:为了获得其他保护,请考虑使用 Azure 备份作为 Azure 文件存储或提供其他恢复选项和长期保留的第三方备份解决方案。