在Amazon S3上安全存储/访问SaaS客户数据的最佳做法是什么?

时间:2016-11-04 16:11:46

标签: security amazon-s3 saas

所有那些SaaS工程师/开发人员......

我正在构建一个SaaS产品,它将客户数据存储在S3上。我想知道什么是最安全的方法?

  • 让单个IAM用户使用存储分区策略。这很简单,但数据安全性纯粹由SaaS应用程序处理。如果出现故障,其他用户可以访问受限制的材料。
  • 如何为每个新客户帐户创建IAM用户(通过IAM REST API)并为每个存储对象设置特定于对象的ACL?更复杂,但它也在S3中增加了一层安全性。
  • 还有其他方式吗?

此外,通过SaaS应用程序提供对材料的访问。我打算用guid替换每个对象的“可读名称”,这样就不会轻易猜到它,并使用带有时间限制的预先签名的URL来查看和下载它们。这是最佳做法吗?什么时间限制被认为是安全和用户友好的?

由于

1 个答案:

答案 0 :(得分:3)

您永远不应为"最终用户"生成AWS IAM用户你的申请(选项2)。 IAM授予调用AWS API的权限,应用程序的最终用户永远不需要调用API。

存储在Amazon S3中的信息应该可以通过标准方法提供给您的SaaS应用程序:

  • 为您的应用程序创建 IAM角色
  • 启动运行应用程序的Amazon EC2实例时选择IAM角色
  • 在使用AWS开发工具包的Amazon EC2实例上运行的任何代码都将知道如何通过EC2 instance metadata service
  • 自动访问凭据

如果您希望将Amazon S3中的内容直接提供给应用程序的用户,请生成Amazon S3 pre-signed URLs,以便对存储在S3存储桶中的对象提供限时访问。 15分钟的到期时间可能是安全性和暂停接听电话的用户之间的良好平衡,但这个时间由您决定。

您的S3存储桶不应具有存储桶策略,因为所有访问都将通过授予IAM角色的权限或通过预先签名的URL进行。

使用随机化GUID作为文件名无关,因为您将拥有适当的安全性而不是模糊处理。