【问题标题】:Is there a way to serve s3 files directly to the user, with a url that cant be shared?有没有办法直接向用户提供 s3 文件,其 url 不能共享?
【发布时间】:2012-06-17 02:37:55
【问题描述】:

我正在为 S3 上的网站存储一些文件。目前,当用户需要文件时,我会创建一个过期的签名 url(查询字符串身份验证)并将其发送到他们的浏览器。但是,他们可以在到期前与其他人共享此 url。

我想要的是某种身份验证,以确保 url 只能在经过身份验证的用户浏览器中使用。

我已经实现了一种方法,将我的服务器用作亚马逊和用户之间的中继,但我更愿意将用户直接指向亚马逊。

有没有办法在用户浏览器中创建某种会话 cookie,然后让亚马逊在提供文件之前期望该会话 cookie?

【问题讨论】:

  • 我不确定 s3 是如何工作的,但我认为您可以创建一个票证网址,将票证编号发送给客户端,将密钥保存到客户端浏览器并根据请求调用它
  • 在谷歌上没有找到任何类似的内容...链接?

标签: session authentication amazon-s3 amazon-web-services amazon


【解决方案1】:

单独使用 S3 是不可能的,但 CloudFront 提供了此功能。看看文档中的这一章:Using a Signed URL to Serve Private Content

【讨论】:

  • CloudFront 似乎更像是一种 CDN 类型的服务。这并不是我们真正需要的,因为我们不希望将我们的内容分发到边缘服务器。我还看到它可以使用 IP 对 URL 进行签名,这很好,但仍然不是很安全。我认为你说得对,单靠 s3 是无法实现的。
  • 那么唯一可行的解​​决方案是通过 EC2 实例路由数据流量,该实例处理您提到的安全方面......但老实说:我认为 CloudFront + 自定义策略声明是最简单且实现您的计划的最(成本)有效的方式。
  • 非常感谢您的建议。我不确定我是否了解基础知识...我们授予对存储桶的云端访问权限,然后签署所有限制为 ip 的云端 URL?还是来自云端的更强大的安全性?您能否将我链接到有关按照您建议的方式进行配置的任何内容?谢谢,T
  • 首先我会从webinar 开始,然后通过CloudFront documentation 开始。
猜你喜欢
  • 2019-09-17
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多