2016-03-02 106 views
0

在我的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" 
       } 
      } 
     } 
    ] 
} 

請讓我知道如何解決這個問題!

回答

1

這是我從亞馬遜得到的回答是:

你幾乎對桶的正確策略,以阻止從用戶代理訪問。棘手的部分是您允許通過公共讀取ACL訪問單個對象,因此您不能在存儲桶中使用限制性的「允許」語句。您需要明確拒絕該用戶代理執行GET請求。

實施例: { "Version": "2012-10-17", "Statement": [{ "Effect": "Deny", "Principal": "*", "Action": "s3:*",
"Resource": "arn:aws:s3:::bucket/*", "Condition": { "StringLike": { "aws:UserAgent": "*NSPlayer*" } } }] }

上述策略將阻止從任何地方在剷鬥的任何訪問,如果NSPlayer是在用戶代理字符串。

此外,作爲供參考,桶策略優先於用戶策略。