AWS S3 备份策略 - 我应该如何备份 S3 存储桶?

Mat*_*att 5 security backup amazon-s3 amazon-web-services

我正在构建一个具有大量存储需求潜力的网络应用程序,亚马逊 S3 可以满足这些需求。

我主要关心的是服务器上 API 密钥的使用,以及未经授权的人如何以某种方式利用服务器、获取密钥并使用它们来破坏 S3 存储桶中的所有数据。

  1. 我应该采取什么策略来最大程度地减少 API 密钥的潜在暴露?
  2. 在预算有限的情况下,备份 TB 级 S3 资产的稳健方法是什么?

EEA*_*EAA 7

首先想到的是,传入和传出 S3 的数据传输非常耗时。如果您经常备份(正如您应该做的那样),那么成本可能会因转移费用而失控。也就是说,要回答您的问题,应该从单独的、强化的服务器执行备份,该服务器的唯一任务就是执行备份。没有 apache,只能通过带有密钥身份验证的 SSH 进行远程访问等。如果您执行这些操作并确保只有少数人可以访问服务器,那么您的密钥应该非常安全。如果您真的很偏执,您可以对包含您的密钥的文件进行 pgp 加密 - 但是,这种方法的问题在于每次备份作业运行时都需要您输入密码。这可能不是您想要注册的内容,对吗?

听到您的预算限制后,我不禁想到您最好改变存储策略。我不确定您的服务器情况是什么,但是您能否将文件本地托管在服务器上,然后仅使用 S3 进行备份?有一个很棒的备份脚本叫做duplicity,它可以对 S3(以及其他几种后端存储类型)执行压缩、加密、增量备份。

[编辑] 如果您最终托管在 S3 上并备份到本地磁盘,则S3 API 中似乎有一个“If-Modified-Since”标头,有助于执行增量备份。对于这样的备份,您很可能需要自制一些东西,尽管这不会太难。只需使用 SimpleDB/BerleleyDB/etc 来存储有关您已备份的文件的元信息以及指向它们在磁盘上的位置的指针。将元信息保存在数据库中还可以快速验证备份以及创建备份作业报告。