用户特定文件夹访问 S3

维沙尔·博拉纳

我有一个应用程序,用户可以在其中上传他们的文档(假设某些文档是敏感文档,例如身份证明)。我的 S3 存储桶结构是这样的,每个用户都有自己的文件夹,其中保存他/她的文档。

应用程序在 MEAN 堆栈上运行。

截至目前,该存储桶是公开的。(敏感文件上传是未来的补充)。

我希望登录用户只能访问他/她的文档。此外,文档 URL 应该是安全的。(可能是预签名 URL)

对于上述要求,我应该采取什么方法?任何代码资源/文档等..?

约翰·罗滕斯坦

不应使用任何存储桶策略存储桶应保持“私有”,并应通过以下两种方式之一向最终用户授予访问权限:

选项 1:提供临时 AWS 凭证

如果有“智能”客户端(例如移动应用程序或浏览器中的 JavaScript),您的后端可以使用AWS 安全令牌服务生成临时凭证然后,客户端可以使用这些凭证直接与 AWS 服务对话,例如访问 Amazon S3 中的对象和读取/写入 DynamoDB 中的数据。

后端负责认证用户,生成临时凭证并将它们传递到客户端,但参与后续调用AWS。可以将策略附加到这些临时凭证以授予诸如“允许来自此 Amazon S3 存储桶的此特定子目录(路径)的 GetObject”等权限。

如果每个用户的策略只授予访问“他们的子目录”的权限,那么这符合您的要求,即他们只能访问他们的特定文档

实现上述的一种常见方法是使用Amazon Cognito进行身份验证和分配权限。

选项 2:使用预签名 URL

在客户端的情况下,简单的网页那些不能直接使用AWS凭据调用AWS服务,安全性在后端使用预先签订的URL处理。

当后端生成链接到私有对象(例如通过<img src='...'>)的网页时,后端应该:

  • 验证用户是否有权访问私有对象
  • 生成Amazon S3 预签名 URL,这是一个限时 URL,提供对私有对象的临时访问
  • 将该 URL 插入 HTML 页面,或将其作为链接提供(例如指向 PDF)
  • 当用户的浏览器使用 URL 向 S3 请求对象时,S3 服务将验证签名以确认用户有权访问私有对象且未过期
  • 如果签名得到确认,S3 将回传私有对象

此方法使后端完全控制用户可以访问 S3 中的哪些对象它可以在数据库中维护这个列表,或者它可以依赖对象的路径来确定这个访问。这甚至可以扩展为允许在用户之间共享对象例如,假设有一个照片共享应用程序,用户想要与其他用户共享照片。他们可以通过 UI 指示这一点,后端可以将其存储在数据库中。稍后,当用户想要查看共享照片时,后端会检查数据库以确认他们的权利,然后生成一个预签名的 URL 来查看共享对象,即使它在不同的路径中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在AWS S3存储桶的特定“文件夹”中列出文件

从多个文件夹的s3存储桶中仅读取特定的json文件

基于Cognito ID的S3文件夹访问的IAM策略

针对Cognito ID组的S3文件夹访问的IAM策略

s3预设网址,可访问整个文件夹

如何在特定文件夹s3下保存图像?

IAM AWS S3限于特定的子文件夹

使用boto3将文件上传到S3中的特定文件夹

如何为多个IAM用户设置S3策略,以使每个人只能访问其个人存储桶文件夹?

将对象放在AWS S3红宝石中的特定文件夹中

如何授予对Amazon S3中文件夹的所有子文件夹的访问权限?

AWS生成用于S3文件夹级别访问的动态证书吗?

AWS S3 Bucket将特定文件夹及其中的所有文件公开

AWS S3:关于限制用户仅访问其文件夹的常规做法?

我们如何在S3中为特定文件夹启用加密

serverless-s3-sync仅将特定文件夹同步到s3

对用户组的AWS访问S3存储桶的文件夹

拒绝所有用户的访问权,只有一个用户无法访问S3存储桶中的私有文件夹

如何使用经过身份验证的经过身份验证的用户授予对非公共Amazon S3存储桶文件夹的访问权限

向没有AWS账户的用户授予对AWS S3存储桶/文件夹的访问权限

使用 python boto 仅下载 S3 存储桶中的特定文件夹

Python - 从特定文件夹/子文件夹 AWS S3 下载数据

允许多个用户使用 IAM 角色访问私有 S3 文件夹

胶水 S3 目标路径匹配两级特定子文件夹

访问 s3 存储桶特定子文件夹内所有文件的对象键

将文件上传到 s3 存储桶、sdk php 中的特定文件夹

AWS S3 允许读取除特定文件夹之外的所有对象

如何为网站设置 S3 存储桶,用户可以在其中上传和下载特定文件夹中的文件

文件中“属于”用户的文件夹的 Amazon S3 事件