Catch up on highlights from Firebase at Google I/O 2023. Learn more

Firebase 安全規則

使用我們靈活、可擴展的 Firebase 安全規則來保護 Cloud Firestore、Firebase 實時數據庫和 Cloud Storage 中的數據。

Firebase 安全規則介於您的數據和惡意用戶之間。您可以編寫簡單或複雜的規則來保護您的應用程序數據,達到您的特定應用程序所需的粒度級別。

Firebase 安全規則利用可擴展、靈活的配置語言來定義您的用戶可以訪問實時數據庫、Cloud Firestore 和 Cloud Storage 的哪些數據。 Firebase 實時數據庫安全規則在規則定義中利用 JSON,而 Cloud Firestore 安全規則和 Firebase 雲存儲安全規則利用一種獨特的語言來適應更複雜的規則特定結構。

詳細了解如何為您在應用中使用的特定 Firebase 產品設置規則,以及不同 Firebase 產品的規則行為有何不同。

關鍵能力

靈活性編寫對您應用程序的結構和行為有意義的自定義規則。規則使用允許您利用自己的數據來授權訪問的語言。
粒度您的規則可以根據需要寬泛或狹隘。
獨立保安由於規則是在您的應用程序外部(在 Firebase 控制台或 Firebase CLI 中)定義的,因此客戶端不負責實施安全性,錯誤不會危及數據,您的數據始終受到保護。

它們是如何工作的?

Firebase 安全規則的工作原理是將模式與數據庫路徑進行匹配,然後應用自定義條件以允許訪問這些路徑中的數據。 Firebase 產品中的所有規則都有一個路徑匹配組件和一個允許讀取或寫入訪問的條件語句。您必須為您在應用中使用的每個 Firebase 產品定義規則。

對於 Cloud Firestore 和 Cloud Storage,規則使用以下語法:

service <<name>> {
  // Match the resource path.
  match <<path>> {
    // Allow the request if the following conditions are true.
    allow <<methods>> : if <<condition>>
  }
}

對於實時數據庫,基於 JSON 的規則使用以下語法:

{
  "rules": {
    "<<path>>": {
    // Allow the request if the condition for each method is true.
      ".read": <<condition>>,
      ".write": <<condition>>
    }
  }
}

規則作為OR語句應用,而不是AND語句。因此,如果多個規則與路徑匹配,並且任何匹配條件授予訪問權限,則規則授予對該路徑上數據的訪問權限。因此,如果寬泛的規則授予對數據的訪問權限,則無法使用更具體的規則進行限制。但是,您可以通過確保您的規則不會重疊太多來避免此問題。 Firebase 安全規則將匹配路徑中的重疊標記為編譯器警告。

Firebase 安全規則還可以利用身份驗證來授予基於用戶的權限,您設置的條件可以非常基本或極其複雜。在開始編寫規則之前了解有關規則語言行為的更多信息。

實現路徑

集成產品 SDK為您的應用設置Cloud FirestoreCloud StorageRealtime Database
編寫您的 Firebase 安全規則詳細了解規則的工作原理設置一些基本規則
測試您的 Firebase 安全規則使用實時數據庫和 Cloud Firestore 模擬器來測試您的應用程序的行為並在將它們部署到生產環境之前驗證您的規則。
部署您的 Firebase 安全規則使用 Firebase 控制台或 Firebase CLI 將您的規則部署到生產環境。

下一步