Google 致力于为黑人社区推动种族平等。查看具体举措
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

Firebase安全規則

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

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

Firebase安全規則利用可擴展的靈活配置語言來定義您的用戶可以訪問實時數據庫,Cloud Firestore和Cloud Storage的哪些數據。 Firebase實時數據庫規則在規則定義中利用JSON,而Cloud Firestore安全規則和Cloudbase的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 Storage實時數據庫
編寫您的Firebase安全規則詳細了解規則的工作原理設置一些基本規則
測試您的Firebase安全規則在將它們部署到生產環境之前,請使用實時數據庫和Cloud Firestore模擬器來測試您的應用程序的行為並驗證您的規則。
部署您的Firebase安全規則使用Firebase控制台或Firebase CLI將規則部署到生產中。

下一步