防止从amazon s3直接下载音频文件

时间:2013-02-25 13:17:23

标签: amazon-web-services amazon-s3

我在亚马逊S3上存储了音频文件,可以从基于网络的音乐播放器应用程序以及移动应用程序访问。即使是未登录的用户也应该能够访问音乐。但是,我不希望人们使用该链接下载内容。这可以在s3中完成吗?

谢谢

3 个答案:

答案 0 :(得分:6)

您可以根据HTTP引荐来限制访问权限。它不是防弹的(推荐人可以欺骗),但它会停止随意下载。

您使用存储分区策略来限制Referrer的可能值。

此页面上有一个示例(向下滚动一点)http://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html

以下是他们的例子:

{
  "Version":"2008-10-17",
  "Id":"http referer policy example",
  "Statement":[
    {
      "Sid":"Allow get requests originated from www.example.com and example.com",
      "Effect":"Allow",
      "Principal":"*",
      "Action":"s3:GetObject",
      "Resource":"arn:aws:s3:::examplebucket/*",
      "Condition":{
        "StringLike":{
          "aws:Referer":[
            "http://www.example.com/*",
            "http://example.com/*"
          ]
        }
      }
    }
  ]
}

您还可以执行已过期的已签名网址,这会阻止人们从其他网站链接到您的内容。

答案 1 :(得分:1)

想到一个场景:

当您的音乐播放器应用想要播放某些内容时,它必须向您的后端询问MP3的URL。您的后端可以使用" Expires"生成URL。参数[1]将来设置为10秒。

这样,后端返回的URL只能使用10秒,这应该足以让音乐播放器从S3开始下载。

当然,如果用户在10秒窗口中看到某种HTTP嗅探器中的URL并开始下载,则用户可以下载该文件。

但是,没有防弹的方法可以保护用户免受他/她的设备访问内容的影响。如果将内容传送到设备,那么总有一种方法可以让足够技术人员亲自动手。

P.S。如果您的MP3播放器支持搜索(特别是通过发送另一个HTTP范围请求),您只需要一个单挑,您必须重新获得一个新刷新的网址" expires"来自你后端的参数。

[1] http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html

答案 2 :(得分:1)

我也遇到了这一要求,并就如何实现这一要求提供了更新的答案。

在存储桶的“权限”标签上,选择“存储桶策略”按钮,并填写以下代码:

{
    "Version": "2012-10-17",
    "Id": "Policy1542209806458",
    "Statement": [
        {
            "Sid": "Explicit deny to ensure requests are allowed only from specific referer.",
            "Effect": "Deny",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::your-bucket-arn/*",
            "Condition": {
                "StringNotLike": {
                    "aws:Referer": [
                        "http://yourdomain.com/*"
                    ]
                }
            }
        }
    ]
}

这将仅允许来自您域的引荐来源的请求。请注意,设置您的Resource字段并更改允许的aws:Referer列表。

这仍然可以被欺骗,但这是直接链接S3对象的简单障碍。