2015-04-18 8 views
0

Допустим, у меня есть следующая структура s3Разрешить доступ администратора к sub_foldier в ведро s3. Держите все другие папки общественного

company_folder 
    folder1 
    folder2 
    folder3 
    sub_folder1 
    sub_folder2 

Я в настоящее время имеют следующие права доступа, которые позволяют получить доступ к любой папке, sub_folder и файла. Это для веб-приложения.

"Effect": "Allow", 
"Principal": { 
    "AWS": "*" 
}, 
"Action": "s3:GetObject", 
"Resource": "arn:aws:s3:::company_folder/*" 

Использование администратора IAM ключ доступа ID: ABCD Я могу поместить изображения в sub_folders с использованием carrierwave. Я использую один URL-адрес корневого облака для доставки изображений из разных «папок» и «подпапок»

Изображения, отправленные в «sub_folder2», не отображаются на веб-сайте, и они имеют высокое разрешение. К ним не следует обращаться никем, кроме администратора.

Как я могу идти об изменении ограничений на «sub_folder2» в рамках политики ковша для «company_folder»

мне нужно запретить GET и PUT доступа к «sub_folder2» для всех, кроме администратора, сохраняя при этом общественности читать дальше все остальное в «company_folder».

Я считаю, что «company_folder» должен оставаться открытым, потому что именно там указывает мой URL-адрес облачного интерфейса.

Это простое решение только для редактирования политики ведра?

+0

Может быть проще установить другое ведро для более чувствительных данных – Guy

+0

я думаю, что мне нужно, чтобы держать его под тем же ведро, потому что я толкаю другие изображения в company_folder с carrierwave. Не уверен, что я могу указать на два ведра в одном инициализаторе несущей. Config.asset_host = ENV ['HOST_NAME'] config.fog_directory = ENV ["S3_BUCKET_NAME"] –

ответ

1

Что-то вроде следующей политики корзины должно работать на вас. Хитрость заключается в том, чтобы явно запретить доступ к ресурсам/действиям, которые вы не хотите, а затем разрешить доступ к тем, которые вы хотите. Будьте осторожны с взаимодействием между политиками ведра, политиками IAM и ACL объектов. Также убедитесь, что вы используете Trusted Advisor, чтобы предупредить вас о ведрах, которые читаются в мире.

{ 
    "Id": "Policy1429934459265", 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Stmt1429934187436", 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Effect": "Allow", 
      "Resource": "arn:aws:s3:::company_folder/*", 
      "Principal": "*" 
     }, 
     { 
      "Sid": "Stmt1429934452272", 
      "Action": [ 
       "s3:AbortMultipartUpload", 
       "s3:DeleteObject", 
       "s3:DeleteObjectVersion", 
       "s3:GetObject", 
       "s3:GetObjectAcl", 
       "s3:GetObjectTorrent", 
       "s3:GetObjectVersion", 
       "s3:GetObjectVersionAcl", 
       "s3:GetObjectVersionTorrent", 
       "s3:PutObject", 
       "s3:PutObjectAcl", 
       "s3:PutObjectVersionAcl", 
       "s3:RestoreObject" 
      ], 
      "Effect": "Allow", 
      "Resource": "arn:aws:s3:::company_folder/folder3/sub_folder2/*", 
      "Principal": { 
       "AWS": [ 
        "arn:aws:iam::888888888888:user/youruser" 
       ] 
      } 
     }, 
     { 
      "Sid": "Stmt1429934245711", 
      "Action": "s3:GetObject", 
      "Effect": "Deny", 
      "Resource": "arn:aws:s3:::company_folder/folder3/sub_folder2/*", 
      "Principal": "*" 
     } 
    ] 
} 
+0

Я все еще не могу выполнить GET requst в частной папке, даже если разрешенный пользователь предоставляется доступ –

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

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