GCP - вычисление Engine to Storage для ACL доступа группы / пользователя с настраиваемой системой аутентификации - PullRequest
0 голосов
/ 04 июля 2018

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

Мое приложение имеет собственную систему регистрации пользователей и паролей и позволяет пользователям отправлять друг другу сообщения в «группах». Эти группы могут состоять из 1 ... n пользователей, и один пользователь отвечает за добавление / удаление пользователей из группы. Они могут сделать это в любое время.

Я хочу разрешить пользователям загружать фотографии, и в идеале я буду хранить их в Google Storage. Но я хочу убедиться, что только пользователи в комнате, в которую загружено изображение, могут просматривать этот файл. Я знаю, что GCP использует роли IAM и т. Д., Но при наличии аутентификации в моей системе я должен обновлять политики IAM каждый раз через API? В масштабном решении это будет работать?

Сначала я подумал, что мне нужно выполнить аутентификацию на уровне приложения. например, мой экземпляр Compute Engine может взаимодействовать с хранилищем, поэтому, когда пользователь запрашивает просмотр изображения по его URL-адресу, например example.com/uploads/:id

Затем я проверяю, что текущий пользователь может просматривать загрузку с идентификатором :id и, если они могут, затем передать изображение из приложения. Будет ли это работать? Будет ли это совместимо с использованием Google CDN? Есть ли предпочтительное решение для выполнения чего-то подобного, учитывая, что я не использую firebase (который, как я понимаю, может использовать токены доступа для аутентификации), но я использую свою собственную аутентификацию, основанную на сочетании имени пользователя и пароля с сеансами?

Ответы [ 2 ]

0 голосов
/ 18 июля 2018

Примеры сценариев совместного использования и совместной работы, которые включают настройку списков и списков ACL для объектов, можно найти в Совместное использование и совместная работа . Как вы упомянули и отметили здесь , вы можете создать службу, которая аутентифицирует пользователей и перенаправляет их на URL-адрес, подписанный учетной записью службы, и это решение также помогает масштабировать количество пользователей.

Вы должны дать Cloud CDN разрешение на чтение объектов, добавив учетную запись службы Cloud CDN в ACL Cloud Storage для ограничения доступа пользователей к чтению объектов.

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

0 голосов
/ 13 июля 2018

Так что, похоже, у меня здесь есть 2 варианта.

Я могу использовать подписанные URL-адреса https://cloud.google.com/storage/docs/access-control/signed-urls#signed-urls и предоставить временный доступ к файлам нужным пользователям. Мне просто нужно регенерировать это всякий раз, когда потребуется.

Мой второй вариант (хотя я и сказал, что не хочу мигрировать) - использовать Firebase Auth. Я не знал, что он на самом деле поддерживает перенос и проверку электронной почты и паролей, и на самом деле он бесплатный, независимо от количества пользователей. Единственное, в чем я не уверен, так это в том, как хранилище сконфигурировано относительно моего текущего проекта GCP.

...