用户的 AWS S3 文件夹权限

时间:2021-02-26 09:10:49

标签: amazon-web-services amazon-s3

我的场景如下:

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

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

1 个答案:

答案 0 :(得分:1)

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

相反,所有对象都应保持为私有,并且应用程序应生成 Amazon S3 pre-signed URLs,授予对存储在 Amazon S3 中的私有对象的限时访问权限。

它会像这样工作:

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