Предоставление десяткам тысяч аккаунтов AWS доступа к корзине? - PullRequest
0 голосов
/ 03 сентября 2018

Мы скромный стартап, который добывает данные из всего Интернета и помещает их в корзину Amazon S3, чтобы поделиться с миром. На данный момент у нас есть 2 ТБ данных, и вскоре мы можем достичь отметки 20 ТБ .

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

Предварительно подписанный URL-адрес недоступен, поскольку он не проверяет использование полосы пропускания в реальном времени , поэтому уязвим для злоупотреблений при загрузке.

После некоторого исследования этот , по-видимому, является способом предоставления различным учетным записям AWS необходимых разрешений для доступа к нашей корзине:

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "Permissions to foreign account 1",
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::ForeignAccount-ID-1:root"
         },
         "Action": [
            "s3:GetBucketLocation",
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::ourbucket"
         ]
      },
      {
         "Sid": "Permissions to foreign account 2",
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::ForeignAccount-ID-2:root"
         },
         "Action": [
            "s3:GetBucketLocation",
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::ourbucket"
         ]
      },
      {
         "Sid": "Permissions to foreign account 3",
         "Effect": "Allow",
         "Principal": {
            "AWS": "arn:aws:iam::ForeignAccount-ID-3:root"
         },
         "Action": [
            "s3:GetBucketLocation",
            "s3:ListBucket"
         ],
         "Resource": [
            "arn:aws:s3:::ourbucket"
         ]
      },

      ......

   ]
}

Где ForeignAccount-ID-x - идентификатор учетной записи, например, 2222-2222-2222.

Однако проблема в том, что у нас может быть десятки тысяч или даже больше подписчиков на это ведро.

Это правильный и эффективный способ добавить разрешения для доступа к этому сегменту?

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

Есть ли лучшие решения для этой проблемы?

1 Ответ

0 голосов
/ 03 сентября 2018

Ваше требование для Amazon S3 Requester Pays Buckets понятно, но приводит к другим ограничениям.

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

Политика Bucket ограничена 20 КБ, а ACL - 100 грантами.

Итак, этот подход вряд ли сработает.

Другой вариант - создать механизм, в котором ваша система сможет передавать контент в учетную запись AWS другого пользователя . Они должны будут предоставить целевую корзину и некоторую форму доступа (например, роль IAM, которую можно предположить), а ваше приложение может скопировать файлы в свою корзину. Однако это может быть затруднительно для регулярно публикуемых данных.

Другой вариант - разрешить доступ к контенту только из одного региона AWS . Таким образом, пользователи смогут читать и обрабатывать данные в AWS, используя такие сервисы, как Amazon EMR. Они могут писать приложения на EC2, которые получают доступ к данным в Amazon S3. Они смогут скопировать данные в свои ведра. Единственное, что они не могут сделать, - это получить доступ к данным извне AWS. Это исключило бы расходы на передачу данных. Данные могут даже предоставляться в нескольких регионах для обслуживания пользователей по всему миру.

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

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