Как добавить нескольких пользователей в список контроля доступа для множества файлов на S3 - PullRequest
0 голосов
/ 22 февраля 2020

Я понял, как предоставить доступ к другим AWS учетным записям в корзину S3. Если я правильно понимаю, разрешения, данные для корзины, не совпадают с разрешениями, предоставляемыми каждому объекту в корзине. Я хочу, чтобы все объекты в корзине имели одинаковые разрешения.

Чтобы предоставить пользователям список доступа к корзине:

aws2 s3api put-bucket-acl --bucket BucketName --grant-read-acp emailaddress=email1@emal.com,emailaddress=email2@emal.com,… --grant-read emailaddress=email1@emal.com,emailaddress=email2@emal.com,…

Чтобы предоставить пользователям список доступа к одному объекту:

aws2 s3api put-object-acl --bucket BucketName --key myObject.txt --grant-read-acp emailaddress=email1@emal.com,emailaddress=email2@emal.com --grant-read emailaddress=email1@emal.com,emailaddress=email2@emal.com

Однако у меня есть сотни тысяч объектов на S3. Как предоставить одинаковый доступ ко всем из них с помощью интерфейса командной строки Amazon Web Service (AWS CLI)?

Ответы [ 3 ]

1 голос
/ 23 февраля 2020

Этот ответ основан на требованиях:

  • Предоставить доступ к чтению и списку для всей корзины
  • К списку AWS Аккаунтов

Вы можете прикрепить Bucket Policy к корзине Amazon S3 со списком AWS идентификаторов учетных записей:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::ACCOUNT-ID-1:root",
                    "arn:aws:iam::ACCOUNT-ID-2:root",
                    "arn:aws:iam::ACCOUNT-ID-3:root"
                ]
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::BUCKET-NAME",
                "arn:aws:s3:::BUCKET-NAME/*"
            ]
        }
    ]
}

Это даст доступ, если они используют свой логин root (когда они входят через адрес электронной почты), и я думаю, что он также будет работать для пользователя IAM в его учетной записи, если ему предоставлены достаточные разрешения IAM для Amazon S3 в пределах его собственной учетной записи. (например, s3:* или, более безопасно, s3:GetObject и s3:ListBucket для нужного ведра)

1 голос
/ 22 февраля 2020

Что вы ищете это put-bucket-acl. Вот документация AWS .

Приведенный пример:

aws s3api put-bucket-acl --bucket MyBucket --grant-full-control emailaddress=user1@example.com,emailaddress=user2@example.com --grant-read uri=http://acs.amazonaws.com/groups/global/AllUsers

В вашем примере у вас есть только флаг --grant-read-acp, который не дает доступ к объектам в ведре. Согласно документации, --grant-read-acp «Позволяет грантополучателю читать список ACL». Не очень полезно в вашем случае.

Где, как --grant-full-control дает чтение, запись, чтение ACP и запись ACP в корзину. Если вы посмотрите документацию, на которую я ссылаюсь, вы увидите все разрешенные флаги.

0 голосов
/ 22 февраля 2020

Поскольку вы «хотите, чтобы все объекты в корзине имели одинаковые разрешения», и вы sh хотите применить разрешения для набора пользователей, я бы порекомендовал:

  • Создать IAM Group
  • Назначьте желаемых пользователей IAM группе IAM
  • Добавьте политику в группу IAM, которая предоставляет доступ к корзине

Вот пример из Примеры политики пользователя - Amazon Simple Storage Service :

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListAllMyBuckets"
         ],
         "Resource":"arn:aws:s3:::*"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource":"arn:aws:s3:::examplebucket"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:GetObjectAcl",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::examplebucket/*"
      }
   ]
}

Вы можете изменить политику по своему усмотрению. Приведенная выше политика предоставляет разрешение на:

  • Просмотр списка всех сегментов
  • Список содержимого указанного c сегмента
  • Получить / положить / удалить содержимое спецификации c ведро
...