【问题标题】:Firestore security rules, allowing access from nodejs APIFirestore 安全规则,允许从 nodejs API 访问
【发布时间】:2021-01-02 04:40:15
【问题描述】:

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

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

所以,有几个问题:

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

非常感谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-26
        • 1970-01-01
        相关资源
        最近更新 更多