只允许从 Firebase 中的服务帐户写入?

Posted

技术标签:

【中文标题】只允许从 Firebase 中的服务帐户写入?【英文标题】:Only allow writes from service account in Firebase? 【发布时间】:2016-09-22 09:28:33 【问题描述】:

我想从 node.js 服务器写入我的 Firebase 数据,但拒绝对任何其他客户端的所有写入。任何其他客户端都应该只被允许读取访问。最好的方法是什么?我是否需要使用特殊的管理员帐户从 node.js 服务器进行身份验证并为该特定帐户设置安全规则,或者是否有更好的方法来完成此操作?谢谢!

【问题讨论】:

使用".write": "auth.uid === <server account uid>"。见server guide 和service accounts。 这句话为我完善了以下安全规则示例:“As an admin, the app has access to read and write all data, regardless of Security Rules 【参考方案1】:

在您的节点服务器中使用Admin SDK 使用服务帐户登录

在数据库规则中使用这个:


  "rules": 
    ".write": "false"
    ".read": "true",
  

【讨论】:

Admin SDK默认获取Editor's Role,即可以读写数据。您需要为Reader的角色创建不同的服务账号或更新现有服务账号的角色 供参考firebase.google.com/docs/database/admin/…【参考方案2】:

只需使用服务帐户在您的服务器上使用firebase-admin。默认情况下,它将具有Administrative Privileges。

而对于您的规则,您所需要的只是:


  "rules": 
    ".read": true,
  

如果您只想让登录用户阅读,则可以这样做


  "rules": 
    ".read": "auth !== null",
  

【讨论】:

以上是关于只允许从 Firebase 中的服务帐户写入?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter & Firebase - 如何只允许每台设备有 1 个帐户

仅允许服务帐户访问 Firetime 实时数据库的子集

如何从另一个firebase项目中写入firebase数据库?

如何以安全的方式从 Cloud Tasks 调用 Firebase 函数?

有没有办法批量读取firebase文档

如何在 iOS XCUITest 期间配置 Firebase