Безопасность S3
Главный принцип — хранить бакеты закрытыми по умолчанию и давать только минимально необходимые права конкретным приложениям и пользователям.
Базовые меры
Блокировать публичный доступ
Не открывать бакет всему интернету, если это не является осознанной частью архитектуры.
Минимальные IAM-права
Разрешать только нужные действия и только для нужных префиксов или бакетов.
Шифрование
Использовать шифрование данных при хранении и защищенное соединение при передаче.
Логи и аудит
Отслеживать операции с данными, изменения политик и подозрительные попытки доступа.
Короткий чек-лист
✓ публичный доступ отключен
✓ роли приложений разделены
✓ секреты не хранятся в коде
✓ включено версионирование для критичных данных
✓ lifecycle согласован с требованиями хранения
✓ предусмотрено журналирование и оповещения
Presigned URL позволяет временно дать доступ к конкретному объекту без открытия всего бакета.
Модель доступа
Права удобно проектировать от роли приложения, а не от отдельного пользователя.
Uploader
Может только загружать объекты в заданный префикс.
Reader
Может только читать определенный набор объектов.
Maintainer
Управляет lifecycle, версиями и политиками в рамках административных задач.