Я создал простое приложение для обмена сообщениями с NodeJS на GCP, которое на данный момент состоит из одного экземпляра вычислительного механизма. Я использую это, чтобы узнать стек и как GCP сидит вместе.
Мое приложение имеет собственную систему регистрации пользователей и паролей и позволяет пользователям отправлять друг другу сообщения в «группах». Эти группы могут состоять из 1 ... n пользователей, и один пользователь отвечает за добавление / удаление пользователей из группы. Они могут сделать это в любое время.
Я хочу разрешить пользователям загружать фотографии, и в идеале я буду хранить их в Google Storage. Но я хочу убедиться, что только пользователи в комнате, в которую загружено изображение, могут просматривать этот файл. Я знаю, что GCP использует роли IAM и т. Д., Но при наличии аутентификации в моей системе я должен обновлять политики IAM каждый раз через API? В масштабном решении это будет работать?
Сначала я подумал, что мне нужно выполнить аутентификацию на уровне приложения. например, мой экземпляр Compute Engine может взаимодействовать с хранилищем, поэтому, когда пользователь запрашивает просмотр изображения по его URL-адресу, например example.com/uploads/:id
Затем я проверяю, что текущий пользователь может просматривать загрузку с идентификатором :id
и, если они могут, затем передать изображение из приложения. Будет ли это работать? Будет ли это совместимо с использованием Google CDN? Есть ли предпочтительное решение для выполнения чего-то подобного, учитывая, что я не использую firebase (который, как я понимаю, может использовать токены доступа для аутентификации), но я использую свою собственную аутентификацию, основанную на сочетании имени пользователя и пароля с сеансами?