【问题标题】:Reading and writing in firestore only through cloud functions仅通过云功能在 Firestore 中读写
【发布时间】:2019-08-10 13:25:13
【问题描述】:

我想设置我的 Cloud Firestore 数据库权限,这样除了通过 Cloud Functions 之外,没有人可以对其进行读写。

我该怎么做?

我的猜测(根据 Firestore 文档)是我必须为我想要的设置正确的条件,但它会是什么条件?我不知道如何用规则“沟通”云函数调用。

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}

【问题讨论】:

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


    【解决方案1】:

    简单地消除所有规则,并用拒绝一切的规则替换它们:

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

    如果没有明确允许移动和 Web 客户端访问,则不会允许任何内容。服务器 SDK 始终绕过安全规则,因此只要您用于初始化 SDK 的服务帐户具有写入权限,它就可以工作。 Cloud Functions 中使用的默认服务帐户应该没问题。

    【讨论】:

    • 我不能像你那样写,上面写着Line 3: The 'match' body must contain at least one declaration
    • 抱歉,已编辑。只需添加一条规则,拒绝对所有内容的所有访问。
    • 我总是觉得这些规则有点晦涩难懂,从某种意义上说,我仍然不知道如何为每种情况编写具体的条件。我仍然会阅读它,但同时这似乎已经足够了,谢谢!
    • 是的,很多人都同意。我们(Firebase 团队)正在编写更好的文档和教程,以帮助更好地理解安全规则。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2021-03-28
    • 2021-05-13
    • 2020-12-09
    • 2021-09-14
    • 2020-05-10
    • 2018-05-09
    相关资源
    最近更新 更多