Можно ли ограничить доступ к firebase firestore только сервисными учетными записями и ключами API, используя правила облачного firestore?

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

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

Из этого вопроса и ответа stackoverflow похоже, что учетные записи служб, использующие API администратора firebase, обходят любые правила безопасности firestore, это правильно? Если да, то разумно ли полностью отключить доступ на запись к любым коллекциям firestore, которые, как я ожидаю, будет обновлять только эта учетная запись службы?

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

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /sales_reps/{document=**} {
      allow read: if true;
      allow write: if request.auth.token.email == '<first-service-account-email>';
    }
    match /gps_tracking/{document=**} {
      allow read: if true;
      allow write: if request.auth.token.email == '<second-service-account-email>';
    }
    match /{document=\*\*} {
      allow read: if true;
      allow write: if false;
    }
  }
}
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
0
0
102
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Из этого вопроса и ответа на stackoverflow это выглядит как сервис учетные записи, использующие API-интерфейс администратора firebase, обходят любую защиту firestore правила, это правильно?

Да, это правильно

Если это так, разумно ли полностью отключить доступ на запись к любому коллекции firestore, которые я ожидаю только от этой учетной записи службы обновлять?

Да, поскольку ни один пользователь, использующий клиентский SDK (или REST API), не собирается обновлять вашу коллекцию (коллекции), это правильный подход.


Так что конкретно нет необходимости использовать такие правила, как

allow write: if request.auth.token.email == '<first-service-account-email>';

просто делать

allow write: if false;

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

Спасибо за подтверждение этого Рено! Знаете ли вы, можно ли ограничить доступ к определенным коллекциям с помощью ключа API, используемого для доступа к моему магазину firebase? Или это то, что мне нужно реализовать с помощью App Check?

Ben Edgar 29.11.2022 15:12

Другие вопросы по теме