Cloud Firestore安全规则仅允许从Firebase功能进行写入

时间:2018-07-18 15:14:02

标签: firebase google-cloud-firestore google-cloud-functions firebase-security-rules

我真的很希望能够通过只允许将Firebase函数写入特定集合来保护我的Firestore数据库...我将如何去做呢?看那里的文档,我找不到任何可以说明如何实现的文档。例如,我正在寻找类似的东西:

service cloud.firestore {
  match /databases/{database}/documents {

    // Match any document in the 'cities' collection
    match /cities/{city} {
      allow read;
      allow write: if <from firebase function>;
    }
  }
}

3 个答案:

答案 0 :(得分:27)

用于Firebase的Cloud Functions代码通常使用Firebase Admin SDK访问其他Firebase产品。无论如何设置权限,Admin SDK都将具有对Firestore的完全读写访问权限。您既不能明确允许也不拒绝对Admin SDK的访问,这意味着您也不能明确允许也不拒绝对Cloud Functions的访问。

如果您只希望后端读取和写入数据库的某些部分,但不读取任何移动客户端应用程序,则只需完全拒绝对所有客户端的访问,然后让Admin SDK进行工作即可。

if (l.getPlot().equals("MR")) || ("X"){
                if (l.getZone().equals("UP SPEC")) {
                    limit.setTopUpper(l.getLimit());
                } else if (l.getZone().equals("LO SPEC")) {
                    limit.setTopLower(l.getLimit());
                }
            }

答案 1 :(得分:1)

因此,我使用以下规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read: if false;
      allow write: if false;
    }
  }
}

它基于以上答案。 它只是禁止从除Admin SDK之外的任何客户端应用程序访问。

答案 2 :(得分:0)

自 2021 年 2 月起,您只需申报

{
  "rules": {
    ".read": false,
    ".write": false
  }
}