Может ли облачная функция Google сделать что-нибудь в качестве внутреннего сервера? - PullRequest
0 голосов
/ 01 июня 2018

Я собираюсь разработать новое веб-приложение с сложной логикой с использованием nodejs.

. Меня привлекает firebase из-за его удобной аутентификации пользователя / входа в систему (Google,facebook, twitter, email-пароль, логин / регистрация только по строкам кода и настройкам)

Есть ли проблемы, если я использую google cloud function на стороне сервера.

  • Q1: firestore полностью защищен?У меня есть опыт работы с firebase realtime database.Но с firebase realtime database все пользователи имеют почти одинаковые привилегии после входа в систему (с любой учетной записью).Это серьезная проблема безопасности

  • Q2: Можно ли решить указанную выше проблему безопасности с помощью google cloud function?

  • Q3: Могу ли я сделатьлюбая логика, то есть require в любой внешней библиотеке, в google cloud function?Есть ли какое-либо ограничение, которое google cloud function не может сделать по сравнению с автономным nodejs сервером?

  • Q4 (возможно, не связано с основной темой): Должен ли я разработать свое приложение дляположитесь на firebase authentication, что также означает, что мое приложение должно вызывать API Firebase для проверки учетных данных пользователя, а клиентскому вебу необходимо загрузить Firebase SDK.Это хорошая практика по производительности и масштабируемости приложения?

Заранее большое спасибо

1 Ответ

0 голосов
/ 01 июня 2018

Теоретически да, вы можете использовать функции в качестве точки входа в Firestore, чтобы вы могли обрабатывать данные.Однако вы можете написать сложные правила безопасности с помощью RTDB и Firestore ... Я имею в виду, что у вас получился массивный файл .rules, но вы вполне можете.Как пример:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
    match /profiles/{uid} {
      allow read, update: if request.auth.uid == uid;
    }
    match /bookmarks/{key} {
      allow create: if request.auth.uid != null && request.auth.uid == request.resource.data.uid;
      allow read: if request.auth.uid != null && request.auth.uid == resource.data.uid;
      allow update: if request.auth.uid != null && request.resource.data.uid == resource.data.uid;
    }
}

Я имею в виду, что вы можете продолжать выстраивать правила, даже проверять поля, но это в значительной степени позволяет владельцу документа вносить любые изменения или создания.И, безусловно, предотвращает удаление.

Вы также можете эффективно использовать все, что вы использовали бы для node сервера в функциях Firebase.(Или Google Cloud Functions) Я бы тоже взглянул на этот ответ .

...