Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Firebase 安全规则

使用我们灵活、可扩展的 Firebase 安全规则来保护您在 Cloud Firestore、Firebase 实时数据库和 Cloud Storage 中的数据。

Firebase 安全规则是您的数据与恶意用户之间的屏障。您可以编写简单或复杂的规则来保护您的应用数据,使其达到特定应用所需的细化级别。

Firebase 安全规则利用可扩展、灵活的配置语言来定义用户可以访问实时数据库、Cloud Firestore 和 Cloud Storage 的哪些数据。 Firebase 实时数据库在规则定义中使用 JSON 格式,而 Cloud Firestore 安全规则和 Cloud Storage 的 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 将规则部署到生产环境中。

后续步骤