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