S3: пользователь не может получить доступ к объекту в своем собственном ведомом s3, если его создал другой пользователь

Внешний пользователь имеет доступ к нашему ведро s3, используя эти действия в нашей политике ведра:

"Action": [
            "s3:GetObjectAcl",
            "s3:GetObject",
            "s3:PutObjectAcl",
            "s3:ListMultipartUploadParts",
            "s3:PutObject"
        ]

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

Теперь я не могу получить доступ к файлу. В s3 UI, если я попытаюсь загрузить файл, я получаю 403. Если я попытаюсь изменить разрешения для этого объекта, я вижу сообщение: "Извините! У вас нет прав на просмотр этого ведра". Если внешний пользователь устанавливает соответствующий заголовок (x-amz-acl bucket-owner-full-control) при загрузке файла с временными учетными данными, я могу нормально обращаться к файлу. Мне кажется странным, что, хотя у меня есть ведро, внешний пользователь может поместить в него файлы, к которым я не могу получить доступ.

Возможно ли, что есть некоторая политика, которую я могу установить, чтобы я мог получить доступ к файлу, или чтобы я мог получить доступ к любому файлу, который добавлен в мое ведро, независимо от того, как он добавлен? Спасибо!

Ответ 1

Я считаю, что вы должны заставить владельца объекта обновить ACL или переписать объект, определяющий полный контроль владельца ведра. Самый простой способ поэкспериментировать с этим - это использовать CLI:

aws s3api put-object-acl --acl bucket-owner-full-control --bucket some-bucket --key path/to/unreadable.txt

Да, я думаю, вы должны сделать это один раз для каждого объекта, я не думаю, что есть рекурсивный вариант.

AWS публикует примерную политику ведра до предотвращает добавление объектов в ведро без полного управления владельцем ведро. Но это не повлияет на владение объектами уже в вашем ковше.

Я не знаю никакой политики, которая автоматически переносит право владения владельцем ведра.

Ответ 2

вы можете использовать копию и рекурсивную опцию, чтобы скопировать все объекты обратно в ведро и установить полный контроль acl bucket-owner с помощью следующего синтаксиса:

aws s3 cp s3://myBucket s3://myBucket --recursive --acl bucket-owner-full-control --storage-class STANDARD