我有存储在亚马逊S3的音频文件被从一个基于Web的音乐播放器应用程序访问,并且还从移动应用。 即使不登录的用户应该能够访问音乐。 但是我不希望人们使用链接下载内容。 可这在S3中实现呢?
谢谢
我有存储在亚马逊S3的音频文件被从一个基于Web的音乐播放器应用程序访问,并且还从移动应用。 即使不登录的用户应该能够访问音乐。 但是我不希望人们使用链接下载内容。 可这在S3中实现呢?
谢谢
您可以根据HTTP参照限制访问。 这不是防弹(推荐人可以是伪造的),但它会停止休闲下载。
您可以使用一个水桶策略来限制对推荐人的可能值。
有这个页面(向下滚动位)的一个例子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/*"
]
}
}
}
]
}
你也可以做到这一点到期签署的网址 - 这将阻止人们链接到其他网站的内容。
一个场景浮现在脑海:
当你的音乐播放器应用程序要玩的东西,它要问你的后端的URL到MP3。 后端可以产生网址“expires”参数[1]设定为10秒的未来。
这样一来,被你的后端返回的URL仅10秒,这应该是绰绰有余的音乐播放器启动从S3下载使用。
当然,如果他/她看到在10秒窗口某种HTTP嗅探器的URL,并开始下载,用户可以下载该文件。
但是,有保护用户从让他/她的手放在自己的设备访问内容没有防弹方式。 如果内容被传递到设备,总是有足够的技术人员,以获得它自己的手中的方式。
PS刚刚抬头,如果你的MP3播放器支持寻求(特别是通过发送另一个HTTP范围请求求),你就必须重新获得与刷新一个新的URL“到期”参数从你的后端。
[1] http://s3.amazonaws.com/doc/s3-developer-guide/RESTAuthentication.html
我已经遇到这个要求也是一样,对如何实现这一更多更新的答案。
在你的水桶的“权限”选项卡,选中“斗政策”按钮,然后用下面的代码填写:
{
"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。一个简单的屏障。