首页 > 解决方案 > 用户的 AWS S3 文件夹权限

问题描述

我的情况如下:

  1. 我的 Web 应用程序上的每个用户都将 uuid 作为主键。
  2. 我的网络应用程序用户可以将图像上传到他们自己的文件夹(文件夹名称是他们的 uuid,例如:
    clients/0d75db15-07ad-4800-a5de-1fe82a7bf52e/
    clients/0faf6315-6ba9-478d-aaa5-3cd2bd3b3b6e/
  3. 每个用户只能访问自己的文件夹和文件夹下的文件。

我知道 IAM 策略具有权限,但没有文件夹级别或对象级别。
该场景有什么解决方案吗?感谢您的任何建议和答案!

标签: amazon-web-servicesamazon-s3

解决方案


鉴于您的应用程序有 1000 多个用户,您不应依赖 IAM 策略或 S3 存储桶策略来管理安全性。

相反,所有对象都应保持私有,应用程序应生成Amazon S3 预签名 URL,授予对存储在 Amazon S3 中的私有对象的限时访问权限。

它会像这样工作:

  • 用户登录到您的应用程序
  • 当用户请求访问图像时,或者如果应用程序想要向他们发送包含使用<img src='xxx'>标签的图像的 HTML 页面,应用程序应该:
    • 验证用户是否有权访问该对象
    • 如果是这样,生成一个预签名的 URL,授予对对象的临时访问权限
  • 然后用户的浏览器访问提供的 URL
  • Amazon S3 将验证预签名 URL 是否有效,然后提供对对象的访问

推荐阅读