Firestore安全规则,允许从Node.js API进行访问

时间:2020-09-15 12:11:00

标签: node.js firebase heroku google-cloud-firestore firebase-security

我将Firestore用作我们在Heroku上托管的API的MVP数据库。该API不使用Slack和Google等平台提供的OAuth之外的任何身份验证,并且我们也不使用Firebase的任何身份验证

我想改变我们的安全规则,以摆脱不安全感 allow read, write: if true;,但由于大多数文档使用Firebase身份验证或集合可见性显示安全规则,因此我不确定如何在上下文中编写这些规则

所以,有几个问题:

  • 我使用Heroku服务器上的Firebase管理SDK来访问Firestore是否足够“安全”,但是我的安全规则基本上允许任何人访问?
  • 如果没有,如何编写仅允许访问特定Heroku API端点的规则?
  • 或者,我应该使用更好的做法来保护数据吗?

非常感谢

2 个答案:

答案 0 :(得分:2)

对于MVP,我认为allow read: if True并不是真正的问题,具体取决于您提供的数据。但是,在写入时,您可以轻松地对传入的数据实施规则,例如:

allow write: if request.resource.data.securityKey === 'custom key shared between firebase and heroku'

一个更好的选择是使用auth模块firebase.auth().signInWithEmailAndPassword(email, password),将电子邮件和密码存储在heroku应用程序的env变量中,然后从那里进行认证。

答案 1 :(得分:1)

Admin SDK以特殊的管理特权访问数据库,并绕过安全规则。因此,如果仅通过Admin SDK访问数据库,则可以使用以下方法锁定数据库以供普通用户访问:

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