обеспечение соблюдения правил безопасности базы данных firebase из облачных функций


person Ashton    schedule 13.05.2017    source источник
comment
Можете ли вы отредактировать свой вопрос, чтобы привести пример правил, которые, как вы ожидаете, будут действовать как для клиентов, которые пишут напрямую, так и для облачных функций, вызываемых анонимно через HTTP?   -  person Doug Stevenson    schedule 14.05.2017
comment
Привет, Дуг, спасибо за внимание. Думаю, я понимаю вашу просьбу. Я не упомянул, что мобильные клиенты используют функции HTTPS исключительно для взаимодействия с БД. Это так, потому что изначально разработка началась в Azure, но я влюбился в функции, когда вы их выпустили. Итак, мы будем переносить мобильный код, чтобы в конечном итоге напрямую взаимодействовать с БД, но пока мы используем этот подход, похожий на API. И я хотел бы убедиться, что правила БД соблюдаются даже анонимно вызываемыми функциями.   -  person Ashton    schedule 14.05.2017
comment
БУДУЩИЕ Зрители: для тех, кто столкнется с этим в будущем, в ЭТОМ ОТВЕТЕ Дуг подробно расскажет, как имитировать пользователя. -разрешения в Admin SDK.   -  person JeremyW    schedule 27.09.2019


Ответы (1)


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

person Doug Stevenson    schedule 14.05.2017
comment
Я так понимаю, спасибо, Дуг, за продолжение. Мобильные клиенты не пишут в БД напрямую, но веб-клиент делает (это то, что будут использовать поставщики услуг). К сожалению, я не могу запретить запись всем аутентифицированным клиентам. У меня такое ощущение, что в настоящее время невозможно выбрать неадминистративную учетную запись в Функциях. Не могли бы вы это подтвердить? Тогда я могу заняться написанием собственной безопасности, как вы предложили. - person Ashton; 14.05.2017
comment
@Doug есть ли альтернатива вашему ответу выше, которая позволила бы облачной функции аутентифицироваться таким образом, чтобы по-прежнему обеспечивать соблюдение правил безопасности? Я лучше буду использовать правила безопасности, чем проверять в функциях - person geg; 08.12.2020