Привет всем!
В связи с вот этой новостью Специальный вредоносный код в npm-пакете для России и Белоруссии собственно и возник вопрос. Там я уже его задавал, но решил вынести в отдельную тему, т.к. у меня проект несколько другой, да и не node это вообще.
Проект на тему ML, в нём используется:
* Python
* PyCharm
* Docker
* OpenCV
* TF Keras
Плюс куча пакетов Python'а на все случаи жизни, которым нет числа. Точнее, там много разных requirements.txt для разных частей (отдельно для training, отдельно для inference, отдельно для утилит), там есть пересечения в используемых пакетах. Сколько уникальных пока точно не посмотрел. Ну, допустим, штук 150. Никто ведь не помешает в pypi.org положить такую же каку со следующей версией библиотеки, как по ссылке выше, ведь так?
Да, логично зафиксировать версии, ничего просто так не обновлять, а если обновлять, то очень внимательно следить, что изменилось. Но тут легко что-то пропустить. Кроме того, в начале этого месяца уже были обновления (да, надо будет вникнуть, что там).
Локально я ничего не обучаю, однако не всё так просто... Обучение происходит на Азуре следующим образом: у меня запускается Docker контейнер, в нём код для работы с Азурой плюс сам код, который там будет выполняться и обучать модель, плюс все вспомогательные файлы. Всё это запаковывается, отправляется на Азуру, а там становится средой выполнения. Контейнер настроен так, что у него есть доступ наружу, в директорию с проектом. Это так by design, было до меня и просто так переделать это невозможно. Кроме собственно обучения я иногда просто тестирую код каких-то утилит локально, т.к. это многократно быстрее, чем запуск на Азуре ради того, чтобы понять, что оно падает или преобразует входные данные не так, как планировалось. Проекту нужно иметь доступ к камере, а мне нужно в реальном времени и с минимальной задержкой видеть окна с обработанными кадрами.
Всё осложняется тем, что весь проект очень большой 62,4 GiB, 1 772 813 files, 102 363 sub-folders. И это не считая того самого контейнера. Там ещё гигов 15. Да, естественно, не всё это гоняется на Азуру при каждом запуске, только разница (упрощённо говоря).
Как всё это огородить от основной системы и от бекапов (лежат на отдельном винте, делаются каждый вечер самой системой, где запускается рабочая среда)?
Мыслей у меня две:
* Виртуалка, в ней лёгкая система
* Контейнер LXC
В обоих случаях хорошо бы «прокидывать» (X11 сетевая прозрачность, настало твоё время!) окна графических приложений наружу, чтобы не запускать целый DE внутри. Надо чтобы это работало быстро, т.к. видео. И надо какую-то панель изнутри, чтобы запускать программы внутри изолированной среды.
Если LXC:
+ Благодаря единому ядру потребление памяти будет ниже, будет более гибким
+ Аналогично для места на накопителе, т.к. не надо будет выделять какой-то файл образа
+ Работа с файлами будет быстрее, т.к. не будет конструкции «файловая система в файле на файловой системе». Это важно, т.к. много мелких.
+ Проще «прокинуть» web-камеру. Т.е. для этого и делать ничего не надо.
+ Просто организовать прямой доступ к GPU
- Ниже безопасность, т.к. можно эксплуатировать уязвимости ядра
? Как из LXC будет запускаться Docker? Пробовал кто? механизмы у него и у LXC ведь один и те же.
Если виртуалка, я думаю надо что-то максимально лёгкое, вроде QEMU+KVM, с минимальной системой внутри. В этом случае:
+ Выше безопасность, т.к. ядро отдельное
- Больше места занимает
- Управление занимаемым местом не такое гибкое. Да, про динамический образ я в курсе.
- Ниже производительность при работе с файлами, особенно с мелкими
- Надо прокидывать устройства, что тоже снизит производительность
- Ниже производительность из-за эмуляции железа
- Проблемы с быстрым выводом графики
- Потребление памяти не гибкое. Можно использовать ballooning, но не знаю, насколько эффективно оно работает. Да и при старте виртуалка будет потреблять всё равно весь объём.
? Пробовал ли кто прокидывать внутрь виртуалок файловую систему c помощью Virtiofs или чего-то подобного? Смысл в том, чтобы файлы проекта остались доступными и снаружи, так их проще бекапить и не будет накладных расходов на две файловые системы.
Я пока склоняюсь к первому вариантус LXC. Я не думаю, что с пакетами может придти уж очень серьёзная малварь, которая будет эксплуатировать дырки в ядре. Вопрос в основном только в Docker'е, как он будет запускаться.
Какие у кого мысли? Да, я тут не рассматриваю безопасность самой host системы, так то ведь может и с обновлениями ОС что-то попасть, кака какая-то.
P.S.: i7-4770 (да, старичок, но сейчас чего купишь?), 32 GiB, Ubuntu 21.10
←
1
2
→
Ответ на:
комментарий
от w201403
Ответ на:
комментарий
от goingUp
Ответ на:
комментарий
от eternal_sorrow
Ответ на:
комментарий
от einhander
Ответ на:
комментарий
от eternal_sorrow
Ответ на:
комментарий
от einhander
Ответ на:
комментарий
от eternal_sorrow
Ответ на:
комментарий
от tz4678
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Вакансия DevOps Engineer Москва/Петербург (2018)
- Форум Вредоносный код в компиляторе (2017)
- Форум Карантин для вредоносного кода. (2011)
- Форум Вредоносный код в постах (2011)
- Форум Новый вредоносный код атакует Apache (2013)
- Форум Вредоносный код в постах (2) (2011)
- Форум Зависание в сторонней библиотеке (2014)
- Форум Установка сторонних модулей Gentoo (2016)
- Форум Проверка сайта на наличие вредоносного кода (2013)
- Форум Работа со сторонними модулями ядра. (2014)