瞭解 Cloud Storage 的 Firebase 安全性規則

安全性向來是應用程式開發中最複雜的部分之一。在大多數應用程式中,開發人員必須建構及執行伺服器,以便處理驗證 (使用者身分) 和授權 (使用者可執行的操作)。驗證和授權功能不但難以設定,也難以正確設定,但卻是產品成功的關鍵。

就像 Firebase Authentication 可讓您輕鬆驗證使用者一樣,Cloud StorageFirebase Security Rules 也能讓您輕鬆授權使用者及驗證要求。Cloud Storage Security Rules 可讓您指定以路徑為基礎的權限,藉此管理複雜性。您只需編寫幾行程式碼,即可編寫授權規則,將 Cloud Storage 要求限制給特定使用者,或限制上傳內容的大小。

Firebase Realtime Database 也有類似的功能,稱為 Firebase Realtime Database Security Rules

驗證

瞭解使用者身分是建構應用程式的重要環節,而 Firebase Authentication 則提供易於使用且安全的用戶端專屬驗證解決方案。Firebase Security RulesCloud Storage 連結,可為使用者提供安全性。Firebase Authentication當使用者透過 Firebase Authentication 進行驗證時,Cloud Storage Security Rules 中的 request.auth 變數會變成物件,其中包含使用者的不重複 ID (request.auth.uid) 和憑證中的所有其他使用者資訊 (request.auth.token)。如果使用者未經過驗證,request.auth 就是 null。這可讓您針對個別使用者安全地控管資料存取權。詳情請參閱「驗證」一節。

授權

辨識使用者只是安全性措施的一部分。知道這些使用者身分後,您需要控管他們在 Cloud Storage 中存取檔案的權限。

Cloud Storage 可讓您指定每個檔案和每個路徑的授權規則,這些規則會在伺服器上執行,並決定應用程式中的檔案存取權。舉例來說,預設的 Cloud Storage Security Rules 需要 Firebase Authentication,才能對所有檔案執行任何 readwrite 作業:

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

如要編輯這些規則,請在 Firebase 主控台中選取 Firebase 應用程式,然後查看「儲存空間」部分的 Rules 分頁。

資料驗證

Cloud StorageFirebase Security Rules 也可用於資料驗證,包括驗證檔案名稱和路徑,以及檔案中繼資料屬性,例如 contentTypesize

service firebase.storage {
  match /b/{bucket}/o {
    match /images/{imageId} {
      // Only allow uploads of any image file that's less than 5MB
      allow write: if request.resource.size < 5 * 1024 * 1024
                   && request.resource.contentType.matches('image/.*');
    }
  }
}

後續步驟

  • 開始規劃 Cloud Storage 桶的規則開發作業。

  • 進一步瞭解如何使用安全性規則保護資料