Azure Blob 容器备份和恢复

Posted

技术标签:

【中文标题】Azure Blob 容器备份和恢复【英文标题】:Azure blob container backup and recovery 【发布时间】:2018-06-01 23:28:22 【问题描述】:

我正在考虑将 Azure Blob Storage 用于我正在开发的文档管理系统。所有 Blob(图像、视频、word/excel/pdf 等)都将存储在 Azure Blob 存储中。据我了解,我需要创建容器,这些文件可以存储在容器中。

我想知道如何防止意外/恶意删除容器。如果一个容器被删除,它所包含的所有文件都将丢失。我正在尝试弄清楚如何为我的存储帐户设置备份和恢复机制,以便始终保证如果容器发生问题,我可以恢复其中的文件。

Microsoft Azure 是否为此类备份和恢复提供了任何方法,或者我是否需要明确编写代码以将文件存储在两个单独的 Blob 存储帐户中。

【问题讨论】:

【参考方案1】:

有权访问您的存储帐户密钥(主要或次要;一个存储帐户有两个密钥)的任何人都可以以他们认为合适的任何方式操作该存储帐户。确保没有任何事情发生的唯一方法是什么?不要让任何人访问密钥。如果您将存储帐户放在只有您有权访问的资源组中,您至少可以防止其他有权访问订阅的人发现并访问该存储帐户。

在订阅本身内,您可以锁定实际资源(存储帐户),这样有权访问订阅的任何人都不会意外删除整个存储帐户。

注意:使用存储帐户密钥,您可以随时重新生成密钥。因此,如果您怀疑某个密钥被泄露,您可以执行重新生成操作。

【讨论】:

防止意外删除容器的另一个步骤是获取容器的无限期租约。这可以防止在“租用”状态下“删除”容器。当然,只需点击一下按钮就可以打破租约,将容器置于租用状态仍然是个好主意。 (当容器处于“租用”状态时,blob 的添加/更新/删除照常工作) Azure 还引入了可以使容器及其内容在特定天数内不可变的功能。这可以方便地实施某些法规并确保数据不会被意外修改或删除。设置此策略,也使容器防删除。 docs.microsoft.com/en-us/azure/storage/blobs/…【参考方案2】:

备份 如果容器被删除,可以为 blob 存储提供多种备份解决方案。更多产品信息可以在这里找到:https://azure.microsoft.com/en-us/services/backup/

冗余

如果您担心可用性,“您的 Microsoft Azure 存储帐户中的数据始终会被复制,以确保持久性和高可用性。复制将您的数据复制到同一个数据中心内,或者复制到另一个数据中心,具体取决于您选择的复制选项。” ,有几个复制选项:

本地冗余存储 (LRS)

区域冗余存储 (ZRS)

地理冗余存储 (GRS)

读取访问异地冗余存储 (RA-GRS)

更多细节可以在这里找到:

https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy

管理访问权限

最后,管理对存储帐户的访问权限是保护并确保您避免数据丢失的最佳方式。只有当您不希望任何人删除文件、文件夹等时,您才能提供读取访问权限。通过使用 SAS:共享访问签名,允许您创建策略并提供基于读取的访问权限,写入、列出、删除等。可以在此处查看快速 GIF 演示:https://azure.microsoft.com/en-us/updates/manage-stored-access-policies-for-storage-accounts-from-within-the-azure-portal/

【讨论】:

冗余不应该与备份混在一起:如果你删除一个 blob,它会立即被删除副本(嗯,至少排队,一旦主被删除,你就无法访问排队的副本用于删除)。正如我所指出的,如果有人拥有访问密钥,SAS 不会帮助防止删除。这仅用于共享其他私有 blob。最后:Azure 的备份服务不用于备份 blob。 是的,完全同意大卫,我提到了覆盖所有角落的 3 个区域,备份仍然是确保永久删除任何内容的最佳方法:) 如果备份服务与 blob 一起使用,那就太好了(嗯 - 我应该发布到 UserVoice)。据我所知,它仍然不提供 blob 备份模式。 此线程讨论 blob 备份选项:***.com/questions/11561844/… 正确 - 我知道这一点。这只是展示了第三方工具的使用,以及对 API 的调整以允许异步 blob 复制(与同步 blob 复制相比,它曾经是存储复制的主要限制)。【参考方案3】:

我们使用 blob 来存储文档和进行文档管理。 为了防止删除 blob,您现在可以启用软删除,如下所述: https://azure.microsoft.com/en-us/blog/soft-delete-for-azure-storage-blobs-ga/

您还可以围绕 powershell、azcopy 创建自己的自动化来执行增量和完整备份。 最后一个元素是使用 RA-GRS blob,您可以在另一个区域以读取模式从辅助 blob 中读取数据,以防数据中心出现故障。

使用 RA-GRS 设计高可用性应用程序

https://docs.microsoft.com/en-us/azure/storage/common/storage-designing-ha-apps-with-ragrs?toc=%2fazure%2fstorage%2fqueues%2ftoc.json

【讨论】:

谢谢阿纳斯。自从我发布这个问题以来,已经有了很多改进。我们还可以为容器设置访问策略,使其成为不可变的 Blob 存储。一旦设置了策略,就不能意外甚至强行删除 blob。我们必须停用该政策才能再次进行删除【参考方案4】:

使用 Microsoft 的 Azure 存储资源管理器。它将允许您下载 blob 容器的全部内容,包括带有 blob 的文件夹和子文件夹。相反,您可以以相同的方式上传到容器。简单免费!

【讨论】:

是的,我同意。但是,在许多场景中,需要一个自动过程。 如何在 az storage explorer 中恢复容器?

以上是关于Azure Blob 容器备份和恢复的主要内容,如果未能解决你的问题,请参考以下文章

如何备份 Azure 表和 Blob

利用Azure backup备份和恢复Azure虚拟机

利用Azure backup备份和恢复Azure虚拟机

使用 Powershell 将 Azure 数据库备份到 blob

利用Azure Backup备份和恢复Azure虚拟机

Azure 恢复服务和 SQL 2014 托管备份不能很好地配合使用