Amazon Web Service (AWS) Личное хранилище для аутентифицированных пользователей - PullRequest
0 голосов
/ 01 апреля 2020

Мой поток проектов:

  1. Вы go на мой сайт
  2. Вы входите с именем пользователя и паролем, которые администратор сделал
  3. Вы должны увидеть свой выделенный файлы, приватные для вашей учетной записи

Я уже сделал основу с Firebase (Authentication и Storage). Поэтому в Firebase я сделал это Storage Rules

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /assets/{userId}/{assetsId} {
            allow read;
    }
  }
}

Хранение иллюстраций:

assets/
|----user01/
|    |----user01.jpg
|----user02/
|    |----user02.jpg

в основном только user01 может видеть user01.jpg, и только пользователь user02 может получить доступ к user02.jpg, если он / она логин



Проблема:

Теперь я хочу попробовать изменить этот проект в Amazon Web Services (AWS). В настоящее время я использую AWS Cognito, который в моем понимании равен Firebase Authentication & AWS S3 Storage, который в моем понимании равен Firebase Storage.

Я все еще не понимаю, как развиваться с AWS, но я думаю, что мне уже удается, как получить userId (или sub, я думаю, в AWS Cognito), если логин пользователя

Я пытаюсь воссоздать Firabase Storage Rules с https://awspolicygen.s3.amazonaws.com/policygen.html для S3 Bucket Policy, но нет условий, как только это userId (или sub я думаю в AWS Cognito) позволяет ПРОЧИТАТЬ его / ее личные файлы.

Я новичок к этому Firebase и очень новым для этого AWS вещей. Пожалуйста, ведите меня полностью, высоко ценится.

1 Ответ

1 голос
/ 02 апреля 2020

Вы должны , а не использовать политику корзины S3 Amazon, и при этом вы не должны устанавливать разрешения S3 для самого пользователя.

Вместо этого она должна работать следующим образом:

  • Ведро Amazon S3 должно храниться личное (без политики ведра)
  • Когда пользователь обращается к веб-странице в вашем приложении, которая хочет показать или перейти по ссылке один из файлов S3, приложение должно:

Таким образом, именно приложение определяет доступ , и это делается на любой странице, которая ссылки / ссылки на частный объект. Генерация предварительно подписанного URL занимает всего несколько строк кода, и не требует API-обратного вызова для Amazon S3.

Например: Представьте себе сайт обмена фотографиями . Фотографии должны быть приватными по умолчанию (нет доступа). Если пользователь входит в систему и хочет просмотреть фотографию в Интернете, приложение, генерирующее страницу HTML, будет использовать тег <img src=...>, но URL будет предварительно подписанным URL . Это означает, что веб-браузер отобразит изображение на странице. Точно так же, если есть ссылка для загрузки изображения, URL должен быть предварительно подписанным URL. Кроме того, пользователи могут поделиться картинкой с другим пользователем. Такая информация будет храниться в базе данных. Когда другой пользователь хочет просмотреть общее изображение, приложение проверит базу данных, проверит разрешение и предоставит предварительно подписанный URL-адрес. Это смещает «владение» с пути (где хранится изображение) в базу данных .

Я не пользователь Firebase, поэтому я не знаю, какие возможности это так, но приведенный выше рекомендуемый способ управления доступом пользователей к личным файлам в S3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...