Правила Firestore, когда база данных совместно используется несколькими экземплярами

# #firebase #authentication #google-cloud-firestore #firebase-authentication #firebase-security

#огневая база #идентификация #google-облако-firestore #firebase-аутентификация #огневая база-безопасность

Вопрос:

Представьте, что существует база данных Firestore, которая используется как 1 — статическим клиентским интерфейсом, так и 2-node.js сервер.

По сути, только a domain и an ip address могут использовать эту базу данных, которая работает довольно хорошо.

Самая сложная часть:

  • мы хотим, чтобы у нас была node.js сервер для чтения/записи всей базы данных
  • но веб-клиенту должно быть разрешено только чтение/запись в одной и той же базе данных, если пользователь аутентифицирован.

Проблема в том, что с rules его помощью невозможно внести наших в белый ip address список .

Поэтому мы попытались использовать это:

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

Затем в node.js сервер может signInAnonymously , в то время как интерфейсный клиент должен аутентифицировать пользователя перед доступом к любому содержимому.

Мой вопрос

Достаточно ли безопасна подпись под именем? Потому anonymous auth что включено, возможно ли, чтобы кто signInAnonymously -то из нашего интерфейса? Возможно ли, чтобы кто-то подделал какой-то заголовок и притворился нашим доменом только для того, чтобы аутентифицироваться как анонимный?

Какой была бы наилучшая практика в подобном случае?

Ответ №1:

Может быть, я смогу объяснить это в двух частях,

  • Во-первых, нет необходимости кому-то подделывать какой-то заголовок и притворяться вашим доменом. Причина в том, что если кто-то может войти в систему как анонимный с вашего домена напрямую, он сможет получить доступ ко всей информации, доступ к которой вы ему разрешили
  • Во-вторых, и это самое важное, я думаю, что вы неправильно получили доступ на стороне сервера NodeJS к firebase. Если вы хотите получить доступ ко всей базе данных из службы узлов, используйте Firebase admin SDK, и вам не нужно выполнять какую-либо проверку подлинности для чтения и записи при подключении из firebase admin SDK, так как у вас есть доступ администратора.
  • К вашему сведению, вы также можете внести свой IP-адрес аутентификации в белый список в настройках аутентификации, где вы можете разрешить домены из белого списка