2012-10-20 46 views
0

我試過尋找這個答案,但我想我可能使用了錯誤的術語,所以我想我會給這個鏡頭。我可以輕鬆限制用戶可以從Amazon S3服務器下載哪些文件嗎?

我有一個Rails應用程序,一個公司可以擁有一個擁有各種權限的多個用戶的帳戶等。系統的一部分將是上傳文件的能力,我正在研究S3存儲。我想要的是能否說公司A的用戶只能下載與該公司相關的文件?

我得到的印象我不能,除非我限制下載到我的部署服務器IP範圍(這將是Heroku),然後通過控制器和send_file()調用提供文件。這將工作,但然後我正在讀取數據從S3到Heroku,然後回到用戶與從S3到用戶的直接。

如果我使用send_file方法,我可以關閉我的S3服務器到外部世界,讓我的Heroku應用程序直接發送文件?

一個不太安全的想法是爲每個文件創建一個獨特的slu and並將其存儲在該名稱下,以防止隨機猜測文件,即http://mys3server/W4YIU5YIU6YIBKKD.jpg等。這將是快速和骯髒,但不是100%安全。

回答

0

Amazon S3存儲桶支持根據不同條件授予或拒絕訪問的策略。您可能可以使用這些來保護來自不同用戶組的文件。看看policy documentation瞭解什麼是可能的。之後,您可以切換到AWS policy generator以根據您的需求生成有效的策略。

+0

它看起來非常強大,但在一天結束時,如果我的存儲桶通過http打開,我無法真正限制誰可以查看圖像/下載文件,而無需製作單獨的存儲桶並添加身份驗證。如果我的Heroku應用鏈接到外部S3 URL,任何用戶都可以從應用外複製和粘貼,甚至可以與其他人分享。當S3或任何其他網絡服務器提供文件時,您不能限制直接鏈接的傳送與網站的HTML中嵌入的鏈接。 –

+0

看來你可以限制允許下載文件的IP範圍。您可以使用它只讓您的服務器(或網絡)下載文件:http://docs.amazonwebservices.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Conditions_IPAddress – j0nes

+0

我想過,但然後我必須提供所有文件通過我的Heroku應用程序。在進一步挖掘之後,我可能會結合使用sluks和即將到期的URL選項。 –

相關問題