Permissions
如何配置 Amazon S3 權限以託管我的移動應用程序的文件
我有一個將文件上傳到伺服器並需要能夠下載它們的移動應用程序。我使用 S3 來保存文件,並有一個 RoR 後端來管理所有這些。
是否可以進行以下設置?
- RoR 後端使用某個“訪問密鑰和秘密訪問密鑰”來訪問 S3 API。此訪問密鑰有權列出儲存桶中的對象、讀取它們並創建新對象。
- 當手機應用上傳文件時,RoR 後端將其保存到 S3,並生成一個 URL
- 手機要下載文件,會訪問該 URL。它具有讀取這些文件的權限,但沒有寫入權限,並且絕對沒有列出權限(這是關鍵)
- 我希望手機只需使用普通的 HTTP GET 訪問 URL 並獲取文件,而無需處理 S3 api。這是非常可取的。
- 理想情況下,如果我可以擁有它,以便手機還需要具有某種訪問密鑰/令牌,但它可以簡單地將其作為參數添加到 URL,而不是通過 S3 API,那就太好了. 這給了我一些額外的安全性,而不必將客戶端實際綁定到 S3,以防我們將來想要更改提供程序。
AWS 有多種配置這些東西的選項,我不清楚哪個是最好的,哪些場景是可能的(我看到有一些選項可以生成有時間限制的 URL。這對我來說很好,如果伺服器可以給客戶端一個僅在幾分鐘內有效的 URL,以防 URL 以某種方式“洩露”,但我無法弄清楚它是如何工作的)
任何指針將不勝感激!
S3 簽名 URL 是執行此操作的首選方式。要使用簽名 URL,您的 ruby 後端將需要使用 S3 API 生成一個有時間限制的簽名 URL,然後將其傳遞到您的移動應用程序。以這種方式做事不需要您將訪問密鑰部署到您的移動應用程序,這是一種更安全的解決方案安全性,也更容易維護。