AmazonAWS保护S3 Bucket视频

时间:2018-06-04 23:02:33

标签: php amazon-web-services video amazon-s3

我正在以非常简单的方式使用AWS S3存储桶。

  • 有一个桶,< somebucket1>
  • 有一个文件夹,< somebucket1> / sitevideos
  • 其中的视频文件,< somebucket1> /sitevideos/video.mp4

我使用此存储桶,因此与仅从网站的同一服务器调用视频相比,使用HTML5视频(<video></video>)进行播放更加优化并且不会滞后。(这很荒谬)。

视频文件已加密,但它们设置为只读为Public。

现在,我担心的是,因为它们是 public ,人们可以从S3存储桶下载它们而不是在网站上播放它们。

问题

有没有办法在远程网站的HTML视频上播放S3存储桶中的视频文件,但如果直接通过S3路径访问该文件,是否会拒绝下载该文件?

如果有这方面的教程,我会很感激。如果这已经在S3文档中,我为懒惰道歉,请告诉我链接。我还听说你可以将它们设置为私有,但是它们仍然可以在远程服务器上播放(虽然我没有做到这一点)。

干杯&amp;非常感谢

1 个答案:

答案 0 :(得分:3)

可以将Bucket Policy配置为Restrict Access to a Specific HTTP Referrer

例如,如果网页在页面上包含图像,则该对象的HTTP请求将包含referer。 (我认为这也适用于视频。)

但是,这不是很好的安全性,因为可以轻松地操纵HTTP请求以包含referer(例如在网络刮板中)。

更安全的方法是使用Pre-Signed URL。这是一个特殊构造的URL,用于授予对私有Amazon S3对象的限时访问权限。

在呈现网页时,您的应用会确定是否允许用户访问该对象。如果是这样,它将使用AWS凭证构建预签名URL。然后,该URL可以包含在标准HTML标记中(例如<img src='...'>)。用户将能够访问该对象,直到到期时间。如果他们与其他人共享URL(例如在推文中),其他人也可以在到期时间之前访问该对象。

顺便说一句,Amazon CloudFront can also serve video content使用各种视频协议。它还支持预签名的URL(以及签名的cookie)。