在Firestore中使用安全规则时,为什么云功能没有停止写入?

时间:2019-05-09 11:40:19

标签: firebase google-cloud-firestore google-cloud-functions

我正在使用Cloud Firestore作为后端。我正在使用规则,因此只有经过身份验证的用户才能读取某些数据(私有数据),而这些用户都不可以写。我还创建了一个将一些新内容添加到数据库时触发的函数。但是,当函数触发时,即使规则设置为false,我也可以写入数据。

如何阻止这种情况发生?

1 个答案:

答案 0 :(得分:1)

实际上,当您通过Cloud Function(使用Firebase Admin SDK)访问Firestore时,没有安全规则适用。

以下文档https://firebase.google.com/docs/admin/setup明确指出了Relatime数据库:

  

借助Admin SDK,您可以从特权用户处与Firebase进行交互   执行读写实时数据库等操作的环境   具有完全管理员权限的数据。

但与Firestore相同。

此Firestore“入门”文档https://firebase.google.com/docs/firestore/security/get-started中也有一条注释:

  

注意:服务器客户端库绕过所有Cloud Firestore安全性   规则...

如上所述,这不仅适用于Admin SDK,而且适用于其他服务器SDK,因为您使用Firebase称为“特权环境”的服务器SDK,例如您自己的服务器(在您的控制下)或云功能(由于您是唯一能够部署云功能代码的人,因此也在您的控制之下)。另请参见What is a "trusted server environment" in Firebase?


如果要限制对Cloud Function的写访问,则需要在Cloud Function中开发特定的业务逻辑以模仿安全规则。