Firebase Security Rules
使用我们灵活、可扩展的 Firebase 安全规则可保护您在 Cloud Firestore、Firebase Realtime Database 和 Cloud Storage 中存储的数据。
Firebase Security Rules 是您的数据与恶意用户之间的屏障。您可以编写简单或复杂的规则来保护您的应用数据,使其达到特定应用所需的细化级别。
Firebase Security Rules 利用灵活的可扩展配置语言来定义用户可以访问 Realtime Database、Cloud Firestore 和 Cloud Storage 的哪些数据。Firebase Realtime Database Security Rules 在规则定义中采用 JSON 格式,而 Cloud Firestore Security Rules 和 Firebase Security Rules for Cloud Storage 利用独特的语言,以适应专用于更复杂规则的结构。
详细了解如何为您在应用中使用的特定 Firebase 产品设置 Rules,以及 Rules 行为在各种 Firebase 产品中有何不同。
主要功能
灵活性 | 编写对您的应用结构和行为有意义的自定义规则。 Rules 使用多种语言来让您利用自己的数据对访问授权。 |
细化程度 | 视您的需求而定,您的规则可以很宽泛,也可以很具体。 |
独立的安全性 | 由于 Rules 是在您的应用之外(在 Firebase 控制台或 Firebase CLI 中)定义的,因此客户端不负责强制执行安全性,bug 不会造成数据泄露,并且您的数据始终受到保护。 |
规则的工作原理
Firebase Security Rules 的工作原理如下:将一种模式与多个数据库路径相匹配,然后应用自定义条件允许对这些路径上的数据进行访问。Firebase 产品中的所有 Rules 都有一个路径匹配的组件和一个允许进行读取或写入访问的条件语句。您必须为在应用中使用的每个 Firebase 产品定义 Rules。
对于 Cloud Firestore 和 Cloud Storage,Rules 使用以下语法:
service <<name>> {
// Match the resource path.
match <<path>> {
// Allow the request if the following conditions are true.
allow <<methods>> : if <<condition>>
}
}
对于 Realtime Database,基于 JSON 的 Rules 使用以下语法:
{
"rules": {
"<<path>>": {
// Allow the request if the condition for each method is true.
".read": <<condition>>,
".write": <<condition>>
}
}
}
Rules 作为 OR
语句而不是 AND
语句进行应用。因此,如果多条规则都与一个路径相匹配,只要其中有一项匹配的条件授予访问权限,Rules 就会授予对该路径上数据的访问权限。所以,如果宽泛的规则授予了对数据的访问权限,您无法通过更具体的规则来限制访问权限。但是,您可以通过确保 Rules 没有过多重叠来避免这一问题。Firebase Security Rules 将匹配路径中的重叠标记为编译器警告。
Firebase Security Rules 还可以利用 Authentication 来授予基于用户的权限,您设置的条件可以非常基本,也可以异常复杂。在开始编写 Rules 之前,请详细了解 Rules 语言和行为。
实现流程
集成产品 SDK | 为您的应用设置 Cloud Firestore、Cloud Storage 或 Realtime Database。 | |
编写您的 Firebase Security Rules | 详细了解 Rules 的工作原理并设置一些基本 Rules | |
测试您的 Firebase Security Rules | 在部署到生产环境之前,使用 Realtime Database 和 Cloud Firestore 模拟器测试您的应用行为并验证您的规则。 | |
部署您的 Firebase Security Rules | 使用 Firebase 控制台或 Firebase CLI 将您的规则部署到生产环境中。 |