我真的很希望能够通过只允许将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>;
}
}
}
答案 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
}
}