【问题标题】: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 变量中,然后从那里进行身份验证。