Cloud Firestore 安全规则只允许从 Firebase 函数写入

Posted

技术标签:

【中文标题】Cloud Firestore 安全规则只允许从 Firebase 函数写入【英文标题】:Cloud Firestore Security Rules allow write only from Firebase function 【发布时间】:2018-12-26 13:57:37 【问题描述】:

我真的希望能够通过仅允许 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>;
    
  

【问题讨论】:

【参考方案1】:

从 2021 年 2 月起,您可以申报


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

【讨论】:

【参考方案2】:

所以,我使用这条规则:

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

这是基于上面的答案。 它只是禁止从任何客户端应用程序访问,除了 Admin SDK。

【讨论】:

【参考方案3】:

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

如果您只想让您的后端读取和写入您的数据库的某些部分,而不是您的移动客户端应用程序,只需完全拒绝对所有客户端的访问,并让 Admin SDK 来完成它的工作。

service cloud.firestore 
  match /databases/database/documents 

    // Match any document in the 'cities' collection
    match /cities/city 
      allow read: if false;
      allow write: if false;
    
  

【讨论】:

非常感谢。正是我需要的。 如果我只删除allow write: if false; 行怎么办? 虽然这可能适用于 Cloud Functions for Firebase,但它似乎不适用于常规 Cloud Functions。

以上是关于Cloud Firestore 安全规则只允许从 Firebase 函数写入的主要内容,如果未能解决你的问题,请参考以下文章

如何为使用 Cloud Firestore 的 Flutter 应用设置安全规则?

在 Cloud Firestore 中如何制作一个,只创建一次安全规则

使用规则禁用 Firebase Cloud Firestore 中的查询集合

Firestore 安全规则,允许用户查询单个文档

Firestore:删除文档和安全规则

Firebase Cloud Storage 规则能否针对 Firestore 数据进行验证?