Я пытаюсь реализовать решение для защиты S3 Bucket, совместно используемого многими пользователями с разными ролями и разными разрешениями.
Вот мой пример использования:
- Управление пользователямис Cognito User Pool
- 3 создаются группы: Admin, Professional, Customer
- Клиенты имеют доступ только к папке своих проектов (то есть: project-123 / *)
- Проект управляется Профессионалом
- Профессионал может иметь несколько Проектов
- Профессионалы имеют доступ к папке своих клиентов. Проекты
- Администраторы имеют полный доступ к S3 Bucket
- Нам нужно отследить идентификатор действия в корзине s3 для каждого объекта (получить, удалить, положить)
Я пытался:
- s3SignedUrl: он подходит, потому что моя политика безопасности не принимает временное окно, и мы не можем отследить личность пользователя в действиях s3
- роль по проекту: кажется, что он ограничен при использовании cognito feнедооцененные идентификаторы, поскольку он использует только одну роль, а Cognito по умолчанию ограничен 300 группами
Я не пробовал:
Authorization @ Edge : облачный фронт + лямбда @ край для аутентификации перед доступом к S3.Я не уверен, что он оптимизирован для использования cloudfront для помещения объектов в s3, и если этот метод предназначен только для получения объекта.
псевдодинамическая политика S3 Bucket, добавляя идентификационные данные каждого пользователядля каждой папки / проекта, но это кажется очень сложным, и ограничения очень низкие (20 КБ для политики).