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 Firestore 、 Cloud Storage或实时数据库。 | |
编写您的 Firebase 安全规则 | 详细了解规则的工作原理并设置一些基本规则 | |
测试您的 Firebase 安全规则 | 在将应用部署到生产环境之前,使用实时数据库和 Cloud Firestore 模拟器来测试您的应用行为并验证您的规则。 | |
部署您的 Firebase 安全规则 | 使用 Firebase 控制台或 Firebase CLI 将您的规则部署到生产环境。 |
下一步
, 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 Firestore 、 Cloud Storage或实时数据库。 | |
编写您的 Firebase 安全规则 | 详细了解规则的工作原理并设置一些基本规则 | |
测试您的 Firebase 安全规则 | 在将应用部署到生产环境之前,使用实时数据库和 Cloud Firestore 模拟器来测试您的应用行为并验证您的规则。 | |
部署您的 Firebase 安全规则 | 使用 Firebase 控制台或 Firebase CLI 将您的规则部署到生产环境。 |