创建和删除blob数据很容易。有一些方法可以防止意外数据丢失,例如:
这已经是一个很好的方案,但感觉就像是一个薄弱的环节。 AFAIK,blob容器缺乏帐户/ blob等安全性。
考虑到容器是用于blob枚举和批量删除的好单元,这很糟糕。
如何防止意外/恶意容器删除并降低数据丢失的风险?
想法1:将所有数据的副本同步到另一个存储帐户 - 但这会带来同步复杂性(增量复制?)和显着的成本增加。
想法2:锁定密钥并强制每个人都使用精心设计的SAS密钥,但这对于几十个SAS令牌及其续订非常麻烦,有时候容器删除实际上是必需和授权的。感觉复杂到足以打破。无论如何,我更喜欢安全。
想法3:以某种方式撤消删除?根据Delete Container documentation,容器数据没有立即消失:
Delete Container操作标记指定的容器以进行删除。容器及其中包含的任何blob稍后在垃圾回收期间被删除。
但是,没有关于存储帐户垃圾收集何时/如何工作的信息,或者是否/如何/可以恢复容器数据的时间。
我错过了哪些更好的选择?
您可以考虑使用为容器提供的访问策略的替代选项。您可以使用SAS进行访问,并使用Access策略添加其他层,该策略为您提供容器级策略。在那里,您可以提供不包含删除选项的Access:
Rbac也是保护容器访问的好方法。
当谈到从dataloss恢复时,这些是官方的建议:
块blob。创建每个块blob的时间点快照。有关更多信息,请参阅创建Blob的快照。对于每个快照,您只需支付自上次快照状态以来存储blob内差异所需的存储空间。快照取决于它们所基于的原始blob是否存在,因此建议对另一个blob甚至另一个存储帐户进行复制操作。这可确保正确保护备份数据免遭意外删除。您可以使用AzCopy或Azure PowerShell将Blob复制到另一个存储帐户。
文件。使用共享快照,或使用AzCopy或PowerShell将文件复制到另一个存储帐户。
表。使用AzCopy将表数据导出到另一个区域中的另一个存储帐户。更多可以找到here