Firebase 安全规则使用入门

Firebase Security Rules 让您能够以完全自定义的方式可靠地保护 Cloud FirestoreRealtime DatabaseCloud Storage 中的数据。您可以按照本指南中的步骤轻松开始使用 Rules,确保数据安全,并保护您的应用免受恶意用户攻击。

了解 Firebase Security Rules 语言

在您开始编写规则之前,值得花一些时间查看您正在使用的 Firebase 产品的特定 Firebase Security Rules 语言。Cloud Storage 利用通用表达式语言 (CEL) 的超集,该语言依赖于 matchallow 语句设置访问所指定路径的条件。

首先学习 Firebase Security Rules 语言的核心语法

设置 Authentication

Firebase Authentication 添加到您的应用(如果您尚未添加)。Firebase Authentication 支持多种常见的身份验证方法,并且与 Firebase Security Rules 安全规则集成,从而提供全面的验证功能。

您可以为您的应用设置其他自定义身份验证信息。

详细了解 Firebase Security RulesFirebase Authentication

定义您的数据和规则结构

您构建数据的方式可能会影响您构建和实现规则的方式。在您定义数据结构时,请考虑它们对 Rules 结构可能产生的影响。

例如,在 Cloud Storage 中,您可能希望包含一个表示每个用户的特定角色的字段。然后,您的规则可以读取该字段并使用它来授予基于角色的访问权限。您还可以创建一个 Cloud Firestore 数据库,将访问条件存储在 Cloud Firestore 文档中,然后通过 Cloud Storage Security Rules 访问这些文档。

在定义数据和规则架构时,请记住规则是否级联取决于产品。使用 Realtime Database 时,规则自上而下发挥作用,浅层规则将替换深层规则。如果某个规则授予对特定路径的读取或写入权限,则也会授予对此路径下所有子节点的访问权限。相比之下,使用 Cloud FirestoreCloud Storage 时,规则将仅在数据层次结构的指定级层应用,并且您可以编写明确的规则来控制对不同级层的访问权限。

访问您的规则

如需查看现有的 Rules,请使用 Firebase CLI 或 Firebase 控制台。确保始终使用同一方法修改您的规则,以避免错误地覆盖更新。如果您不能确定本地定义的规则是否反映了最近的更新,Firebase 控制台中会始终显示最近部署的 Firebase Security Rules 版本。

如需从 Firebase 控制台访问您的规则,请选择您的项目,然后点击左侧导航面板中的 Storage。在进入正确的数据库或存储桶之后,请点击 Rules

如需从 Firebase CLI 访问您的规则,请打开 firebase.json 文件中记录的规则文件。

编写基本规则

在您开发应用和了解 Rules 时,请尝试实现 Rules 以应对一些基本使用场景,其中包括:

  • 仅限内容所有者:限制用户对内容的访问。
  • 混合访问:限制用户的写入权限,但允许公开读取。
  • 基于属性的访问:仅限一组用户或一种类型的用户访问。

测试您的规则

如果您在 Firebase 控制台中设置 Firebase Security Rules,则可以使用 Firebase 规则测试平台快速验证行为。但是,在您将更改部署到生产环境之前,我们建议您使用 Local Emulator Suite 进行更全面的测试。

部署规则

使用 Firebase 控制台或 Firebase CLI 将您的规则部署到生产环境中。按照管理和部署 Firebase Security Rules 中介绍的步骤进行操作。