由于权限问题,无法访问 Firebase 中的 Cloud Firestore

Posted

技术标签:

【中文标题】由于权限问题,无法访问 Firebase 中的 Cloud Firestore【英文标题】:Unable to access cloud firestore in firebase due to permission issues 【发布时间】:2020-10-17 08:54:52 【问题描述】:

我是 Firebase 项目的所有者, 我的DataBase 规则读写设置为true,但我无法在cloudFireStore storage.SHA1 和SHA256 中读取和写入密钥也添加到googleservices.json 文件中,出现Permission Denied 异常。

异常详情

W/Firestore(12435): (21.3.0) [Firestore]: 侦听查询(users/null/info) 失败:状态code=PERMISSION_DENIED, description=Missing or enough permissions., cause=null I/System.out(12435): com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: 权限缺失或不足。

数据库规则代码

rules_version = '2';
service cloud.firestore 
match /databases/database/documents 

// This rule allows anyone on the internet to view, edit, and delete
// all data in your Firestore database. It is useful for getting
// started, but it is configured to expire after 30 days because it
// leaves your app open to attackers. At that time, all client
// requests to your Firestore database will be denied.
//
// Make sure to write security rules for your app before that time, or else
// your app will lose access to your Firestore database
match /document=** 
  allow read, write: if true;

任何帮助都会非常有帮助。

【问题讨论】:

Firestore 安全规则依赖于服务帐户和 IAM 绑定。如果服务帐户缺少 firebaserules.system 角色,您的安全规则将拒绝所有请求。您可以参考此link 为服务帐户设置 IAM 角色。 谢谢,问题已解决 为了更好地重用可能对 GCP 社区有所帮助的信息。请帮助投票我添加的答案,谢谢! 【参考方案1】:

使用云控制台解决:

gcloud 项目 add-iam-policy-binding 项目名称 --member=serviceAccount:service-project id@firebase-rules.iam.gserviceaccount.com --role=roles/firebaserules.system

【讨论】:

【参考方案2】:

Firestore 安全规则依赖于服务帐号和 IAM 绑定。如果服务帐号缺少 firebaserules.system 角色,您的安全规则将拒绝所有请求。您可以参考此link 为服务帐号设置 IAM 角色。

【讨论】:

以上是关于由于权限问题,无法访问 Firebase 中的 Cloud Firestore的主要内容,如果未能解决你的问题,请参考以下文章

为特定用户提供访问权限的 Firebase 存储安全规则

Firebase 存储安全规则 400 错误问题“权限被拒绝。无法访问存储桶 xxxxx-****.appspot.com”

Firebase存储安全规则为特定用户提供访问权限

Firebase 存储错误:权限被拒绝。无法访问存储桶 my-bucket-name

无法为 Firebase 中的 bigquery 链接启用谷歌分析

在 Firebase 中添加对另一个项目的访问权限