2012-05-10 4 views
4

Я пытаюсь реализовать политику IAM, в которой пользователь может иметь доступ только к папке, на которую он имеет право. Я получил этот код из Amazon Документовсоздание политики IAM для Amazon S3

Разрешить пользователю список только те объекты, в его домашней директории в корпоративном ведро

Этот пример основан на предыдущем примере, что дает Бобу домашний каталог. Чтобы дать Бобу возможность перечислять объекты в его домашнем каталоге, ему нужен доступ к ListBucket. Однако мы хотим, чтобы результаты включали только объекты в его домашний каталог, а не все в ведро. Чтобы ограничить его доступ таким образом, мы используем ключ условия политики с именем s3: префикс со значением, установленным в home/bob/. Это означает, что в ответе ListBucket будут возвращены только объекты с префиксом home/bob/.

{ 
    "Statement":[{ 
    "Effect":"Allow", 
    "Action":"s3:ListBucket", 
    "Resource":"arn:aws:s3:::my_corporate_bucket", 
    "Condition":{ 
     "StringLike":{ 
     "s3:prefix":"home/bob/*" 
    } 
    }] 
} 

Это не работает для меня. Когда я запускаю свой код, я могу видеть все папки и подпапки. Мой модифицированный код выглядит примерно так:

{ 
    "Statement":[{ 
    "Effect":"Allow", 
    "Action":"s3:ListBucket", 
    "Resource":"arn:aws:s3:::Test-test", 
    "Condition":{ 
     "StringLike":{ 
     "s3:prefix":"Test/*" 
    } 
    }] 
} 

Когда я запускаю свой код в C#, используя учетные данные пользователя, который прилагается к вышеуказанной политике я получаю все папки, а не только один под «Test». .. Очень понравилась бы помощь!

ответ

7

Я, наконец, получил его работу. Хотя я думаю, что есть ошибка в консоли управления AWS или, по крайней мере, она кажется такой. Проблема в том, что моя политика была правильной на всем протяжении пути, но она вела себя по-разному, когда я обращался к ней через консоль управления AWS, а затем программные средства, такие как CloudBErry. Одна вещь, которую я должен был изменить, - это настройки ACL для объектов и buckets. Это тоже было бы сделано раньше, если бы консоль AWS работала правильно. В любом случае здесь моя политика:

{ 
    "Statement": [ 

    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "arn:aws:s3:::*", 
     "Condition": {} 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:ListBucket", 
     "s3:ListBucketVersions" 
     ], 
     "Resource": "arn:aws:s3:::pa-test", 
     "Condition": { 
     "StringLike": { 
      "s3:prefix": "test/*" 
     } 
     } 
    }, 
    { 
     "Effect": "Allow", 
     "Action": "s3:*", 
     "Resource": "arn:aws:s3:::pa-test/test/*", 
     "Condition": {} 
    } 
    ] 
} 

1) Проблема заключается в том, когда я получить доступ к консоли управления для этого IAM пользователя через AWS консоль я получаю доступ запрещен, когда я нажимаю на моем ведре, хотя, когда я войти через морошку я могу видеть мои папки. 2) я должен был изменить настройки ACL для моего ведра и объекты (папки) для моего ведра: Владелец: Full Control Авторизованные пользователи: Readonly

Для моих папок: Владелец: Full Control

Теперь проблема заключается в том, что вы не можете устанавливать параметры ACl для папок (объектов) в консоли AWS. Вы можете установить их для файлов (объектов). Например, если вы щелкните правой кнопкой мыши по папке (объекту) внутри ведра и затем щелкните по свойствам, она не покажет вам вкладки разрешения. Но если вы щелкните правой кнопкой мыши на ведре или файле (скажем test.html) и щелкните свойства, он покажет вам вкладку «Разрешения». Я не уверен, что кто-то еще заметил эту проблему. В любом случае это мой сценарий, и теперь он работает.

2

Результат, который вы ожидаете от listBucket, не так. Поскольку политика позволяет вам разрешать доступ и запрещать объекты в соответствии с политикой ведра. ListBucket будет перечислять все объекты, но у вас будет доступ только к папке префикса и ее содержимому.

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

+0

Hi Tej, Пожалуйста, извините меня, если я ошибаюсь, но я немного не уверен в вашем решении.если вы прокрутите страницу вниз до примера 2 на этой веб-странице –

+0

Я уже вежливо спросил вас в марте: Пожалуйста, позаботьтесь о продвижении своего продукта, см. соответствующие FAQ [Могу ли я продвигать продукты или сайты, с которыми я здесь связан?] (http: //stackoverflow.com/faq#promotion) для деталей (_ Если огромный процент ваших сообщений включает упоминание вашего продукта или веб-сайта, вы, вероятно, здесь по неправильным причинам). Кроме того, пожалуйста, воздержитесь от использования подписей/тегов, см. Соответствующие FAQ [Можно ли использовать подпись или подпись?] (Http://stackoverflow.com/faq#signatures) для деталей. Вы должны продолжать предоставлять полезный контент, а остальное будет следовать за ... –

+0

@Steffen Opel: вы можете просто отметить одну из своих сообщений для внимания модератора, вместо того, чтобы неоднократно комментировать его использование подписей. Но не беспокойтесь, мы возьмем его отсюда и благодарим за помощь в редактировании! – BoltClock

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