如何在s3中存储仅适用于特定Web应用程序用户组的文件

时间:2017-10-06 07:37:31

标签: amazon-web-services amazon-s3

我有一个应用程序,其中用户是“用户组”的一部分。每个组都可以将文档“上传”到应用程序。我在后台使用S3存储这些文档。

我花了大量时间阅读AWS文档,但仍然不了解执行以下操作的最简单/最正确的方法:

  • A组中的用户1可以将文档上传到应用程序
  • A组中的用户2可以查看和访问应用程序中的所有A组文档
  • B组中的用户3可以将文档上传到应用程序
  • B组中的用户3看不到属于A组的任何文件(反之亦然)

我是否应该使用API​​为每个“组”创建一个新存储桶?

或者所有这一切都可以在一个包含每个组的子目录的桶中完成。然后设置访问限制?

我应该设置IAM组策略并将其应用于每个Web应用程序用户吗?

我不确定这种情况的最佳架构,所以我真的很欣赏正确方向上的一点。

1 个答案:

答案 0 :(得分:0)

应将AWS凭据分配给应用程序以及需要维护应用程序的 IT员工

应用程序的

用户应该获得AWS凭据。

用户应直接与您的应用程序进行交互,您的应用程序将从后端调用AWS API 。这样,您的应用程序就可以完全控制他们可以看到的数据以及他们可以执行的操作。

将其视为数据库 - 您永远不想让用户直接访问数据库。相反,它们应始终通过应用程序进行交互,该应用程序将在数据库中存储和更新信息。

以上有一些常见的例外情况:

  • 如果您希望用户访问/下载存储在S3中的文件,您的应用程序可以生成预先签名的URL ,这是一个允许访问Amazon S3对象的限时URL。您的应用程序负责在想要授予访问权限时生成URL,并且URl可以包含在HTML页面中(例如,在网页上显示私有图片)。
  • 如果您希望允许用户上传文件直接发送到S3,您可以再次使用预先签名的网址,也可以授予对Amazon S3的公开写入权限桶。可以把它想象成一个现代化的FTP服务器。

底线:您的申请负责人!此外,请考虑使用预签名URL,以便在应用程序允许时直接访问对象。