【问题标题】:How to protect against deletion of a blob container?如何防止删除 blob 容器?
【发布时间】:2019-02-08 16:58:36
【问题描述】:

创建和删除 blob 数据都很容易。有一些方法可以防止意外数据丢失,例如:

  • 资源锁定以防止意外删除存储帐户
  • Azure RBAC 限制对帐户/密钥的访问。
  • Soft delete 从意外删除的 blob 中恢复。

这已经是一个很好的包,但感觉好像有一个薄弱环节。 AFAIK,blob 容器缺乏帐户/blob 的安全性。

考虑到容器是用于 blob 枚举和批量删除的好单元,这很糟糕。

如何防止意外/恶意删除容器并降低数据丢失的风险?

我考虑过的..

想法 1: 将所有数据的副本同步到另一个存储帐户 - 但这会带来同步复杂性(增量副本?)和显着的成本增加。

想法 2: 锁定密钥并迫使每个人都使用仔细限定范围的 SAS 密钥,但是对于数十个 SAS 令牌及其续订来说,这很麻烦,+ 有时实际上需要删除容器并授权。感觉复杂到可以破解。反正我更喜欢安全的。

想法 3: 以某种方式撤消删除? 根据Delete Container documentation,容器数据并没有立即消失:

删除容器操作将指定的容器标记为删除。容器和其中包含的任何 blob 稍后会在垃圾回收期间被删除。

但是,没有关于存储帐户垃圾收集何时/如何工作或是否/如何/多久可以恢复容器数据的信息。

我错过了任何更好的选择吗?

【问题讨论】:

    标签: azure backup azure-storage azure-blob-storage


    【解决方案1】:

    您应该考虑使用为容器提供的访问策略的替代选项。您可以使用 SAS 进行访问,并使用为您提供容器级别策略的访问策略添加附加层。在那里您可以提供不包含删除选项的访问权限:

    这更多是为了预防方面

    Rbac 也是保护容器访问安全的好方法。

    关于从数据丢失中恢复,以下是官方建议:

    块 blob。 创建每个块 blob 的时间点快照。有关详细信息,请参阅创建 Blob 的快照。对于每个快照,您只需为自上次快照状态以来存储 blob 中的差异所需的存储付费。快照取决于它们所基于的原始 blob 的存在,因此建议将操作复制到另一个 blob 甚至另一个存储帐户。这可确保备份数据得到适当保护,防止意外删除。您可以使用 AzCopy 或 Azure PowerShell 将 blob 复制到另一个存储帐户。

    文件。使用共享快照,或使用 AzCopy 或 PowerShell 将文件复制到另一个存储帐户。

    表。使用 AzCopy 将表数据导出到另一个区域的另一个存储帐户。 更多内容请关注here

    【讨论】:

    • 那么,基本上来自 OP - RBAC + SAS 的想法 2? Stored Access Policy 只是提供 SAS 权限模板和撤销,并不能防止意外删除容器,也不能帮助你恢复,对吧? AFAIK 快照存储在容器中,不能以任何方式防止 >container
    • 是的,如果客户没有删除容器的权限,它会阻止删除,主要是为他们提供读取,添加m创建,写入和列表访问权限。我建议围绕它进行一些测试,因为 AP 与 SAS 不同,但提供了附加功能(在容器级别)。但是恢复,你唯一最好的选择是拥有快照,如果一个带有快照的 blob 正在删除,首先删除现有快照会抛出错误。我建议发帖到feedback.azure.com/forums/217298-storage 我也会和我的内部团队讨论。
    【解决方案2】:

    更新:

    这类似于 Blob 级保护,允许从意外删除中恢复。下面的原始答案仍然可以作为要采取的额外措施。


    没有单一的灵丹妙药.. 回顾一下可以做什么:

    预防措施

    • 应用存储帐户级别的保护(资源锁定)。
    • 务必将帐户/容器删除权限限制为仅对真正需要它的调用者的访问。
    • 将容器标记为Leased for infinity

    尽可能将托管服务标识与 RBAC 结合使用 - 或 - 使用 SAS(和访问策略)以有限的权限委派访问。这减少了最初可能发生意外/恶意删除的参与者和场景。

    租约不能防止恶意删除,但更清楚地声明了“不删除”的意图,并且需要额外的删除租约的步骤,就像附加层“你确定吗?”问题。

    恢复措施

    AFAIK,当整个容器已被删除时,不存在内置恢复工具。

    • 务必为灾难恢复实施定期备份解决方案。
    • 考虑如果您没有自己的备份,请立即联系 Azure 支持。

    与所有备份解决方案一样,备份到不同安全环境和/或离线的位置,以避免在同一事件中丢失备份。一些 Blob 容器备份实现技巧:

    如果您没有要从中恢复的备份,那么 MS 可能仍然可以恢复容器(如果您足够幸运且足够快的话)。根据Delete Container documentation,容器数据不会立即消失:

    删除容器操作将指定的容器标记为删除。容器和其中包含的任何 blob 稍后会在垃圾回收期间被删除。

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 2017-05-20
      • 2016-07-29
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2022-01-16
      • 2020-10-12
      相关资源
      最近更新 更多