如何防止Blob容器被删除?

时间:2018-09-03 15:59:15

标签: azure backup azure-storage azure-storage-blobs

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

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

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

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

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

我考虑过的..

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

想法2:锁定密钥并迫使每个人都在精心设计范围内的SAS密钥上工作,但是使用数十个SAS令牌及其续签非常麻烦,而且有时确实需要删除容器和授权。感觉复杂到足以折断。我还是更希望安全。

想法3:以某种方式撤消删除? 根据{{​​3}},容器数据不会立即消失:

  

“删除容器”操作将指定的容器标记为要删除。容器及其中包含的所有Blob稍后会在垃圾回收期间删除。

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

我错过了更好的选择吗?

2 个答案:

答案 0 :(得分:1)

还有一个替代选项,您应该考虑使用为容器提供的访问策略。您可以使用SAS进行访问,并可以使用访问策略添加附加层,该策略为您提供了容器级策略。您可以在其中提供不包含删除选项的Access:

enter image description here 预防方面更多

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

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

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

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

表。。使用AzCopy将表数据导出到另一个区域的另一个存储帐户中。 可以找到更多 here

答案 1 :(得分:0)

更新:

这类似于Blob级保护,并允许从意外删除中恢复。以下原始答案仍然与要采取的其他措施相关。


没有一个魔术子弹..概述可以做什么:

预防措施

  • DO 应用存储帐户级别的保护(资源锁定)。
  • DO 限制帐户/容器删除仅对实际需要的呼叫者的访问权限。
  • DO 将容器标记为Leased for infinity

尽可能在RBAC中使用托管服务身份-或-使用SAS(和访问策略)以有限的权限委派访问。这样可以减少可能首先导致意外/恶意删除的参与者和场景。

租约不会阻止恶意删除,但会更清楚地声明“请勿删除”的意图,并且需要采取额外的步骤来删除租约,就像“您确定吗?”问题的附加层一样。

恢复措施

AFAIK,已经删除了整个容器,不存在内置恢复工具。

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

与所有备份解决方案一样,将备份备份到不同安全上下文的位置和/或脱机,以避免在同一事件中丢失备份。一些Blob容器备份实施提示:

如果您没有要还原的备份,则MS可能仍可以恢复该容器(如果您足够幸运且足够快)。根据{{​​3}},容器数据不会立即消失:

“删除容器”操作将指定的容器标记为要删除。容器及其中包含的所有Blob稍后会在垃圾回收期间删除。

相关问题