2017-02-14 140 views
0

我知道這個問題已被問了幾次,並且我已經通過了一些文檔和示例。但是我仍然無法讓它工作。AWS S3存儲桶策略阻止源IP地址不起作用

我想阻止一個特定的IP地址訪問我的S3存儲,並允許所有其他人。我不要想要阻止屬於IAM角色的實例,因此我使用NotIpAddress條件。以下是我在我的存儲區上應用的政策:

{ 
    "Version": "2012-10-17", 
    "Id": "Policy1486984747194", 
    "Statement": [ 
     { 
      "Sid": "AllowAllExceptOneIP", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:*", 
      "Resource": "arn:aws:s3:::my-test-bucket", 
      "Condition": { 
       "NotIpAddress": { 
        "aws:SourceIp": "52.38.90.46" 
       } 
      } 
     } 
    ] 
} 

但是,此政策不起作用。我能夠從這臺機器上傳文件到我的存儲桶,我正在使用s3-curl.pl臨時上傳我的文件。

有人可以幫我找到這裏有什麼問題。謝謝。

+0

這並沒有明確否認IP。如果您擁有公共ACL,則默認情況下將允許所有IP。爲該IP創建另一個具有「拒絕」效果的語句。 –

+0

@SergeyKovalev,謝謝,你能幫我解決這個問題嗎?我試圖 '{ \t 「版本」: 「2012年10月17日」, \t 「ID」: 「Policy1486984747194」, \t 「聲明」: \t \t { \t \t \t 「SID」:「AllowAll 」 \t \t \t 「效果」: 「允許」, \t \t \t 「校長」:{ \t \t \t \t 「AWS」: 「*」 \t \t \t}, \t \t \t 「行動」: 「S3:*」, \t \t \t 「資源」: 「阿爾恩:AWS:S3 :::我的測試鬥」 \t \t}, \t \t { \t \t \t 「SID」: 「DenyOneIP」, \t \t \t 「效果」: 「拒絕」, \t \t \t 「校長」:{ \t \t \t \t 「AWS」: 「*」 \t \t \t}, \t \t \t 「行動」: 「S3:*」, \t \t \t 「資源」:「阿爾恩:AWS:S3 :::我的測試-bucket」, \t \t \t 「條件」:{ \t \t \t \t 「Ip地址」:{ \t \t \t \t \t 「AWS:SOURCEIP」: 「52.38.90.46」 \t \t \t \t} \t \t \t} \t \t} \t] }' 但這不是工作要麼。 – Rashida

+0

我發現我做錯了什麼。就像@SergeyKovalev提到的那樣,我們需要創建另一個具有拒絕效應的語句。因爲我拒絕資源「:」arn:aws:s3 ::: my-test-bucket「而不是arn:aws:s3 ::: my-test-bucket/*,所以我能夠上傳文件,被阻止了該IP。 – Rashida

回答

1

要阻止所有行動,從一個特定的IP的S3桶,政策需要有獨立的否定作用的語句爲IP,樣品:

{ 
    "Version": "2012-10-17", 
    "Id": "Policy1487062767078", 
    "Statement": [ 
     { 
      "Sid": "AllowAll", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::my-test-bucket", 
       "arn:aws:s3:::my-test-bucket/*" 
      ] 
     }, 
     { 
      "Sid": "DenyIP", 
      "Effect": "Deny", 
      "Principal": "*", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::my-test-bucket", 
       "arn:aws:s3:::my-test-bucket/*" 
      ], 
      "Condition": { 
       "IpAddress": { 
        "aws:SourceIp": "52.38.90.46" 
       } 
      } 
     } 
    ] 
} 

行動和資源可以基於什麼人需要改變塊。

非常感謝@SergeyKovalev幫助我這個解決方案。

相關問題