node.js - 当 firebase-admin 写入数据时,使用规则验证 Firebase

标签 node.js firebase google-cloud-firestore firebase-admin

据我了解,admin.initializeApp()使用的默认帐户具有编辑者权限,这似乎忽略了所有验证和权限规则

我错过了什么吗?在写入 Firebase 时让默认服务帐户(即写入 Firebase 的服务器进程)完全绕过规则似乎是没有意义的。特别是因为这是示例和文档中记录的方式,并且规则模拟器给出零指示,表明这些规则将不会在某些帐户上强制执行

我的上下文是一个将某些内容推送回 Firebase 的云函数,我希望能够使用 .validate 来验证它

最佳答案

正如您已经发现的那样,Firebase Admin SDK 以管理权限运行,这会绕过所有安全规则。来自 documentation on getting started with the Firebase Admin SDK :

The Admin SDK lets you interact with Firebase from privileged environments to perform actions like:

  • Read and write Realtime Database data with full admin privileges.

这里的逻辑是,使用 Admin SDK 的代码在受信任的环境中运行,您可以相信该代码是您编写的,因此可以按照您的规范运行。

目前无法在使用 Admin SDK 的同时强制执行安全规则。我建议你file a feature request .

请注意,您想要的东西可以通过实时数据库实现,如 Authenticate with limited privileges 中所示。 .

对于 Firestore,您可以控制 Cloud Identity and Access Management 控制台中的部分访问权限。请参阅documentation on securing your data .

关于node.js - 当 firebase-admin 写入数据时,使用规则验证 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50658307/

相关文章:

javascript - Node.js - 如何从模块中找出类/对象的属性?

swift - 当我从 firebase 存储上传新图像时,imageView 不会更改图像

firebase - 如何选择一个数组到文档 firestore 中?

firebase - 如何在Flutter Firestore中编辑用户

javascript - NodeJS - mysql 包尊重完成 INSERT INTO...SET 后的列名称?

node.js - 无法在 Windows 8 上启动 npm(错误 : ENOENT, stat 'C:\Users\User\AppData\Roaming\npm')

firebase - firestore云函数用于获取集合中的聚合值

android - 从 firebase flutter 获取文档 ID

javascript - Node.js npm install express 无法从注册表中获取

python - 如何知道查询是否不返回文档