2017-11-10 184 views
0

我創建了Amazon S3存儲桶以僅存儲來自我的網站的圖像。我有超過100萬的圖片全部都有公共閱讀權限。每次我做一個登錄,亞馬遜給了我這樣的警告:如何撤銷Amazon S3存儲桶中的公共權限

這桶有你提供了這個水桶公共接入公共接入 我們強烈建議您從來沒有授予任何形式的公共訪問您的S3桶。

我用下面的水桶政策只允許顯示只是在我的網站上的圖片:

{ 
 
    "Version": "2012-10-17", 
 
    "Id": "http referer policy example", 
 
    "Statement": [ 
 
     { 
 
      "Sid": "Allow get requests originated from www.example.com and example.com.br", 
 
      "Effect": "Allow", 
 
      "Principal": "*", 
 
      "Action": "s3:GetObject", 
 
      "Resource": "arn:aws:s3:::examplebucket.com/*", 
 
      "Condition": { 
 
       "StringLike": { 
 
        "aws:Referer": [ 
 
         "http://www.example.com/*", 
 
         "http://www.example.com.br/*", 
 
         "https://www.example.com/*", 
 
         "https://www.example.com.br/*" 
 
        ] 
 
       } 
 
      } 
 
     } 
 
    ] 
 
}

如何撤銷對存儲桶和我的文件的公共訪問權限並將其僅授予我的網站?

謝謝!

回答

4

這是一個可怕的警告,旨在防止人們無意中泄露數據。最近有很多案例關於公司意外設置允許公開閱讀的權限。

在你的情況下,你真的希望這些公開可讀,所以你可以忽略這個警告。您的安全政策看起來很好,並仍與公共託管的文檔相匹配。

理論上你就可以把這些圖片背後的他們流給用戶,如果你真的不希望有人能夠將其直接下載另一臺服務器。儘管如此,這確實不是更安全。

如果你不想讓這些公開可用,只要從你的桶中刪除這個策略。在這種情況下,您的網站將無法提供圖片。

+1

謝謝您的解釋!我刪除了該策略,並且這些圖片仍然有效,因爲我使用公開閱讀功能上傳了這些策略。但考慮到我有超過100萬的圖片,不可能更改所有權限......謝謝! – Andre

+1

@Andre這就是爲什麼它不僅是你的水桶政策是否允許你期待什麼,也無論它拒絕你不要指望有什麼測試是非常重要的。通過對對象進行「公開閱讀」,上述政策實際上並沒有做任何事情。如果你仍然希望被引用者拒絕,你可以創建'拒絕'策略測試'StringNotLikeIfExists'這個'aws:referer'條件鍵,但要小心,因爲如果你不這樣做,控制檯和其他內部機制的訪問可能會被拒絕提供必要的匹配條件以防止此政策拒絕他們。 –

2

你的政策看起來不錯。您正在提供更高級別的安全性,然後只是通過referer頭部公開並且不允許列出對象。

使用S3來提供常見的文件,如CSS,JS和Images,非常簡單。但是,對於所有意外的安全問題,我通常會推薦以下方法之一:

  1. 打開存儲桶的靜態網站託管。這使得未來的管理員非常清楚這個存儲桶是用於公共文件的。我也沒有看到這些桶的大警告信息。啓用重定向請求。
  2. 更好的是,關閉所有公共訪問權限並使用CloudFront。啓用原始訪問身份。您會收到CloudFront的的所有優點,更嚴格的安全等

Using an Origin Access Identity to Restrict Access to Your Amazon S3 Content

+0

好的建議。請注意對另一個答案的評論,這些對象也是'public-read',因此所顯示的存儲桶策略目前沒有任何操作。此外,要使用CloudFront乾淨地使用引用過濾器有點麻煩,需要Lambda @ Edge Viewer請求觸發器檢查和拒絕或將引用者轉發到存儲區,該存儲區僅適用於靜態網站端點,而不適用於REST(因此不適用OAI),如果您的資產被多個引用頁面引用,則後一解決方案會對緩存命中產生負面影響。 –

相關問題