Задать вопрос

Как проверять файлы в S3 хранилище?

Всем привет! Разрабатываю сайт на Django/React с хранением файлов в S3 хранилище от Selectel, весь проект разворачиваю в Docker.

У меня возник вопрос касаемо того как проверять загружаемые файлы в S3 на безопасность.
Вижу три основных пути реализации механизма, но по каждому из них у меня есть вопросы:

1) На клиент отдавать временный URL для загрузки с Content_Type загружаемого файла и ограничением по времени в зависимости от размера файла. Файл грузиться в отдельный бакет или "папку" контейнера, после этого скачивается сервером или отдельным сервером для дальнейшей валидации. По этому методу у меня вопрос такой, стоит ли для такого случая создавать отдельны изолированный Докер контейнер где будет происходить вся проверка и как такое реализовать?

2) Следующий способ это передача файла через POST запрос на сервер, запись файла в оперативку, а дальше происходит дальнейшая валидация и загрузка в S3. В этом методе меня интересует насколько такой подход оптимальный и ресурсоемкий?

3) Третий подход чем-то похож на первый, также файл грузиться сначала в S3, затем отдаем файл на сервер по чанкам и проверяем с помощью ClamAv (этот способ вычитал на одном из сайтов). В реализации этого метода меня останавливает вопрос сложности реализации данного подхода и насколько он качественно проверяет файл?

Если есть иной более качественный и распространенный способ, буду рад узнать о нем, сам новичок и в теме Web приложений относительно недавно. Буду рад вашим ответам, заранее спасибо за них!
  • Вопрос задан
  • 1809 просмотров
Подписаться 3 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
@rPman
Сохраняя сразу в s3 хранилище, увеличиваешь стоимость в ~два раза (каждый файл будет загружен и выгружен, т.е. дважды), а у амазона к примеру стоимость сетевого трафика грустная. И да, проверить по кусочкам файл не получится, антивирусу файл нужен целиком. В принципе на сколько я знаю есть s3fs-fuse - файловая система где файлы грузятся с s3 прозрачно, возможно, если антивирус не проверяет все типы файлов, а проверяемый является архивом, то это может дать какой то бонус, но нужно еще удостовериться что эта файловая система так умеет... да и не стоит так усложнять все.

Оперативка дороже диска, примерно на порядок (особенно с ростом размера файлов), с другой стороны до сотен мегабайт хватит держать файл в оперативке. Не вижу особой проблемы складывать файл на диск, проверять его и только после этого заливать в хранилище. Поэтому складывай на диск, проверяй, можешь параллельно запустить сохранение в s3 (потом прервешь или удалишь загруженное, если обнаружишь вирус).

docker не про безопасность а про изоляцию (для организации специфический версий библиотек), он не нужен именно для проверки файла на вирусы
Ответ написан
mayton2019
@mayton2019
Bigdata Engineer
Большинство файлов - небольшие. Их можно грузить в фолдер /tmp на сервере и проверять на вирусы сразу. И если ок то публиковать в s3.

Если файл допустим больше 10мб то публиковать сразу на s3. Но здесь как бы слегка уже срезали costs.
Ответ написан
Комментировать
@vitaly_il1
DevOps Consulting
Я в AWS использую https://aws.amazon.com/blogs/apn/amazon-s3-malware... Amazon S3 Malware Scanning Using Trend Micro Cloud One
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы