我試過尋找這個答案,但我想我可能使用了錯誤的術語,所以我想我會給這個鏡頭。我可以輕鬆限制用戶可以從Amazon S3服務器下載哪些文件嗎?
我有一個Rails應用程序,一個公司可以擁有一個擁有各種權限的多個用戶的帳戶等。系統的一部分將是上傳文件的能力,我正在研究S3存儲。我想要的是能否說公司A的用戶只能下載與該公司相關的文件?
我得到的印象我不能,除非我限制下載到我的部署服務器IP範圍(這將是Heroku),然後通過控制器和send_file()調用提供文件。這將工作,但然後我正在讀取數據從S3到Heroku,然後回到用戶與從S3到用戶的直接。
如果我使用send_file方法,我可以關閉我的S3服務器到外部世界,讓我的Heroku應用程序直接發送文件?
一個不太安全的想法是爲每個文件創建一個獨特的slu and並將其存儲在該名稱下,以防止隨機猜測文件,即http://mys3server/W4YIU5YIU6YIBKKD.jpg
等。這將是快速和骯髒,但不是100%安全。
它看起來非常強大,但在一天結束時,如果我的存儲桶通過http打開,我無法真正限制誰可以查看圖像/下載文件,而無需製作單獨的存儲桶並添加身份驗證。如果我的Heroku應用鏈接到外部S3 URL,任何用戶都可以從應用外複製和粘貼,甚至可以與其他人分享。當S3或任何其他網絡服務器提供文件時,您不能限制直接鏈接的傳送與網站的HTML中嵌入的鏈接。 –
看來你可以限制允許下載文件的IP範圍。您可以使用它只讓您的服務器(或網絡)下載文件:http://docs.amazonwebservices.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Conditions_IPAddress – j0nes
我想過,但然後我必須提供所有文件通過我的Heroku應用程序。在進一步挖掘之後,我可能會結合使用sluks和即將到期的URL選項。 –