(结束)用户级别访问S3中的对象

时间:2016-05-13 09:30:47

标签: amazon-web-services amazon-s3


我们正面临一个用例,我们需要在S3上存储用户的机密图像。现在,因为可以通过HTTP访问S3,并且如果我们提供对对象的读访问权,那么它们将通过Web可供世界使用。我们只需要将图像/文件限制为该用户。所以我们认为可能的解决方案是:

  1. 以某种方式屏蔽URL。(不知道具体如何)
  2. 通过创建唯一的加密s3密钥来存储文件/图像
    例如:http://bucket.s3.amazon.com/clients/img/j84jaljvkeh774d/myimage.jpg
  3. 在第一个中,我们可能无法获得cloudfront或cdn的好处,因为它可能涉及独立的代理服务器。

    第二个是安全的,因为如果密钥名对用户来说是唯一的,那么它很难预测。

    使用 ACl和存储分区政策无法完全解决问题。 此外,如果我们编写一个限制IP地址的策略,那么使用相同API后端的移动应用程序最终将无法正常工作,因为那些来自不同IP的请求。

    我们知道我们无法完全保护它们,但我们是否有办法处理这种情况?请分享您的意见。

2 个答案:

答案 0 :(得分:2)

这可以通过选项一来实现。

  1. 禁用AWS上S3管理控制台的文件公共访问权限。
  2. 如果您想限制访问,则只需构建过期的网址。
  3. 我想每个用户都必须有一个唯一的密钥。您可以使用该密钥生成签名URL。以编程方式为每个对象。 Here是可供参考的一个示例。

答案 1 :(得分:2)

您希望使用 presigned URLs 。对于特定用户,您可以在固定(短)时间段内生成这些内容。如果此URL被泄露,则无关紧要 - 因为它们会过期。

如果你这样做,你桶中的所有东西都可以保密。

如果你正在使用Ruby,这里可以看到你如何做到这一点:https://github.com/aws/aws-sdk-core-ruby/commit/f946c113ff24d97673d8ffd43cb4012c8e211992