【问题标题】:AWS S3 folder permission for users用户的 AWS S3 文件夹权限
【发布时间】:2021-03-03 08:41:31
【问题描述】:

我的场景如下:

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

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

【问题讨论】:

  • 可以根据 S3 中的前缀设置权限,是什么让你认为这是不可能的?
  • 感谢您的回答。以下条件是Writing IAM Policies... 中示例的一部分。 "条件":{"StringEquals":{"s3:prefix":["","home/", "home/David"],"s3:delimiter":["/"]}}。但是,如果我的 Web 应用程序有 1000 多个用户和文件夹,我应该将 1000 多个前缀字符串添加到该“s3:prefix”数组中吗?还是我弄错了?谢谢。

标签: amazon-web-services amazon-s3


【解决方案1】:

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

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

它会像这样工作:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 2018-03-16
    • 2016-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多