2013-12-08 3 views
1

Я пытаюсь установить экземпляр EC2, чтобы получить доступ к ведро S3 с некоторыми частными данными. Я настроил IAM роль как так:Какие разрешения я должен назначить ведро S3, чтобы сделать его доступным только из экземпляра EC2 с использованием ролей IAM?

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Action": [ 
     "s3:Get*", 
     "s3:List*" 
     ], 
     "Effect": "Allow", 
     "Resource": "arn:aws:s3:::my_bucket_name/*" 
    } 
    ] 
} 

Я назвал роль «s3_bin_download_role»

я начинаю мои экземпляры EC2 с помощью следующей команды:

ec2-run-instances ami-4b143122 -n 1 -k us_east_key_pair -p s3_bin_download_role -g sg-????? -t t1.micro -z us-east-1a 

Это, кажется, работает чисто. Но я не понял, как проверить, действительно ли этот экземпляр EC2 имеет эту роль в нем.

Во всяком случае, когда экземпляр запускается, я SSH в машину и тип:

curl http://my_bucket_name.s3.amazonaws.com/myfile.html 

Это дает мне "Access Denied" ошибка.

Я установил свой ведро S3 без разрешения. Кажется, это неверно. Но я не уверен, что минимальный список разрешений, который мне нужно указать в ведре, чтобы позволить программам в этом экземпляре EC2 его прочитать.

В качестве бонуса я был бы очень признателен, если бы кто-нибудь мог рассказать мне, как я могу выяснить, имеет ли экземпляр EC2 определенную роль IAM. У консоли AWS, похоже, нет этой информации.

Edit-

@slayedbylucifer правильно, но детали были очень запутанными, так что я буду добавлять подробности здесь.

Смущает то, что вы действительно можете создавать роли IAM и сразу же запускать экземпляры EC2 с этими ролями без создания каких-либо пользователей или групп. Просто используйте ec2-run-экземпляры (из инструментов cli) с флагом -p, чтобы передать имя только что созданной роли. Экземпляр запускает роль, которую вы можете проверить, выдав следующую команду:

curl http://169.254.169.254/latest/meta-data/iam/security-credentials/<rolename> 

Если это работает, то этот экземпляр теперь будет запускать все запросы, которые используют инструменты aws с разрешениями, предоставленными ему этой ролью.

НО, что произошло за кулисами, так это то, что, поскольку пользователей или групп не определено, пользователь неявно является «корневым» пользователем или кем бы вы не вошли в консоль управления при создании роли. Таким образом, это не значит, что создание, но не назначение роли означает, что никто не имеет доступа - экземпляры ec2, созданные создателем, имеют доступ, если роль предоставляет доступ.

Итак, теперь вам нужно только перейти на консоль управления S3 и предоставить права на ведро для себя. Вот и все.

Кроме того, вы можете использовать curl для извлечения объектов S3, даже если они не являются общедоступными, однако, поскольку это не инструмент aws, вам необходимо явно передать в hmac'ed aws токены с запросом, который инструмент, такой как s3-curl.pl, сделает для вас.

ответ

2

НЕТ НИЧЕГО ЗДЕСЬ ... ПЕРЕМЕЩАЮТСЯ. ДАННЫЙ ОТВЕТ НЕ БОЛЕЕ ДЕЙСТВИТЕЛЬНО, КАК АМАЗОН ДОБАВЛЯЛ ЭТУ ХАРАКТЕРИЮ НАХОДЯТСЯ НА НОМЕРЕ.

Краткий ответ: Нет, вы не можете применять роль IAM к экземпляру EC2.

Либо вы определяете политику S3 Bucket на конце S3, либо определяете роли IAM и назначаете ее пользователю/группам.

Это дает мне ошибку «Отказано в доступе».

У вас есть роль IAM, но вы не назначили ее никому из пользователей IAM. Доступ по умолчанию «Запрет». Поэтому вы должны явно разрешить доступ. И запуск curl, как и выше, заставляет меня поверить, что вы хотите, чтобы ваш объект S3 был общедоступным, иначе команда, которую вы пишете, не будет работать.

+0

Вы _can_ применяете роль IAM к экземпляру EC2. Вам просто нужно получить доступ к файлам с помощью инструмента aws (или сохраненных учетных данных на компьютере). – johnharris85

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

  • Нет связанных вопросов^_^