Согласно моему обзору того, как настроить безопасный доступ к корзинам amazon s3, похоже, что мы сначала создаем пользователя IAM, а затем привязываем политику безопасности, разрешающую доступ s3 к этому пользователю. После этого мы можем сгенерировать ключи API для корзины, которые могут аутентифицировать запрос на доступ к корзине. Это мое понимание на данный момент, пожалуйста, поправьте меня, если я что-то пропустил.
Я предполагаю, что ключи API должны быть только на стороне сервера (Secret Access Key
). Другими словами, небезопасно размещать их непосредственно внутри веб-приложения? Следовательно, нам сначала нужно отправить данные на наш сервер, а затем, уже там, мы можем отправить их в корзину с помощью ключа API?
Есть ли способ защитить доступ непосредственно из веб-приложения к корзине amazon s3?
Резюме подхода
Согласно обсуждению с @CaesarKabalan, похоже, что подход, который позволил бы это сделать, таков:
1) Создайте пользователя IAM, который может создавать удостоверения, которые можно аутентифицировать через Amazon Cognito. Давайте назовем учетные данные, назначенные на этом шаге, Cognito Credentials.
2) Пользователь входит в веб-приложение, например, с помощью Google.
3) Веб-приложение отправляет запрос на сервер веб-приложения (может быть лямбда-функция) для регистрации пользователя в Amazon Cognito.
4) Теперь веб-приложение получает учетные данные пользователя непосредственно из Amazon Cognito и использует их для отправки данных в корзину s3.
Я думаю, что это то, где мы находимся концептуально. Теперь пришло время протестировать!