我在想,如果有一天我的 AWS 账户被删除或无法访问怎么办?有人实施过这种解决方案吗?我们可以从一个 AWS 账户备份并恢复到另一个 AWS 账户吗?
目前正在使用 Skeddly 备份我的 AWS 实例,这些实例再次存储在 AWS 本身中。
有什么想法吗?
答案1
您可以做几件事,一是确保您至少有两个管理员帐户,一个供您使用,另一个存储在安全的地方并仅用于消耗能源。
第二种方法是设置一个完全独立的 AWS 账户作为“备份”,并拥有自己的一组凭证。您可以授予从主账户到备份账户的跨账户访问权限,但只允许主账户将对象“放入”或备份到备份账户,这样即使您的主账户受到攻击,攻击者也无法从主账户损害第二个账户。
将一个帐户上的服务备份到另一个帐户的实际过程将根据您使用的服务而有所不同,但概念是相同的 - 将数据备份到 s3,然后将数据从主帐户中的 s3 复制到备份帐户中的 s3 - 并确保主帐户仅对第二个帐户具有足够的访问权限以“放置”内容,而不是删除。贵公司的任何人都不应该有权访问这两组凭据(假设贵公司规模不小)。
您不想成为因为账户被盗而倒闭的公司:
黑客导致托管服务 Code Spaces 停止营业 | Threatpost | 安全新闻第一站
另外,这段来自 AWS Reinvent 2015 的视频(从大约 50 分钟开始)介绍了 AirBNB 如何通过这种方式防范这些问题:
AWS re:Invent 2015 | (DAT304) Amazon RDS for MySQL:最佳实践 | youtube.com
答案2
在 AWS 中构建的首要规则应该是实现一切自动化。
现在,如果您无法访问您的帐户,或者帐户受到威胁,并且一切都终止,那么只需运行一个简单的过程即可恢复所有无状态组件。
这里最大的问题是您的状态组件,例如数据库。为此,我建议您定期备份数据库,并将其保存在 AWS 之外的某个地方(或您的账户无法删除的地方,至少例如亚马逊冰川和保险库锁)。
例如,你可以有一个计划任务,它mysqldump
您拥有的任何 MySQL 数据库,然后将它们从 AWS 中 SCP 出来。
现在,如果您丢失了帐户,那么只需将数据库备份恢复到您选择重建的任何位置(可以回到 AWS 的另一个帐户下,甚至可以回到同一个帐户,但这次要得到适当的保护),然后运行自动化流程来重建所有其他无状态组件。
显然会有一些数据丢失,因为您只能从数据库中返回到最近的备份。