仅通过云功能在 firestore 中读写

Dan*_*iel 1 firebase-security google-cloud-functions google-cloud-firestore

我想设置我的 Cloud Firestore 数据库权限,以便除了通过 Cloud Functions 之外,没有人能够读取和写入它。

我怎样才能做到这一点?

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

service cloud.firestore {
  match /databases/{database}/documents {
    match /<some_path>/ {
      allow read, write: if <some_condition>;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 5

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

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 是的,很多人都同意。我们(Firebase 团队)正在编写更好的文档和教程,以帮助更好地理解安全规则。 (2认同)