Я ищу справку о том, как защитить динамически созданные и названные «каталоги» для каждого пользователя в корзине Aws S3. Я просмотрел много документации по AWS S3 и IAM, но не смог найти «лучший» способ реализовать то, что мне нужно, не слишком быстро достигая пределов aws ... Примечание: мне нужно использовать AWS S3 только для хранения файлов и есть данные о сущности, поступающие из моей базы данных (например, пользователи и книги, см. ниже).
Позвольте мне объяснить:
Что у меня есть:
- Моя собственная база данных, в которой хранятся данные пользователей и книг, например v4 uuid для обеих сущностей, и некоторые другие данные, бесполезные для aws.
- Динамически создаваемые пользователи-программисты AWS IAM с именами сгенерированных v4 uuids.
- S3 Bucket, содержащий «каталоги» (я знаю, что в s3 нет «каталогов») с именем сгенерированного v4 uuids в каталоге «books».
К сожалению, я не хочу создавать структуру в зависимости от пользователя uuid v4, потому что несколько пользователей могут работать с книгой.
Пример структуры ковша:
-My Bucket/
- Books/
- d32c04f7-bbd3-4331-b53d-2528d783c0ef/
- anotherDirectory/
- object.txt
- etc...
- d32c04f7-bbd3-4331-b53d-2528d783c0ef/
- ...
- e10513c2-2464-4d7b-a4b3-2177886325b7/
- etc.
Что я хочу:
Запретить доступ ко всем книгам по умолчанию и разрешить доступ пользователям по «книгам» (прикрепляя их к политикам iam или с помощью политики корзины, что будет наиболее актуально для моего случая), с ограничениями, которые могут быть разрешены нескольким пользователям чтение или запись файла в каталоге книги в зависимости от их «прав доступа».
Чем я закончил:
Я думал о добавлении тегов Aws для пользователей с ключами, в которых в качестве значения указано «Книги uuid» со статусом пользователей в этой книге. Пример (ключ / значение тега): d32c04f7-bbd3-4331-b53d-2528d783c0ef / author.
Я не знаю, является ли это наиболее подходящим решением, но с этим мне не удается создать стратегию, которая проверяет ключи пользователей, совпадающие с ключами объекта s3 (book uuid), прежде чем пытаться получить доступ к объектам внутри него ...
Не могли бы вы помочь мне с этим или, может быть, дать мне более уместный подход к моему делу? Если вам требуется больше точности в этом случае, не стесняйтесь спрашивать.
Заранее спасибо:)