【问题标题】:FirebaseError: Missing or insufficient permissions after deleting Google Service AccountsFirebaseError:删除 Google 服务帐户后权限缺失或权限不足
【发布时间】:2020-07-15 00:28:45
【问题描述】:

用例

我正在使用 Firebase JS SDK 从浏览器访问 Cloud Firestore,以便将 UI 日志和错误推送到 Firestore。

问题

一切正常,直到我不小心删除了我的 Google Cloud Platform 中 APIs & Services → Credentials 中的大部分服务帐户

以下是我们用于 Firebase Web 应用的示例配置:

<script src="https://www.gstatic.com/firebasejs/7.13.1/firebase-app.js"></script>
<script>
    // Your web app's Firebase configuration
    var firebaseConfig = {
        apiKey: "AIzaSyCztfcT6k6yXXXXXXXXXXXXXXXXXX",
        authDomain: "<some-domain>.firebaseapp.com",
        databaseURL: "https://<some-domain>.firebaseio.com",
        projectId: "<some-domain>",
        storageBucket: "<some-domain>.appspot.com",
        messagingSenderId: "877458876543",
        appId: "1:877458876543:web:9a9287dee234cd655ab7f2"
    };
    // Initialize Firebase
    firebase.initializeApp(firebaseConfig);
</script>

我什至尝试阅读 Firebase Service Accounts Overview,但无法决定将哪个服务帐户用于 Firestore。然后,我尝试根据我的项目 ID 添加不同的服务帐户,并授予他们对我的项目的所有者权限,但没有奏效。

我在浏览器控制台中遇到的完全错误:

Uncaught (in promise) FirebaseError: Missing or insufficient permissions.
    at new Hr (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:48219)
    at https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:378673
    at wr.<anonymous> (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:377569)
    at Wt (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:15221)
    at wr.S.dispatchEvent (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:16063)
    at Er.ua (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:45322)
    at nr.S.Fa (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:43229)
    at Ge (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:21453)
    at qe (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:20854)
    at Me.S.Ja (https://www.gstatic.com/firebasejs/7.8.2/firebase-firestore.js:1:23264)

实际上,我想清理我的服务帐户,因为我创建了许多服务帐户。请指导说明使用哪个服务帐户以及授予哪些合适的权限。

【问题讨论】:

    标签: firebase google-cloud-platform google-cloud-firestore google-cloud-datastore


    【解决方案1】:

    Firestore 安全规则依赖于名为 service-PROJECT_NUMBER@firebase-rules.iam.gserviceaccount.com 的服务帐户,其角色为 roles/firebaserules.system。您可以使用gcloud 恢复此帐号:

    gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:service-PROJECT_NUMBER@firebase-rules.iam.gserviceaccount.com --role=roles/firebaserules.system
    

    要获取项目编号,请参阅Identifying projects

    【讨论】:

    • 奇怪的行为。当我通过 UI 进行尝试时,它只显示 Firebase 规则管理员,但我找不到 Firebase 规则系统。但是现在,在我通过gcloud 命令添加它之后,它现在也在 UI 中显示了。
    • 没错,firebaserules.system IAM 角色默认隐藏在控制台中。您必须使用 gcloud 设置角色,但之后,角色会在控制台中可见。
    猜你喜欢
    • 2021-07-20
    • 2022-01-15
    • 2019-10-23
    • 2022-08-06
    • 2022-01-25
    • 2021-10-31
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多