我正在使用Cloud Firestore作为后端。我正在使用规则,因此只有经过身份验证的用户才能读取某些数据(私有数据),而这些用户都不可以写。我还创建了一个将一些新内容添加到数据库时触发的函数。但是,当函数触发时,即使规则设置为false
,我也可以写入数据。
如何阻止这种情况发生?
答案 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中开发特定的业务逻辑以模仿安全规则。