Укрепление инфраструктуры проекта
После недавних событий мы провели масштабную работу по повышению безопасности и надежности всей инфраструктуры проекта. Были реализованы следующие изменения:
1. Унификация системы сборки и развертывания
Вместо множества отдельных скриптов теперь используются две универсальные системы сборки: одна для Node.js-приложений (боты, сайт), другая — для Java-приложений (сервера, Discord бот, лаунчер). Это значительно упростило сопровождение и сделало процесс развертывания более прозрачным.
2. Усиление защиты секретных данных
Все конфиденциальные данные передаются сервисам только в строго необходимом объеме и содержатся в полностью отдельном месте, что существенно снижает риски компрометации.
3. Ограничение ресурсов
Каждый контейнер теперь работает с собственным пользователем, обладающим минимально необходимыми правами, а также имеет ограничения по использованию процессора и оперативной памяти. Благодаря этому даже при одновременной атаке на несколько сервисов невозможно полностью загрузить хост-систему или получить доступ к критически важным данным.
4. Полная ревизия конфигураций проекта
Мы пересмотрели настройки всех сервисов, проверили конфигурационные файлы, систему логирования и устранили накопившиеся за время эксплуатации проблемы.
5. Изоляция файловых систем
Каждый сервис, работающий с файлами, теперь использует собственную файловую систему с ограничениями на размер файлов. Это исключает возможность заполнения дискового пространства хоста одним из сервисов и повышает общую устойчивость инфраструктуры.
6. Обновление библиотек
Все сервисы получили очередное мажорное обновление библиотек. Конечно, мы и так довольно часто занимаемся их обновлением, в отличии от других проектов (большинство из которых их вообще никогда не обновляло), но разработчики библиотек для Node.js оставляют дыры чаще, как видно, этого было не достаточно.
Работа по развитию инфраструктуры продолжается, и мы будем и дальше внедрять решения для повышения надежности.
