创建和删除Blob数据都很容易。有多种方法可以防止意外数据丢失,例如:
这已经是一个很好的程序包,但是感觉好像有一个薄弱的环节。 AFAIK,斑点容器缺乏帐户/斑点等安全性。
考虑到容器是用于blob枚举和批量删除的一个很好的单元,这很糟糕。
如何防止意外/恶意容器删除并减轻数据丢失的风险?
想法1::将所有数据的副本同步到另一个存储帐户-但这带来了同步复杂性(增量副本吗?),并且成本显着增加。
想法2:锁定密钥并迫使每个人都在精心设计范围内的SAS密钥上工作,但是使用数十个SAS令牌及其续签非常麻烦,而且有时确实需要删除容器和授权。感觉复杂到足以折断。我还是更希望安全。
想法3:以某种方式撤消删除? 根据{{3}},容器数据不会立即消失:
“删除容器”操作将指定的容器标记为要删除。容器及其中包含的所有Blob稍后会在垃圾回收期间删除。
但是,没有有关存储帐户垃圾收集何时/如何工作或容器数据是否/如何/恢复多长时间的信息。
我错过了更好的选择吗?
答案 0 :(得分:1)
还有一个替代选项,您应该考虑使用为容器提供的访问策略。您可以使用SAS进行访问,并可以使用访问策略添加附加层,该策略为您提供了容器级策略。您可以在其中提供不包含删除选项的Access:
Rbac 也是确保访问容器安全的好方法。
从数据丢失中恢复时,以下是官方建议:
块Blob。 为每个块Blob创建时间点快照。有关更多信息,请参阅创建Blob快照。对于每个快照,只收取自上次快照状态以来将差异存储在blob中所需的存储空间。快照取决于快照所基于的原始Blob的存在,因此建议将操作复制到另一个Blob或什至另一个存储帐户。这样可确保正确保护备份数据,以防意外删除。您可以使用AzCopy或Azure PowerShell将Blob复制到另一个存储帐户。
文件。使用共享快照,或使用AzCopy或PowerShell将文件复制到另一个存储帐户。
表。。使用AzCopy将表数据导出到另一个区域的另一个存储帐户中。 可以找到更多 here
答案 1 :(得分:0)
更新:
这类似于Blob级保护,并允许从意外删除中恢复。以下原始答案仍然与要采取的其他措施相关。
没有一个魔术子弹..概述可以做什么:
尽可能在RBAC中使用托管服务身份-或-使用SAS(和访问策略)以有限的权限委派访问。这样可以减少可能首先导致意外/恶意删除的参与者和场景。
租约不会阻止恶意删除,但会更清楚地声明“请勿删除”的意图,并且需要采取额外的步骤来删除租约,就像“您确定吗?”问题的附加层一样。
AFAIK,已经删除了整个容器,不存在内置恢复工具。
与所有备份解决方案一样,将备份备份到不同安全上下文的位置和/或脱机,以避免在同一事件中丢失备份。一些Blob容器备份实施提示:
如果您没有要还原的备份,则MS可能仍可以恢复该容器(如果您足够幸运且足够快)。根据{{3}},容器数据不会立即消失:
“删除容器”操作将指定的容器标记为要删除。容器及其中包含的所有Blob稍后会在垃圾回收期间删除。