来自S3或其他地方的共享内容

时间:2016-10-21 15:29:18

标签: security amazon-s3 sharing

如果您有一个应用程序,用户在S3存储桶中拥有数据,但可以选择与谁共享数据,那么保护此数据的最佳方法是什么?例如,Instagram如何保护他们的图像数据,如果他们使用S3(或其他一些集中存储提供商),那么你只能看到你有权看到的图片?

大网址字符串的不安似乎是一种方法,但我很好奇是否有更好的技术?

1 个答案:

答案 0 :(得分:2)

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

  • 适用于单个对象的访问控制列表
  • 将规则应用于整个存储桶的存储桶策略
  • IAM将权限应用于特定用户和组
  • 授予对单个对象的临时访问权限的预签名网址

如果您希望选择与"分享的人,有两种选择:

  • 如果此人在IAM中被定义为用户,则为用户
  • 分配权限
  • 如果此人 未在IAM中定义(例如Instagram用户),请使用预先签名的网址

Pre-Signed URL 授予对S3对象的访问权限,作为"覆盖"访问控制。通过附加到期时间和签名,可以通过URL访问通常的私有对象。这是从Amazon S3提供私人内容的好方法。

基本上,如果应用程序确定用户有权访问Amazon S3中的对象,则可以生成提供对对象的临时访问权限的链接。拥有该链接的任何人都可以访问该对象,但一旦该时间段到期,它将不再有效。

可以通过AWS SDK生成预签名的URL(适用于大多数流行的编程语言)。它也可以通过AWS Command-Line Interface (CLI)中的aws s3 presign命令生成。

预先签名的网址甚至可以在网页中使用。例如,HTML可能引用使用<img>标记的图片,其中src是预先签名的网址。这样,可以在页面上显示私人图片,但搜索引擎无法抓取图片。