2015-02-26 2 views
3

У меня есть ведро S3, который имеет в своем разрешении политики для моей CloudFront идентичности доступа Происхождения:Управляемая политика AmazonS3FullAccess в группе не дает разрешения S3?

{ 
    "Version": "2008-10-17", 
    "Id": "PolicyForCloudFrontPrivateContent", 
    "Statement": [ 
    { 
     "Sid": "1", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <mine>" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::<my-bucket>/*" 
    } 
    ] 
} 

Кроме того, я создал группу и прикреплён AmazonS3FullAccess удалось политика к нему и добавил IAM пользователя в эту группу , Управляемая политика выглядит следующим образом:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": "s3:*", 
     "Resource": "*" 
    } 
    ] 
} 

Однако, когда этот пользователь пытается добавить что-нибудь к ковшу, я получаю 403 (доступ запрещен). Я не уверен, работают ли какие-либо другие операции, я не написал код, чтобы попробовать их. Только когда я специально разрешаю ARN-доступ этого пользователя к ведро непосредственно в политике ведра, им разрешено добавлять объекты. Что мне не хватает? Похоже, что вышеуказанная групповая политика должна позволить членам этой группы получать доступ ко всем операциям во всех ведрах, но это не делает этого.

EDIT: После того, как целая группа больше разбирается в документации, я думаю, что я понял, что Amazon не собирается использовать группы таким образом. Они хотят, чтобы вы вместо этого использовали роли, которые вы можете назначить экземпляру EC2 для управления автоматическими учетными данными. Это нормально, но тогда я не могу понять, как локально проверять мой код (используя жемчужину aws-sdk Ruby). Amazon говорит, чтобы определить переменные среды для вашего идентификатора доступа и ключа - но какой идентификатор доступа и ключ? Там нет такого понятия, для роли ...

+1

Использование групп так, как вы описали, прекрасны ... политики, политики пользователя и групповые политики - все это бесплатно, и, что важно, когда вы используете политики IAM, политика ведра часто не нужна вообще. Кроме того, * allow * никогда не будет переопределять * deny *, также соответствующий конкретному запросу. Вы отрицаете что-то в одном месте, которое разрешено в другом? –

ответ

0

Попробуйте заменить (в политике):

"Resource": "arn:aws:s3:::<my-bucket>/*" 

с:

"Resource": ["arn:aws:s3:::<my-bucket>", "arn:aws:s3:::<my-bucket>/*",] 

и:

"Principal": {"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <mine>"}, 

с:

"Principal": {"AWS": "arn:aws:iam::ACCOUNT_ID:user/USERNAME"}, 
Смежные вопросы