【问题标题】:How to set visibility (read) permissions on S3 uploads如何设置 S3 上传的可见性(读取)权限
【发布时间】:2017-06-14 13:54:58
【问题描述】:

使用 Amazon 的 S3 存储,是否可以将图像设置为仅对应用程序的特定用户可见?

我查看了policy generator,但似乎找不到我要找的东西。

this documentation page 上的一些信息听起来很相关。我可以使用签名 URL 或 IAM 用户来实现这一点吗?理想情况下,应用程序的用户不必创建 AWS 账户。

【问题讨论】:

  • This SO question 有点相关,但我不确定如何直接应用该信息。
  • 这个问题需要澄清。您想让应用程序的“特定用户”可以查看图像。这些用户是如何选择或识别的?你的应用是用什么平台编写的?你需要它有多安全?浏览器缓存对您所做的事情的重要性是什么? (您关于签名 URL 影响缓存的结论是正确的,但不一定完全排除它们。)

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


【解决方案1】:

默认情况下,Amazon S3 中的所有对象都是私有的。然后您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:

  • 单个对象的访问控制列表 (ACL) 权限
  • 存储桶策略
  • IAM 用户和组
  • 预签名 URL

鉴于您希望向应用程序用户授予访问权限,推荐的方法是预签名 URL

Pre-Signed URL 可用于授予对 S3 对象的访问权限,作为“覆盖”访问控制的一种方式。通过附加到期时间和签名,可以通过 URL 访问通常私有的对象。这是一种向用户提供私有内容的好方法,无需在 IAM 中定义每个用户。 (建议仅将 IAM 用于员工,而不是应用程序用户。)

只需几行代码即可生成预签名 URL。一个快速的实验方法是使用AWS Command-Line Interface (CLI),它有一个aws s3 presign 命令。

见:AWS CLI aws s3 presign documentation

在各种编程语言中,所有AWS SDKs 都有等效的命令。

【讨论】:

  • 谢谢,签名 URL 看起来是一个可行的选择。您知道是否使用签名(更改)的 URL 破坏图像缓存?另外,如果我理解正确,任何人都可能在资源过期之前使用签名的 URL 来访问它,有没有办法进一步锁定它?
  • 你是对的——任何拥有预签名 URL 的人都可以在给定的时间范围内访问资源。没有仅适用于一个文件的进一步限制(有存储桶策略,但它们适用于整个存储桶/路径,例如 IP 地址限制)。由于仅更改了参数(在? 之后),因此仍应支持缓存,但这可能取决于浏览器和缓存控制标头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-08
  • 2017-03-09
  • 2020-02-23
  • 2011-08-08
相关资源
最近更新 更多