了解 Cloud Storage 的 Firebase 安全規則

傳統上,安全性一直是應用程序開發中最複雜的部分之一。在大多數應用程序中,開發人員必須構建和運行處理身份驗證(用戶是誰)和授權(用戶可以做什麼)的服務器。身份驗證和授權很難設置,更難正確完成,並且對您的產品的成功至關重要。

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

在火力地堡實時數據庫也有類似的功能,稱為火力地堡實時的數據庫規則

驗證

了解您的用戶是誰是構建應用程序的重要部分,而 Firebase 身份驗證提供了一種易於使用、安全、僅限客戶端的身份驗證解決方案。 Cloud Storage 的 Firebase 安全規則與基於用戶的安全性的 Firebase 身份驗證相關聯。當用戶進行驗證火力地堡身份驗證,則request.auth在雲存儲安全規則變量變成一個包含用戶的唯一ID(對象request.auth.uid )和令牌(所有其他用戶信息request.auth.token ) .當用戶沒有通過驗證, request.authnull 。這使您可以安全地控制每個用戶的數據訪問。您可以了解更多的驗證部分。

授權

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

Cloud Storage 允許您指定我們服務器上的每個文件和每個路徑的授權規則,並確定對您應用程序中文件的訪問權限。例如,默認的雲存儲安全規則需要火力地堡身份驗證,以便執行任何readwrite的所有文件的操作:

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

您可以通過選擇一個火力地堡應用程序編輯這些規則火力地堡控制台和查看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/.*');
    }
  }
}

下一步