我们在 Amazon VPC 上运行了十几个 Ubuntu Linux 网络服务器生产实例。这些实例通过 Puppet 引导和管理。大多数管理都是通过 AWS 控制台完成的。
我们的 AWS 凭证非常安全。主账户几乎不需要,具有强密码和双因素身份验证。一些受信任的管理员可以通过自己的 IAM 账户访问大多数服务,同样具有强密码和双因素身份验证。一些 IAM 账户对于特定目的(例如将文件写入 S3)的访问权限非常有限。其他员工对任何高级凭证的访问都非常有限。总体而言,有人获得控制台或 API 访问权限的可能性似乎很低。
最近的代码空间的失败有人获得了 AWS 控制台的高级访问权限并删除了实例和卷和EBS Snapshots 实际上使得 Code Spaces 无法恢复其业务,这迫使我研究离线/异地(即超出我们主 AWS 账户的范围)备份数据的方法。
我如何确保我们的客户数据不会被那些获得我们的 AWS 凭证访问权限的人或 AWS 的某些灾难所破坏?应该是自动化、稳定、价格合理的。
经过几个小时的搜索,我似乎找不到“简单”的方法。将 EBS 快照复制到另一个 AWS 帐户似乎是不可能的。我无法将 EBS 快照导出到 S3 对象。我可以通过从第三方服务器提取来 rsync 所有重要数据,但我需要编写脚本来处理诸如服务器数量变化、保留、错误处理等问题。这似乎需要做很多工作。我找不到现成的软件来实现这一点。
我们当前的备份策略包括每晚自动对所有卷进行 EBS 快照,以及将压缩的 MySQLdump 上传到 S3。所有源代码和 Puppet 代码都是从外部版本控制部署的,但我们客户的文件和 MySQL 数据库仅存储在 EBS 卷及其快照上,即 AWS 生态系统内部。
答案1
很多人往往会过度思考这个问题。只需将这些服务器想象成部署在托管数据中心或公司数据中心中。在这种情况下,您将如何备份它们?
很可能是通过连接到磁带库或 VTL 的“传统”备份产品(Netbackup、Amanda、BareOS 等)。
您应该考虑为 AWS 基础设施做这件事。建立备份服务器和磁带库亚马逊之外某处并将其用作您的“世界末日”恢复方法。
磁带是最可靠的数据存储机制之一,与所有其他云备份系统不同,它不会受到 CodeSpaces 所发生的情况的影响。您的备份数据确实离线,您可以将磁带保存在您选择的安全位置 - 办公室的防火保险箱或当地银行租用的保险箱。从云存储提供商获得这种保护是不可能的。
您已经拥有配置管理。(耶!)因此,如果发生灾难,您将能够以相当快的方式重建服务器,因此磁带备份(或 VTL)将主要用于您的数据. 数据库,上传的文件等。这些内容未包含在你的 puppet 清单中。
如果这不是一个选择,那么下一个最好的选择就是创建一个完全独立用于备份的 AWS 帐户。在该帐户中,为 S3 创建具有仅上传权限的 IAM 凭证,然后从生产环境中使用该凭证推送备份。确保这些凭证与生产凭证保存在完全不同的位置,以限制它们同时受到损害的可能性。