Как безопасно загрузить и использовать учетную запись службы Firebase admin SDK - PullRequest
0 голосов
/ 10 июня 2019

Я кодирую приложение Firebase. Пользователь может только читать базу данных, а владелец может писать в базу данных для добавления некоторого контента.

Владельцу потребуется приложение для рабочего стола администратора для загрузки данных в базу данных (хранилище и база данных). Поскольку это приложение на C ++, я бы использовал Python для связи с Firebase.

Я хотел использовать Pyrebase или python-firebase , но, к сожалению, эти проекты, похоже, не поддерживают новую базу данных Firestore…

Остальной API может работать, но ... только с частью базы данных Firestore ...

Мой единственный способ добавить содержимое в Firestore и хранилище - использовать admin sdk.

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

Как лучше всего безопасно использовать файл учетной записи службы?

Я подумал:

  1. Зашифруйте файл паролем, а затем спрашивайте пароль каждый время, когда C ++ должен использовать администратора SDK (какая технология будет лучше для этого?)
  2. Загружайте файл учетной записи службы каждый раз, когда требуется приложение (но где безопасно хранить в облаке?)

1 Ответ

0 голосов
/ 10 июня 2019

Для использования Admin SDK с проектом у вас должен быть доступ к учетным данным учетной записи службы для этого проекта. И с этими учетными данными у вас есть полный и неограниченный доступ к проекту. Вы должны предоставлять учетные данные учетной записи службы только тем пользователям, которые должны иметь такой доступ, как правило, сотрудникам проекта.

Для администраторов уровня приложений, которые не являются соавторами проекта, я обычно рекомендую установить административную панель управления с компонентом на стороне сервера и на стороне клиента.

серверный компонент работает в доверенной среде, которая для меня часто является Cloud Functions, но также может быть сервером под вашим контролем или даже машиной разработки. Именно здесь вы используете Admin SDK для выполнения действий по администрированию приложений, которые вы затем предоставляете в аутентифицированной конечной точке, которую могут вызывать клиентские приложения.

Клиентский компонент - это то, что использует администратор приложения. Для меня это часто очень простая веб-страница, но она также может быть любой другой технологией, которую вы предпочитаете, если она может вызывать конечные точки, которые вы выставили на сервере.

Ключевым моментом здесь является то, что сервер проверяет, что пользователь, который вызывает его, уполномочен сделать это, прежде чем выполнять административные действия от его имени. При таком подходе вам не нужно передавать учетные данные службы сторонним сотрудникам, и при необходимости вы можете отозвать учетные данные администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...