了解 Firebase 雲端儲存安全規則

傳統上,安全性一直是應用程式開發中最複雜的部分之一。在大多數應用程式中,開發人員必須建立並執行一個伺服器來處理身份驗證(使用者是誰)和授權(使用者可以做什麼)。身份驗證和授權很難設置,也很難正確執行,但對於產品的成功至關重要。

與 Firebase 驗證讓您輕鬆驗證使用者身分類似,Firebase 雲端儲存安全性規則讓您可以輕鬆授權使用者和驗證要求。雲端儲存安全規則可讓您指定基於路徑的權限,從而為您管理複雜性。只需幾行程式碼,您就可以編寫授權規則,將 Cloud Storage 請求限製到特定使用者或限制上傳大小。

Firebase 即時資料庫具有類似的功能,稱為Firebase 即時資料庫安全性規則

驗證

了解您的使用者是誰是建立應用程式的重要組成部分,Firebase 驗證提供了一個易於使用、安全性、僅限客戶端的身份驗證解決方案。 Firebase Cloud Storage 安全性規則與 Firebase 驗證相關聯,以實現基於使用者的安全性。當使用者透過 Firebase 驗證進行驗證時,Cloud Storage 安全性規則中的request.auth變數將成為一個對象,其中包含使用者的唯一 ID ( request.auth.uid ) 以及令牌中的所有其他使用者資訊 ( request.auth.token ) 。當使用者未經過身份驗證時, request.authnull 。這使您可以安全地控制每個用戶的資料存取。您可以在身份驗證部分了解更多資訊。

授權

識別您的用戶只是安全的一部分。一旦您知道他們是誰,您就需要一種方法來控制他們對 Cloud Storage 中檔案的存取。

Cloud Storage 可讓您指定我們伺服器上的每個檔案和每個路徑授權規則,並確定對應用程式中檔案的存取權限。例如,預設的雲端儲存安全規則需要 Firebase 身份驗證才能對所有檔案執行任何readwrite操作:

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

您可以透過在Firebase 控制台中選擇 Firebase 應用程式並查看「儲存」部分的Rules標籤來編輯這些規則。

數據驗證

Firebase Cloud Storage 安全性規則也可用於資料驗證,包括驗證檔案名稱和路徑以及檔案元資料屬性,例如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 儲存桶規劃規則開發。

  • 詳細了解如何使用安全規則保護資料