Как использовать политики AWS S3 для принудительного владения ресурсами для федеративных пользователей? - PullRequest
3 голосов
/ 10 ноября 2011

Я пишу приложение, в котором у меня есть набор пользователей, и у каждого пользователя будет несколько файлов, связанных с ними, в «каталоге» в корзине S3. Пользователи будут проходить аутентификацию с использованием Amazon STS, получая временные учетные данные безопасности, которые должны позволять им получать доступ к принадлежащим им ресурсам, но не разрешать им доступ к ресурсам, которых они не предоставляют ( думать: «домашние» каталоги ).

Предполагается, что пользователь уже существует в системе (и прошел проверку подлинности), и его файловое пространство создается (без указанной политики или ACL) с использованием схемы именования:

<< my app's bucket>>/<< user's identifier >>/

Во время запроса доступа к файлу пользователя мы предоставляем временные учетные данные безопасности, используя boto:

get_federation_token(<< user's identifier >>, duration,policy=user_policy)

где user_policy:

user_policy =  (r'{"Statement": [{"Effect":"Allow",
    "Action":[
"s3:PutObject",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:DeleteObject",
"s3:DeleteObjectVersion"],
    "Resource":"arn:aws:s3:::/%s/*"}]}' % (<< user's identifier >>))

Я думал, что понял политику, но, видимо, я что-то упустил. Используя вышеупомянутую схему, я могу получить / поместить ресурсы в каталог пользователя, но также в каталоги / ресурсы, принадлежащие другим пользователям. Для жизни я не могу получить доступ должным образом отделены. Я также играл с ведром, но это не принесло плодов.

Любое направление будет оценено.

Примечание: я застрял с использованием STS, поскольку у нас, вероятно, будет слишком много пользователей для создания / использования пользователей IAM.

1 Ответ

3 голосов
/ 10 ноября 2011

Кто-то задал вопрос, подобный этому - оказалось, что корзина имеет глобальное общедоступное чтение с использованием политики корзины. Дважды проверьте, что нет других ACL и т. Д., Которые разрешают доступ. Кроме того, похоже, что нет доступа «листинга» - это то, что вы хотите? Можете ли вы позвонить получить на ведро и получить список всех файлов в нем? (Вы не должны быть в состоянии сделать это).

Не знаю, поможет ли это - они используют «StringLike» в политике. http://www.techtricky.com/amazon-s3-how-to-restrict-user-access-to-specific-folder-or-bucket/

https://forums.aws.amazon.com/search.jspa?objID=f76&q=stringlike&x=0&y=0

...