Cloud Firestore 忽略规则
Posted
技术标签:
【中文标题】Cloud Firestore 忽略规则【英文标题】:Cloud Firestore ignores rules 【发布时间】:2020-10-27 13:35:24 【问题描述】:我在我的项目中使用 Google Cloud Platform Cloud Firestore 数据库。我在开发者模式下启动它来为我的数据建模并用记录填充它。
现在我已准备好投入生产,因此我正在使用 Firebase 控制台而不是 GCP 控制台来制定规则。 但它似乎忽略了我插入的每一条规则。例如,如果我写这样的东西
rules_version = '2';
service cloud.firestore
match /databases/database/documents
match /document=**
allow read, write: if false
我尝试提交的每次读取或创建都使用规则操场失败,并显示消息:“模拟读取被拒绝”(例如)
但如果我从我的 node.js 应用程序调用查询,我可以读取、创建、编辑和删除所有内容,就像忽略规则一样。
规则监视器没有显示任何错误。
这与 GCP Firestore 有关吗?我假设他们使用相同的平台,实际上他们经常指向 Firebase 控制台而不是 GCP 控制台进行操作
【问题讨论】:
您可能在您的 nodejs 应用程序中使用了 Admin SDK。 adminSDK 可以做任何事情,因为它只能在受信任的环境中运行,例如服务器。 是的,我确实在使用 Admin SDK。是的,它位于受信任的服务器中。我不知道它绕过了安全规则 【参考方案1】:在 NodeJS 上运行的 Admin SDK 可以绕过任何安全规则,并且几乎可以对所有 Firebase 产品执行任何操作。
这样,它只能在管理您的应用的服务器上的受信任环境中运行。它允许更多功能,并允许服务器执行您不希望客户端执行的操作(例如更改排行榜)。您可以阅读有关 SDK 及其权限的更多信息here
【讨论】:
以上是关于Cloud Firestore 忽略规则的主要内容,如果未能解决你的问题,请参考以下文章
Firebase Cloud Storage 规则能否针对 Firestore 数据进行验证?
Cloud Firestore 安全规则只允许从 Firebase 函数写入
Firebase Cloud Firestore 数据库规则数据访问被拒绝