amazon-web-services - (完)S3中对象的用户级访问

标签 amazon-web-services amazon-s3


我们面临一个用例,我们需要在 S3 上存储用户的 secret 图像。现在 S3 可以通过 HTTP 访问,如果我们授予对对象的读取权限,它们将通过 Web 提供给全世界。我们需要将图像/文件仅限于该用户。所以我们想到的可能的解决方案是:

  1. 以某种方式屏蔽 URL。(不知 Prop 体怎么做)
  2. 通过创建唯一的加密 s3 key 来存储文件/图像
    例如:http://bucket.s3.amazon.com/clients/img/j84jaljvkeh774d/myimage.jpg

在第一个中我们可能无法获得 cloudfront 或 cdn 的好处,因为它可能涉及一个独立的代理服务器。

第二个在某种程度上是安全的,因为如果键名对用户而言是唯一的,则很难预测它。

使用ACL 和存储桶策略 并不能完全解决问题。 此外,如果我们编写限制 IP 地址的策略,则使用相同 API 后端的移动应用程序最终将无法运行,因为这些应用程序会发出来自不同 IP 的请求。

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

最佳答案

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

  1. 禁止从 AWS 上的 S3 管理控制台公开访问文件。
  2. 如果您想限制访问,您只需要构建过期 url。
  3. 我想每个用户都必须有一个唯一的 key 。您可以使用该 key 生成签名 URL。以编程方式为每个对象。 Here有一个例子可供引用。

关于amazon-web-services - (完)S3中对象的用户级访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37206323/

相关文章:

amazon-web-services - docker 在提取期间将其临时文件存储在哪里?

amazon-web-services - 无服务器 : sqs:CreateQueue Access . .. 被拒绝

python - Docker容器不断增长

python - AWS ECS 环境变量不可用 [Python]

php - 使用签名算法版本 4 创建签名的 S3 下载链接

mysql - 如何找到 Amazon RDS 生成的自动 S3 备份的位置?

ruby-on-rails - Aws::S3::Errors::RequestTimeTooSkewed(请求时间与当前时间相差太大):

php - 如何通过外部 URL 将对象放入 amazon s3

amazon-web-services - Terraform AWS Newrelic 与 IAM 角色的集成

amazon-web-services - S3存储: Make a bucket folder private