【问题标题】:Firebase firstore security rules for cloud functions云功能的 Firebase Firestore 安全规则
【发布时间】:2018-12-11 15:32:09
【问题描述】:
我目前正在设置一个对话流机器人(用于常见问题解答和联系人),并且正在使用谷歌云功能 (nodejs) 在 firebase firestore 中完成执行/数据存储。
显然我希望有安全规则,将对数据库的访问限制为仅对话流。谁能指出我将如何做这件事的正确方向?
我找到的示例都是检查数据库中存储的内容,这在我的情况下不起作用..?
【问题讨论】:
标签:
firebase
google-cloud-firestore
google-cloud-functions
firebase-security
【解决方案1】:
仅当您的移动客户端(Android、iOS、网络)直接访问 Firestore、云存储或实时数据库中的某些数据时,安全规则才相关。它也适用于来自 REST API 的未经身份验证的访问。来自后端的任何其他访问,包括您可能为对话流实现挂钩编写的代码,都不受安全规则的约束。也就是说,通过 admin SDK 从后端访问这些资源完全忽略了安全规则。
如果您只打算从后端访问这些产品,只需让您的安全规则禁止来自移动客户端的公共访问。
【解决方案2】:
我在安全规则中添加了选项来检查请求是否来自用户,我使用该用户来验证对云功能中实时数据库的请求,如下所示:
{
"rules": {
".read": "auth != null && auth.token.email.matches(/^firebase-adminsdk-[xxx]@[project-name].iam.gserviceaccount.com$/)",
".write": "auth != null && auth.token.email.matches(/^firebase-adminsdk-[xxx]@[project-name].iam.gserviceaccount.com$/)"
}
}
您可以使用规则测试器来验证来自其他用户的经过身份验证的请求是否会被拒绝。