Преодолеть ограничение в 1000 единиц в S3 / использовать точки доступа - PullRequest
1 голос
/ 21 января 2020

У меня 1 ведро с3 на клиента. Клиенты являются внешними субъектами, и они не делятся данными с кем-либо еще. Я пишу на S3, а клиент читает с S3. В соответствии с этой архитектурой, я могу масштабировать только до 1000 сегментов, так как для каждой учетной записи существует ограничение по s3 сегмента. Я надеялся использовать точки доступа, чтобы создать 1 точку доступа для каждого клиента и поместить данные в одну корзину. Затем клиент может прочитать файлы из корзины, используя AP.

Bucket000001/prefix01 . -> customeraccount1

Bucket000001/prefix02 . -> customeraccount2 ...

Точки доступа S3 требуют установки политики для пользователя IAM в точке доступа, а также уровня сегмента. Если у меня тысячи пользователей IAM, нужно ли устанавливать политику для каждого из них в корзине? Это привело бы к одной гигантской политике. в корзине есть максимальный размер политики, поэтому я не могу этого сделать. Правильный ли это случай использования, когда могут помочь точки доступа?

Ответы [ 2 ]

3 голосов
/ 22 января 2020

Рекомендуемый подход:

  • НЕ назначайте пользователей IAM своим клиентам. Эти типы учетных данных AWS должны использоваться только вашим внутренним персоналом и вашим персоналом. собственные приложения.
  • Вы должны предоставить веб-приложение (или API), где клиенты могут проходить аутентификацию на основе вашей собственной пользовательской базы данных (или вы можете использовать Amazon Cognito для управления аутентификацией).
  • После проверки подлинности приложение должно предоставить доступ либо к веб-интерфейсу для доступа к Amazon S3 , либо приложение должно предоставить временные учетные данные для доступа к Amazon S3 (подробнее см. Ниже).
  • Не используйте одно ведро на клиента. Это не масштабируется. Вместо этого хранит все данные о клиентах в ОДНОЙ корзине , при этом каждый пользователь имеет свою собственную папку. Количество данных, которые вы можете хранить в Amazon S3, не ограничено. Это также упрощает управление и обслуживание, поскольку проще выполнять функции для всего контента, а не go в отдельных контейнерах. (Исключением может быть, если вы sh будете сегментировать сегменты по местоположению клиента (региону) или типу клиента. Но не используйте один сегмент для каждого клиента. Нет причин делать это.)
  • При предоставлении доступа к Amazon S3 назначайте разрешения на уровне папки , чтобы клиенты могли видеть только свои собственные данные.

Опция 1: Доступ через Веб-приложение

Если ваши клиенты получают доступ к Amazon S3 через веб-приложение, вы можете написать это приложение для обеспечения безопасности на уровне папок. Например, когда они запрашивают список файлов, отображаются только файлы в их папке.

Эта защита может полностью управляться в вашем собственном коде.

Вариант 2: Доступ через временный Учетные данные

Если ваши клиенты используют программный доступ c (например, с помощью AWS CLI или пользовательского приложения, работающего на их системах), то:

  • Заказчик аутентифицироваться в вашем приложении (как это будет зависеть от того, как вы аутентифицируете пользователей)
  • После аутентификации приложение должно генерировать временные учетные данные, используя AWS Служба маркеров безопасности (STS) . При создании учетных данных предоставьте доступ к Amazon S3, но укажите папку клиента в ARN (например, arn:aws:s3:::storage-bucket/customer1/*), чтобы они могли получать доступ только к содержимому своей папки .
  • Вернуть эти временные данные учетные данные для клиента. Затем они могут использовать эти учетные данные для выполнения вызовов API непосредственно в Amazon S3 (например, из AWS интерфейса командной строки (CLI) или пользовательского приложения). Они будут ограничены своей собственной папкой.

Этот подход обычно выполняется с мобильными приложениями . Мобильное приложение аутентифицируется на сервере, получает временные учетные данные, а затем использует эти учетные данные для непосредственного взаимодействия с S3. Таким образом, фоновое приложение используется только для аутентификации.

Примеры на YouTube:

2 голосов
/ 21 января 2020

У нас есть способ достичь вашей цели.

  • использовать группу IAM для предоставления доступа к папке. Создайте группу, добавьте пользователя в группу и назначьте группе роль для доступа к папке.

  • Другой способ - использовать политику сегмента (${aws:username} в условии) для Предоставить доступ к пользовательским папкам c. Ссылка на эту ссылку https://aws.amazon.com/blogs/security/writing-iam-policies-grant-access-to-user-specific-folders-in-an-amazon-s3-bucket/

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