簡體   English   中英

面向經過身份驗證的用戶的 Amazon Web Service (AWS) 私有存儲

[英]Amazon Web Service (AWS) Private Storage For Authenticated Users

我的項目流程:

  1. 你去我的網站
  2. 您使用管理員創建的用戶名和密碼登錄
  3. 您必須查看您的帳戶專用的專用文件

我已經使用 Firebase( AuthenticationStorage )打下了基礎。 所以在 Firebase 我制定了這個Storage Rules

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /assets/{userId}/{assetsId} {
            allow read;
    }
  }
}

插圖存儲:

assets/
|----user01/
|    |----user01.jpg
|----user02/
|    |----user02.jpg

基本上只有那個 user01 可以看到 user01.jpg 並且只有那個 user02 可以訪問看到 user02.jpg 如果他/她登錄



問題:

現在,我目前想嘗試在 Amazon Web Services (AWS) 上重新制作這個項目。 我目前正在使用AWS Cognito ,據我所知,它等同於Firebase Authentication & AWS S3 Storage ,據我所知,它等同於Firebase Storage

我仍然對如何使用 AWS 進行開發感到困惑,但我認為如果用戶登錄,我認為我已經管理了如何獲取userId (或者我認為在 AWS Cognito 中的sub

我嘗試使用https://awspolicygen.s3.amazonaws.com/policygen.htmlS3 Bucket Policy重新創建Firabase Storage Rules ,但沒有像只有這個userId (或我認為在 AWS Cognito 中認為sub )這樣的條件允許閱讀他的/她的私人文件。

我是這個 Firebase 的新手,對 AWS 的東西也很陌生。 請指導我通過,非常感謝。

應該使用亞馬遜S3斗政策,也不應該把S3權限的用戶自己。

相反,它應該按如下方式工作:

  • Amazon S3 存儲桶應保持私有(無存儲桶策略)
  • 當用戶訪問您的應用程序中想要顯示或鏈接到S3 文件之一的網頁時,應用程序應該:
    • 驗證用戶是否有權訪問該文件
    • 如果是,則生成Amazon S3 預簽名 URLs ,授予對私有對象的限時訪問權限

這樣,由應用程序確定訪問權限,這在任何引用/鏈接到私有對象的頁面上完成。 生成預簽名URL只需要幾行代碼,並且不需要API回調到Amazon S3。

例如:想象一個照片共享網站 默認情況下,照片應該是私密的(無訪問權限)。 如果用戶登錄並希望在線查看照片,則生成 HTML 頁面的應用程序將使用<img src=...>標記,但 URL 將是預簽名 URL 這意味着 Web 瀏覽器將在頁面上顯示圖像。 同樣,如果有圖片的下載鏈接,則 URL 應該是預先簽名的 URL。 此外,用戶可能會選擇與其他用戶共享圖片 此類信息將保存在數據庫中。 當另一個用戶想要查看共享圖像時,應用程序會檢查數據庫,驗證權限,然后提供一個預先簽名的 URL。 這將“所有權”從路徑(存儲圖像的位置)移到數據庫中

我不是 Firebase 用戶,所以我不知道它有什么功能,但以上是在 S3 中管理用戶對私有文件的訪問的推薦方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM