【问题标题】:Allow multiple users access to private S3 folder using IAM roles允许多个用户使用 IAM 角色访问私有 S3 文件夹
【发布时间】:2019-02-23 10:22:11
【问题描述】:

我想做以下事情:

  • 只有一个桶
  • 让多个用户能够添加/读取/访问具有特定项目文件夹前缀的对象
  • 不允许其他用户访问他们不属于的对象

例如,如果您有一个 id 为1 的项目,则多个用户可以在其下创建对象:

user_1 已创建 1/image_1.jpg

user_2 读取1/image_1.jpg

user_2 创建了1/image_2.jpg

但是,不属于“项目”的用户不能:

不允许 user_3 读取1/image_1.jpg

我在网上找到的所有内容都围绕着每个拥有自己文件夹的用户,方法是创建一个 IAM 角色,该角色只允许访问以用户 ID 为前缀的对象。这种方法创建用户文件夹,我想要项目文件夹

【问题讨论】:

  • 您的用户是否在您的公司工作并拥有 IAM 凭证,或者他们只是通过 Internet 访问应用程序的应用程序用户?通常,IAM 用户应该只为使用您的 AWS 系统的员工创建。另外,“项目”是如何管理的?是否有一些应用程序决定了他们可以访问什么?
  • 不,他们没有。我的印象是 IAM 角色专门用于您没有常规 IAM 凭证的情况 描述这种情况的最佳方式就像使用 Cognito 注册/登录的网站,您可以创建共享相册。至于访问,我有一个数据库来跟踪谁可以编辑什么,我只是不确定将它链接到 S3 的最佳方式是什么。到目前为止,看起来我必须上传到节点/快递 API,然后检查权限并自行上传图片,但我希望让用户使用 IAM 角色直接上传到 S3。

标签: amazon-web-services amazon-s3 amazon-iam


【解决方案1】:

典型的架构是:

  • 当应用程序想要显示私有对象,或提供指向私有对象的链接时,它会生成一个Pre-signed URL
  • 此预签名 URL 提供对私有对象的限时访问
  • 用户可以使用该链接查看/下载对象。例如,它可能用于<img> 标记中以显示图片,或用于<a> 标记以提供链接。

  • 当用户想要上传对象时,可以Upload Objects Using Presigned URLs。这可以控制对象的上传位置、文件类型、最大大小等。

这样,应用程序可以完全控制用户上传/下载哪些对象,这比必须为用户、项目的每个组合创建 IAM 规则提供更精细的控制,文件夹、对象等。预签名的 URL 可用于直接访问 S3,但只能执行应用程序授权的操作。

【讨论】:

  • 知道了,我主要担心的是用户想办法上传比分配更多的图像。我猜想具有非常快过期时间的签名 URL 是前进的道路。谢谢。
猜你喜欢
  • 2023-04-05
  • 2021-04-19
  • 2016-07-10
  • 1970-01-01
  • 2017-05-27
  • 2019-06-10
  • 2019-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多