获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

开始使用 Cloud Firestore 安全规则

借助 Cloud Firestore 安全规则,您可以专注于构建出色的用户体验,而无需管理基础架构或编写服务器端身份验证和授权代码。

安全规则以简单而富有表现力的格式提供访问控制和数据验证。要构建基于用户和基于角色的访问系统以确保用户数据安全,您需要将Firebase 身份验证与 Cloud Firestore 安全规则结合使用。

安全规则版本 2

截至 2019 年 5 月,Cloud Firestore 安全规则第 2 版现已可用。规则的版本 2 更改了递归通配符{name=**}的行为。如果您计划使用集合组查询,则必须使用版本 2。您必须通过rules_version = '2';安全规则的第一行:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

编写规则

所有 Cloud Firestore 安全规则都包含match语句,用于识别数据库中的文档,并allow表达式,用于控制对这些文档的访问:

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

在读取或写入任何数据之前,来自 Cloud Firestore 移动/Web 客户端库的每个数据库请求都会根据您的安全规则进行评估。如果规则拒绝访问任何指定的文档路径,则整个请求将失败。

以下是基本规则集的一些示例。虽然这些规则有效,但不建议将它们用于生产应用程序:

需要授权

// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

全部拒绝

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

允许全部

// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

上面示例中使用的{document=**}路径匹配整个数据库中的任何文档。继续阅读构建安全规则的指南,了解如何匹配特定数据路径和使用分层数据。

测试规则

Cloud Firestore 提供了一个规则模拟器,您可以使用它来测试您的规则集。您可以从 Firebase 控制台 Cloud Firestore 部分的规则选项卡访问模拟器。

规则模拟器允许您模拟经过身份验证和未经身份验证的读取、写入和删除。当您模拟经过身份验证的请求时,您可以构建和预览来自各种提供商的身份验证令牌。模拟请求针对您编辑器中的规则集运行,而不是您当前部署的规则集。

部署规则

在开始通过移动应用使用 Cloud Firestore 之前,您需要部署安全规则。您可以在 Firebase 控制台中或使用 Firebase CLI 部署规则。

Cloud Firestore 安全规则的更新最多可能需要一分钟才能影响新的查询和侦听器。但是,最多可能需要 10 分钟才能完全传播更改并影响任何活动的侦听器。

使用 Firebase 控制台

要设置和部署您的第一组规则,请打开 Firebase 控制台 Cloud Firestore 部分中的规则选项卡

在在线编辑器中编写您的规则,然后点击发布

使用 Firebase CLI

您还可以使用Firebase CLI部署规则。使用 CLI 允许您使用应用程序代码将规则置于版本控制之下,并将规则部署为现有部署过程的一部分。

// Set up Firestore in your project directory, creates a .rules file
firebase init firestore

// Edit the generated .rules file to your desired security rules
// ...

// Deploy your .rules file
firebase deploy --only firestore:rules

增强云存储的安全性

您的应用将受益于 Cloud Firestore 强大的数据库功能以及 Cloud Storage 的文件存储和管理功能。结合使用,这些产品还可以增强应用程序安全性,因为 Cloud Firestore 可以捕获 Firebase 安全规则可用于这两种产品的授权要求。有关更多信息,请参阅云存储指南

下一步