Я пишу приложение, в котором у меня есть набор пользователей, и у каждого пользователя будет несколько файлов, связанных с ними, в «каталоге» в корзине 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.