2

У меня есть пример веб-страницы, которая позволила анонимным пользователям загружать объекты и создавать папки в моем ведре S3.Amazon S3 - Как загрузить объекты, принадлежащие анонимному пользователю?

К сожалению, я не устанавливал какие-либо конкретные политики ведра или списки управления доступом, прежде чем делать это.

Теперь у меня возникла проблема, когда анонимный пользователь создал папку и загруженные объекты, которые я (как пользователь root) не может загрузить или получить. Я планирую создать новую политику ведра, прежде чем больше пользователей смогут загружать объекты, но сейчас мне нужен доступ к этим текущим объектам, принадлежащим анонимным.

Может ли кто-нибудь сказать мне, как я могу это сделать?

+0

Могу ли я узнать, как вы обращаетесь к нему как к пользователю root? Я имею в виду через AWS Console или код? – Sangram

+0

Да Я получаю доступ к объектам через консоль AWS в качестве пользователя root. Это вопрос, если я пытаюсь загрузить файлы? –

ответ

0

Ознакомьтесь с Политикой пользователя IAM, используемого для доступа к Консоли управления AWS. Если у вас есть Администратор или Параметры пользователя Power, то у вас будет полный доступ к объектам во всех ведрах Amazon S3, связанных с вашей учетной записью AWS.

Вам необходимо получить доступ к объектам с помощью аутентифицированного метода, такого как S3 Management Console.

Если вы используете пользователя вашей учетной записи , у вас также будет полный доступ к вашим ведрам S3 и их содержимым. Не рекомендуется использовать пользователя root каждый день, потому что он имеет полный доступ к вашей учетной записи, и это опасно, если скомпрометировано - вместо этого используйте корневую учетную запись для создания административного пользователя в IAM, с которым легче управлять (например, изменение разрешений, поворот ключей).

Если вы все еще испытываете трудности с просмотром объектов, убедитесь, что к ним обращаются, выбирая объект, а затем выбирая Откройте в меню «Действия». Это создаст аутентифицированный URL-адрес, который откроет файлы. Если вы просто нажмете отображаемую ссылку в окне свойств объекта, она будет использовать URL-адрес, который не имеет аутентификации и, скорее всего, не удастся.

+2

Это не тот случай, когда владелец ведра имеет полный доступ к объектам в своих собственных ведрах S3, как это ни странно. Если владелец, который их разместил, не предоставил владельцу корзины доступ (чтение, чтение/запись или полный контроль), тогда владелец ведра не имеет доступа к объектам, кроме как удалить их. И единственная причина, по которой он имеет разрешение на удаление, заключается в том, что он платит счет за ведро S3. – jarmod

2

От «анонимного пользователя», вы имеете в виду «не прошедший проверку пользователя»? Если да, то у вас есть два варианта (# 1 и # 2 ниже). Если нет, то у вас есть один вариант (№ 1 ниже). Все это предполагает, конечно, что вы не можете убедить самого загрузчика изменить ACL на этих объектах.

  1. удалять объекты. Как владелец ведра, вы всегда можете удалить объекты (и перестать платить за них).

  2. стать владельцем объекта и предоставить владельцу ведра полный контроль. Любой может быть не прошедшим проверку пользователя и, следовательно, владельцем объекта.

Вот пример того, как сделать # 2 для bkt/cat.jpg, используя node.js и AWS JavaScript SDK. Этот код вызывает putObjectAcl как не прошедшего проверку пользователя и дает владельцу ведра (вам) полный контроль над объектом.

var aws = require('aws-sdk'); 
var s3 = new aws.S3(); 
var p = { Bucket: 'bkt', Key: 'cat.jpg', ACL: 'bucket-owner-full-control' }; 
s3.makeUnauthenticatedRequest('putObjectAcl', p, function(e,d) { 
    if (e) console.log('err: ' + e); 
    if (d) console.log('data: ' + d); 
}); 

К сожалению, awscli не появляется, чтобы поддержать неаутентифицированное S3 вызовы в противном случае я бы предложил использовать это, чтобы изменить списки ACL объекта.

Обратите внимание, что canned ACL владельца-ведомого полка-владельца дает как владельцу объекта , так и владельцу ведро полный контроль.

+0

Это фиксировало большую причину боли для меня. Спасибо за метод s3.makeUnauthenticatedRequest, я не знал об этом. –

Смежные вопросы