2016-11-09 5 views
0

У меня есть ведро AWS S3, назовем его «mybucket» и кучей пользователей AWS IAM, один из которых, скажем, «alice», , должен иметь возможность делать что-либо «mybucket», в то время как другие пользователи AWS IAM должны просто иметь возможность перечислять содержимое и получать объекты в «mybucket».Можно использовать политику веток AWS S3 для ограничения разных типов доступа для разных пользователей.

Я настроил политику ковшового типа:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Sid": "Allow 'alice' user complete access.", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "arn:aws:iam::XXXXXXXXXXXX:user/alice" 
     }, 
     "Action": [ 
     "s3:*" 
     ], 
     "Resource": [ 
     "arn:aws:s3:::mybucket", 
     "arn:aws:s3:::mybucket/*" 
     ] 
    }, 
    { 
     "Sid": "Allow all other users read access", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "arn:aws:iam::XXXXXXXXXXXX:root" 
     }, 
     "Action": [ 
     "s3:GetObject" 
     ], 
     "Resource": [ 
     "arn:aws:s3:::mybucket", 
     "arn:aws:s3:::mybucket/*" 
     ] 
    } 
    ] 
} 

С этой политикой, я все еще могу писать в «mybucket». Я даже удалил второй объект-оператор и получил те же результаты.

Это правильный подход к достижению того, чего я хочу достичь? Если да, то в чем проблема с моей ведровой политикой? Если нет, то какой подход следует преследовать?

Большое спасибо!

+0

Какой ты тип партнера? Root? Или другой именованный пользователь вроде 'arn: aws: iam :: XXXXXXXXXXXX: user/allen'? –

ответ

1

Политика использования Amazon S3 обычно используется для предоставления доступа к всем (например, общественным пользователям).

Если вы хотите предоставить определенные разрешения конкретным пользователям IAM, то лучше, чтобы добавить политику непосредственно пользователю или группе IAM.

Например, добавьте эту политику в alice IAM пользователя, чтобы позволить ей выполнить любую команду API как на ведре и объекты в ведре:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::mybucket/*", 
       "arn:aws:s3:::mybucket" 
      ] 
     } 
    ] 
} 

Вы заметите, что нет Principal поле, потому что оно автоматически применяется к Пользователю, на котором размещена эта политика.

Когда Amazon S3 оценивает права доступа, он рассматривает как политику Bucket, так и любые политики, связанные с пользователем. Любой может предоставить доступ.