Хранение Firebase: проверьте, является ли пользователь администратором - PullRequest
0 голосов
/ 26 февраля 2020

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

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

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

import firebase_admin, os
from firebase_admin import credentials, initialize_app

if not len(firebase_admin._apps):
  cert = os.path.join('src', 'secrets', 'service-account.json')
  initialize_app(credentials.Certificate(cert), {
    'databaseURL': 'https://womp.firebaseio.com/',
    'storageBucket': 'womp.appspot.com/',
  })

, а затем копаться в объекте firebase_admin._apps[0], чтобы посмотреть, смогу ли я вытащить uid для пользователя, но без кубиков.

Если другие знают, как создать правило, которое запрещает всем пользователям, кроме администраторов, выполнять запись в экземпляр хранилища, я буду благодарен за любые идеи, которые они могут предложить!

1 Ответ

1 голос
/ 26 февраля 2020

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

Как только вы начинаете работать с сервисными учетными записями, их доступ контролируется Google Cloud IAM, который полностью отличается. Вы можете использовать IAM, чтобы ограничить доступ учетных записей служб к корзине, и это будет работать совершенно независимо от правил безопасности, которые вы пишете для конечных пользователей, проходящих через Firebase SDK.

Если вы не хотите любые пользователи могут напрямую писать в корзину и разрешать только учетную запись службы; правила безопасности для корзины должны просто отклонять любой доступ.

match /{document=**} {
  allow read, write: if false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...