Какое действие IAM требуется для загрузки в корзину S3 другого аккаунта с ACL? - PullRequest
1 голос
/ 18 октября 2019

В настоящее время у меня есть две учетные записи AWS, A и B. Есть корзина S3 X, которой владеет B. A предоставлены разрешения на запись в корзину.

Следующая команда отлично работает из учетной записиA:

aws s3 cp Foo s3://X/bot/test/Foo

К сожалению, у этой команды есть недостаток, заключающийся в том, что объект находится в корзине B, но B не может ничего с этим поделать. Из другого сообщения SO я узнал, что способ исправить это состоит в том, чтобы вместо этого выполнить следующую команду:

aws s3 cp Foo s3://X/bot/test/Foo --acl bucket-owner-full-control

Эта команда работает с намеченным эффектом, когда я использую роль с привилегиями root в учетной записи A. ОднакоЯ делегирую привилегию роли только с четырьмя следующими действиями в корзине.

           "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:ListBucket",
            "s3:PutObject"

Когда эта роль принята, и я пытаюсь выполнить команду с флагом --acl, я получаю следующееошибка:

upload failed: ./Foo to s3://X/bot/test/Foo An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

Обратите внимание, что команда отлично работает с ролью без флага --acl.

Какие дополнительные действия мне нужно предоставить роли, чтобы разрешить еевыполнить команду s3 cp с флагом --acl?

1 Ответ

1 голос
/ 18 октября 2019

Из Документация по AWS CLI S3 :

Обратите внимание, что если вы используете опцию --acl, убедитесь, что все связанные политики IAM включают "s3: PutObjectAcl " action.

Пример политики:

{
    "UserName": "myuser",
    "PolicyName": "mypolicy",
    "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Action": [
                    "s3:PutObject",
                    "s3:PutObjectAcl"
                ],
                "Resource": [
                    "arn:aws:s3:::mybucket/*"
                ],
                "Effect": "Allow",
                "Sid": "Stmt1234567891234"
            }
        ]
    }
}
...