如果您有一个应用程序,用户在S3存储桶中拥有数据,但可以选择与谁共享数据,那么保护此数据的最佳方法是什么?例如,Instagram如何保护他们的图像数据,如果他们使用S3(或其他一些集中存储提供商),那么你只能看到你有权看到的图片?
大网址字符串的不安似乎是一种方法,但我很好奇是否有更好的技术?
答案 0 :(得分:2)
默认情况下,Amazon S3中的所有对象都是私有的。然后,您可以添加权限,以便人们可以访问您的对象。这可以通过以下方式完成:
如果您希望选择与"分享的人,有两种选择:
Pre-Signed URL 授予对S3对象的访问权限,作为"覆盖"访问控制。通过附加到期时间和签名,可以通过URL访问通常的私有对象。这是从Amazon S3提供私人内容的好方法。
基本上,如果应用程序确定用户有权访问Amazon S3中的对象,则可以生成提供对对象的临时访问权限的链接。拥有该链接的任何人都可以访问该对象,但一旦该时间段到期,它将不再有效。
可以通过AWS SDK生成预签名的URL(适用于大多数流行的编程语言)。它也可以通过AWS Command-Line Interface (CLI)中的aws s3 presign
命令生成。
预先签名的网址甚至可以在网页中使用。例如,HTML可能引用使用<img>
标记的图片,其中src
是预先签名的网址。这样,可以在页面上显示私人图片,但搜索引擎无法抓取图片。