在 Amazon S3 上安全 store/access SaaS 客户数据的最佳实践是什么?
What are the best practices to securely store/access SaaS customer data on Amazon S3?
致所有那些 SaaS engineers/developers 在那里...
我正在构建一个将客户数据存储在 S3 上的 SaaS 产品。我想知道关于安全性的最佳方法是什么?
- 拥有一个具有存储桶策略的 IAM 用户。这很简单,但数据安全完全由 SaaS 应用程序处理。万一出现故障,其他用户可以访问受限 material.
- 如何为每个新客户帐户创建一个 IAM 用户(通过 IAM REST API)并为每个存储的对象设置特定于对象的 ACL?更复杂,但它也在 S3 中增加了一层安全性。
- 还有其他方法吗?
另外,通过 SaaS 应用提供对 material 的访问。我计划将每个对象 'readable name' 替换为一个 guid,这样它就不容易被猜到,并使用有时间限制的预签名 url 来查看和下载它们。这是最佳做法吗?什么时间限制被认为是安全和用户友好的?
谢谢
您永远不应为您的应用程序的 "end-users" 生成 AWS IAM 用户(选项 2)。 IAM 授予调用 AWS APIs 的权限,您的应用程序的最终用户永远不需要调用 API.
您的 SaaS 应用程序应该可以通过标准方法访问存储在 Amazon S3 中的信息:
- 为您的应用程序创建一个 IAM 角色
- Select 启动 Amazon EC2 实例时 运行 您的应用程序
的 IAM 角色
- Amazon EC2 实例上使用 AWS SDK 的任何代码 运行ning 都知道如何通过 EC2 instance metadata service[=32] 自动 访问凭证=]
如果您希望将 Amazon S3 中的内容直接提供给应用程序的用户,请生成 Amazon S3 pre-signed URLs,它提供对存储在 S3 存储桶中的对象的限时访问。 15 分钟的到期时间可能是安全性和暂停接听电话的用户之间的一个很好的权衡,但时间由您决定。
您的 S3 存储桶不应有存储桶策略,因为所有访问都将通过授予 IAM 角色的权限或通过预签名的 URL 进行。
使用随机 GUID 作为文件名无关紧要,因为您将拥有适当的安全性而不是混淆。
致所有那些 SaaS engineers/developers 在那里...
我正在构建一个将客户数据存储在 S3 上的 SaaS 产品。我想知道关于安全性的最佳方法是什么?
- 拥有一个具有存储桶策略的 IAM 用户。这很简单,但数据安全完全由 SaaS 应用程序处理。万一出现故障,其他用户可以访问受限 material.
- 如何为每个新客户帐户创建一个 IAM 用户(通过 IAM REST API)并为每个存储的对象设置特定于对象的 ACL?更复杂,但它也在 S3 中增加了一层安全性。
- 还有其他方法吗?
另外,通过 SaaS 应用提供对 material 的访问。我计划将每个对象 'readable name' 替换为一个 guid,这样它就不容易被猜到,并使用有时间限制的预签名 url 来查看和下载它们。这是最佳做法吗?什么时间限制被认为是安全和用户友好的?
谢谢
您永远不应为您的应用程序的 "end-users" 生成 AWS IAM 用户(选项 2)。 IAM 授予调用 AWS APIs 的权限,您的应用程序的最终用户永远不需要调用 API.
您的 SaaS 应用程序应该可以通过标准方法访问存储在 Amazon S3 中的信息:
- 为您的应用程序创建一个 IAM 角色
- Select 启动 Amazon EC2 实例时 运行 您的应用程序 的 IAM 角色
- Amazon EC2 实例上使用 AWS SDK 的任何代码 运行ning 都知道如何通过 EC2 instance metadata service[=32] 自动 访问凭证=]
如果您希望将 Amazon S3 中的内容直接提供给应用程序的用户,请生成 Amazon S3 pre-signed URLs,它提供对存储在 S3 存储桶中的对象的限时访问。 15 分钟的到期时间可能是安全性和暂停接听电话的用户之间的一个很好的权衡,但时间由您决定。
您的 S3 存储桶不应有存储桶策略,因为所有访问都将通过授予 IAM 角色的权限或通过预签名的 URL 进行。
使用随机 GUID 作为文件名无关紧要,因为您将拥有适当的安全性而不是混淆。