2013-03-18 3 views
0

У меня есть приложение Django, которое будет периодически загружать вещи на S3. Я подумал, что было бы достаточно легко хранить ключ S3 и секрет в моем файле настроек:Пользовательские разрешения пользователя для S3

S3_KEY = "whateverkeything" 
S3_SECRET = "mykeysecret" 

Тогда, учитывая безопасность и идею ограничения прав доступа, когда это применимо, пересмотрел этот подход. Моему приложению будут нужны только объекты GET и PUT/POST, никогда не удаляйте объекты, никогда не создавайте и не удаляйте ведра и т. Д. Кроме того, если кто-то получит доступ к моему ключу и секрету AWS, они потенциально могут запустить 100 массивных экземпляров EC2, запустив меня в тонну долга.

Есть ли способ ограничить доступ и создать новый «пользователь» для S3, который будет иметь только описанные разрешения? Или я слишком параноик?

ответ

1

Вам абсолютно необходимо создать пользователя с необходимыми разрешениями. Это легко сделать с IAM (Identity and Access Management). Вы можете создать нового пользователя в своей существующей учетной записи AWS (проще всего сделать с консоли AWS), а затем предоставить ему минимальные разрешения, необходимые для этого. Таким образом, если учетные данные каким-то образом скомпрометированы, объем ущерба ограничен.

Другой вариант - назначить серверу роль IAM, но я не знаю, будут ли инструменты PHP работать с ролью.

Назначение разрешений S3 довольно просто с помощью редактора политики консоли. Вы просто выбираете конкретные операции (объект GET и объект PUT, похоже) и предоставляете «ARN» ресурсов для его применения. Если ваше ведро называется «mybucket», ARN будет arn:aws:s3:::mybucket/*. Если вам нужно также указать ресурсы в ведре, вы добавите вторую политику для ведра списка с ARN arn:aws:s3:::mybucket (без косой черты или звездочки).

Информация о пользователях и ролях IAM доступна в IAM User Guide.

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