默认情况下,firestore 安全规则是否提供对文档的访问权限?

dev*_*inm 0 firebase firebase-security google-cloud-firestore

我正在尝试为基于 Firestore 的应用程序编写安全规则,但我对 Firestore 中对文档/集合的访问权限是否为默认设置感到困惑(这意味着我需要编写规则来明确禁止在以下情况下访问任何文档)应该限制​​访问)或者是否对文档的访问不是默认设置(这意味着我需要编写规则以在我想要启用访问的情况下专门允许访问)?

firestore文档中我读到了这个:

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

由此看来,默认情况下所有文档都可以访问,但我不确定并想问一下。

任何澄清将不胜感激!

Den*_*und 7

如果没有任何规则明确授予访问权限,则拒绝访问。这意味着与任何显式声明的路径或通配符模式不匹配的集合将无法访问。

第一个match语句是强制/databases/{database}/模式,从语法上讲,您必须在allow match 子句中声明至少 1 个语句。所以默认情况下,锁定的数据库将如下所示

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

因为省略if false将授予对所有内容的访问权限。

当您开始为集合声明特定规则时,您将隐式拒绝对未明确授予访问权限的集合和路径模式的访问。

确认这一点的最简单方法是使用Firebase 控制台中的内置规则模拟器对其进行测试。

在此处输入图片说明