拒绝访问用户代理在AWS S3访问桶
在我的S3日志,我看到NSPlayer,所有的请求的多个请求是象下面这样:拒绝访问用户代理在AWS S3访问桶
[29 /二月/ 2016:23:07: 27 0000] 188.71.221.62 - 07231C9924A44C67 REST.GET.OBJECT 16639 /音轨/ 7ed00e05502aeb383d8a1abde2.mp3
“GET /bucket/16639/tracks/7ed00e05502aeb383d8a1abde2.mp3 HTTP/1.1” 200 - 4122705 5639543 6305 58
“http://m.xxxxxxw.com /”“NSPlayer/12.00.9651.0000 WMFSDK/12.00.9651.0000" -
我想拒绝访问该用户代理和我写的水桶政策,以及用户政策,拒绝访问。但是,访问仍然没有被拒绝。你能帮我弄清楚为什么会发生?
这里是斗政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmtxxxxxxxxx0",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::xxxxxxxx3:user/bucket"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::bucket/*",
"Condition": {
"StringNotLike": {
"aws:UserAgent": "NSPlayer"
}
}
}
]
}
请让我知道如何解决这个问题!
这是我从亚马逊得到的回答是:
你几乎对桶的正确策略,以阻止从用户代理访问。棘手的部分是您允许通过公共读取ACL访问单个对象,因此您不能在存储桶中使用限制性的“允许”语句。您需要明确拒绝该用户代理执行GET请求。
实施例: { "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "s3:*",
"Resource": "arn:aws:s3:::bucket/*", "Condition": { "StringLike": { "aws:UserAgent": "*NSPlayer*" } } }] }
上述策略将阻止从任何地方在铲斗的任何访问,如果NSPlayer是在用户代理字符串。
此外,作为供参考,桶策略优先于用户策略。