只允许从 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 个帐户
如何从另一个firebase项目中写入firebase数据库?