Безопасность файлов Firebase / Google Cloud Storage - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь найти наиболее разумный способ обработки доступа к файлам с помощью служб Google.

Упрощая сценарий, мы имеем

  • пользователей (любое число), которые могутпроверять подлинность с помощью Google, Facebook и т. д., т. е. необязательно с учетными записями Google.
  • Пользователи могут принадлежать к любому количеству групп (эквивалентно, например, каналам Slack), без ограничения количества пользователей в группе.или сколько групп могут принадлежать пользователи.
  • Каждый файл принадлежит одной группе.

В идеальном (для меня) мире я должен быть в состоянии обеспечить (быстрый) Облачная функция, которая проверяет доступ для каждого запроса, делая все, что я хочу.Я попробовал это, и у меня есть функция, которая выполняет проверки (путем запроса к firestore) и генерирует недолговечный подписанный URL.Это работает, но функция может быть очень медленной для запуска, и даже в лучшем случае (никакой холодной загрузки не требуется) она по-прежнему занимает около 400 мс, что заметно, когда файлы представляют собой небольшие изображения, которые должны мгновенно появляться.

Итак, следующая альтернатива - использование правил безопасности пожарного депо.У меня проблема в том, что (по-видимому) я нигде не могу проверить членство в группе (примечание: для нас «groups» - это коллекция в / users / $ uuid /, содержащая список идентификаторов групп).

Я рассмотрел возможность использования групп в качестве утверждений в токене, но поскольку утверждения могут использовать только 1000 байтов, это решение не допускается.

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

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

1 Ответ

0 голосов
/ 12 сентября 2018

Вместо того, чтобы функция выдавала URL-адрес файла, она должна выдавать все содержимое файла. Это закроет окно возможности для кого-то еще, чтобы получить этот URL. Недостатком является то, что вы будете платить больше за передачу данных, но настраиваемые средства контроля безопасности между продуктами не всегда дешевы.

...