#node.js #firebase #heroku #google-cloud-firestore #firebase-security
#node.js #firebase #heroku #google-облако-firestore #firebase-безопасность
Вопрос:
Я использую Firestore в качестве базы данных MVP для API, который мы разместили на Heroku. API не использует никакой аутентификации за пределами OAuth, предоставляемой такими платформами, как Slack и Google, и мы также не используем никакой аутентификации Firebase
Я хотел бы изменить наши правила безопасности с небезопасных allow read, write: if true;
но я не уверен, как написать эти правила в моем контексте, учитывая, что большинство документов показывают правила безопасности с использованием аутентификации Firebase или видимости коллекции
Итак, пара вопросов:
- Достаточно ли безопасно, что я использую Firebase admin SDK на сервере Heroku для доступа к Firestore, но мои правила безопасности в основном разрешают доступ любому?
- Если нет, то как я могу написать правила, разрешающие доступ только к определенной конечной точке API Heroku?
- В качестве альтернативы, существуют ли более эффективные методы, которые я должен использовать для защиты данных?
Большое спасибо
Ответ №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)
, сохранить адрес электронной почты и пароль в переменной env вашего приложения heroku и авторизоваться оттуда.