现在,我知道我无法阻止某人下载我的视频和共享,但我更愿意这样做,以便人们不会将粘贴链接直接复制到我的存储桶中.因此,有没有办法让我的存储桶只能从我的服务器/域发出请求?
如果它有帮助,我正在使用jwplayer从一个包含所有链接的xml播放列表加载.这个播放列表绝对可以在任何地方打开和查看,是我希望轻松复制和粘贴的地方.
我不想掩盖网址,因为这意味着我的存储桶对每个人都可读.可能有人有机会找到我的桶的URL和文件的名称并将所有内容连接在一起......
这可以通过使用存储桶策略来实现,该存储策略允许您定义Amazon S3资源的访问权限 - 有几个示例功能的Amazon S3存储桶策略示例,其中您将找到限制访问特定的示例IP地址:
此语句向任何用户授予对指定存储桶中的对象执行任何S3操作的权限.但是,请求必须源自条件中指定的IP地址范围.
根据您的用例的具体情况,针对此的存储桶策略可能如下所示:
{
"Version": "2008-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket/*",
"Condition" : {
"IpAddress" : {
"aws:SourceIp": "192.168.143.0/24"
},
"NotIpAddress" : {
"aws:SourceIp": "192.168.143.188/32"
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
如图所示,aws:sourceIp对于参数值IPAddress,并NotIpAddress在表示CIDR符号,使各自的灵活性用于构成所期望的范围.
最后,您可能需要查看推荐的AWS策略生成器,选择类型S3存储桶策略并探索可用的操作和条件,最终为您的用例组成更具针对性的策略 - 条件文档详细说明了这一点.
如果您的服务器要访问您的存储桶,IP地址将有所帮助.但JWPlayer来自客户端.所以请求直接从jwplayer(浏览器)到s3 bucket url,而不是通过你的服务器.在这种情况下,"推荐人桶政策"将帮助您.
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "1",
"Effect": "Deny",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::yourbucketname/*",
"Condition": {
"StringNotLike": {
"aws:Referer": [
"http://yoursitename.com/*",
"http://*.yoursitename.com/*"
]
}
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
所以现在s3将允许该请求仅来自您的网站.