В AWS s3 доступ запрещен из-за права собственности? - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть корзина AWS s3 и каталог, в который я позволил другим пользователям помещать файлы / объекты.Каталог общедоступный.Используя стороннее программное обеспечение (а именно Alteryx), я пытаюсь получить объекты.С помощью этого инструмента я подключаюсь к AWS, используя свой ключ доступа и секрет.Я могу перечислить файлы в каталоге, но могу читать только те файлы, которые я создал (но не файлы, которые другие поместили в каталог).Я предполагаю, что проблема заключается в владении объектами (объекты, которыми я владею, могут быть прочитаны, файлы, принадлежащие другим, не могут быть прочитаны с использованием моего ключа доступа).Любые предложения о том, как я могу программно изменить владельца файла?

Моя текущая политика корзины для рассматриваемого каталога.

enter image description here

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Вы правы.Поскольку вы являетесь владельцем группы, а не владельцем объекта, вы не можете получить доступ к объектам, принадлежащим другим пользователям.Однако в вашей политике сегмента S3 вы указали предоставить полный доступ к объекту владельцу корзины для действия PutObject.Это должно было сработать.

"Condition": {
    "StringEquals": {
        "s3:x-amz-acl": "bucket-owner-full-control"
    }
}

Я думаю, это из-за Multipart Upload файлов в вашем ведре (загрузка больших объектов по частям) или перемещения объектов из одного ведра.другому.

Вы всегда можете попросить владельца объекта обновить acl объекта, используя следующую команду.

aws s3api put-object-acl --bucket bucketname --key keyname --acl bucket-owner-full-control

Я связал свой ресурс здесь .

0 голосов
/ 26 февраля 2019

Я предполагаю, что проблема связана с владением объектами

Да, ваше предположение верно.

Любые предложения о том, как я могу программно изменитьвладелец файла?

Вы можете сделать это, взяв все объекты из корзины S3 и установив acl в bucket-owner-full-control.

Пожалуйста, укажите, какой язык программирования вы используете.Я предполагаю, что вы можете использовать Python, если так, пожалуйста, обратитесь здесь

import boto3
s3 = boto3.resource('s3')
object = s3.Bucket('YOUR_BUCKET').Object('YOUR_OBJECT') 
// you can improve the code to list all the objects and iterate them
object.Acl().put(ACL='bucket-owner-full-control')

Но, пожалуйста, примечание , что вы можете сделать это только с использованием учетных данных другого пользователячто положил объект в ваше ведро S3.Вы не можете изменить Object Acl, используя свои собственные учетные данные.

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