Amazon-Web-Services
限制特定網站使用者訪問 S3 儲存桶文件夾?(不使用 IAM 使用者)
我有一個使用者需要登錄的網站。他們可以上傳和刪除自己的圖片,但這些圖片應該是私有的,所以圖片沒有設置為任何人都可以查看的公開。
我知道我們可以使用 IAM 策略來限制不同 IAM 使用者對 S3 儲存桶中不同文件夾的訪問。但是網站使用者只是數據庫中記錄的普通註冊使用者(可能是MySQL),他們不是IAM使用者。
在不需要每個網站使用者的 IAM 使用者的情況下進行設置的邏輯是什麼?有什麼好的例子可以推薦嗎?或者我想太多了,有更簡單的方法來設置這種限制?
在此先感謝您的任何建議。
另一種選擇是完全不使用 IAM 角色和憑證並使用**S3 預簽名 URL**。使用預簽名 URL,您可以創建一個安全的、有時間限制的圖像連結,從而可以在未經身份驗證的情況下訪問 S3 中的其他私有對象。換句話說:
- 您的 S3 對像都是私有的,除了網路伺服器之外沒有人可以訪問它們。
- 當使用者登錄時,您會為他的圖像生成預簽名的 URL。這些 URL 將使使用者可以臨時訪問他的內容(例如,有效期為 1 小時)。
- 當連結過期時(例如 1 小時後),它不再提供對使用者圖像的訪問。
這樣,您就可以在沒有任何 IAM 使用者或網站使用者的 IAM 角色的情況下逃脫。
這是一個關於如何實現它的簡單展示:S3 Pre-signed URL demo
您也可以使用預簽名的 URL 來上傳圖片,但這有點複雜。使用標准上傳方法將圖像上傳到您的伺服器可能更容易,伺服器將它們上傳到 S3。
這是一種比使用 Cognito 更受限制的方法,但它可能更容易實現。
希望有幫助:)