// Engineering Log
Безопасность контейнеров — как не запустить «троянского коня» в своё облако
Опубликовано 19.01.2026
// Быстрый маршрут
Эта статья относится к теме Безопасность и защита.
Когда технология Docker только появилась, её полюбили за лозунг: «Build once, run anywhere» (Собери один раз, запускай везде). Разработчики перестали слышать фразу «на моей машине всё работает, а на сервере — нет». Но вместе с удобством пришла и новая угроза.
Контейнер — это не просто ваше приложение. Это целая мини-операционная система (ОС) со своими библиотеками, утилитами и системными вызовами. И если вы не следите за этой ОС, вы оставляете хакерам огромную дверь, открытую настежь.
Проблема «слоёного пирога»
Docker-образ строится слоями. Каждый раз, когда вы пишете FROM, RUN или COPY в своём Dockerfile, вы добавляете новый слой.
В чём подвох?
Большинство новичков начинают с команды FROM ubuntu:latest или FROM python:3.9.
- Вес: базовый
ubuntuсам по себе сравнительно небольшой, но как только вы начинаете ставить пакеты и зависимости, образ очень легко раздувается до сотен мегабайт. А «полные» языковые/SDK-образы действительно часто оказываются тяжёлыми. - Мусор: в таких образах могут оказаться (или быстро появиться) утилиты вроде
curl,wget, пакетный менеджер, shell и прочие инструменты, которые вашему приложению на самом деле не нужны для работы. - Уязвимости: чем больше пакетов в системе, тем больше в ней дыр. Хакеру не нужно взламывать ваш код на Python — он может использовать уязвимость в старой версии
curl, которая просто «лежала рядом» в контейнере.
Линия обороны №1: переход на «золотые образы» (Alpine и Distroless)
Первое правило безопасности контейнеров: выбрасывайте всё лишнее. Если вашему приложению не нужен bash, его не должно быть в контейнере.
1) Alpine Linux
Это сверхлёгкий дистрибутив Linux. Базовый образ весит всего около 5 МБ. В нём нет почти ничего, кроме самого необходимого.
- Плюс: минимум места для атаки.
- Минус: использует библиотеку
muslвместо стандартнойglibc, что иногда вызывает проблемы с некоторыми специфическими бинарными зависимостями и сборкой отдельных библиотек.
2) Distroless (выбор профессионалов)
Это образы, в которых нет вообще ничего, кроме вашего приложения и его зависимостей. Там нет даже командной строки (shell).
Почему это круто? Если хакер взломает ваше приложение, ему банально сложнее «жить» внутри контейнера: он не сможет просто выполнить ls или curl, чтобы скачать вредоносный софт, потому что привычных инструментов внутри контейнера может не быть.
Линия обороны №2: Multi-stage builds (многоэтапная сборка)
Это техника, которая позволяет использовать тяжёлые инструменты (компиляторы, SDK) для сборки приложения, но не тащить их в финальный образ.
Плохой пример (всё в одном)
FROM python:3.9
COPY . /app
RUN pip install -r /app/requirements.txt # Здесь остаются кэши и инструменты сборки
CMD ["python", "/app/main.py"]
Хороший пример (Multi-stage)
# Этап 1: Сборка
FROM python:3.9-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
# Этап 2: Финальный образ (только запуск)
FROM python:3.9-slim
WORKDIR /app
# Копируем только установленные библиотеки из первого этапа
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
# Запускаем от обычного пользователя (см. ниже)
USER 1001
CMD ["python", "main.py"]
Линия обороны №3: никогда не работайте под root
По умолчанию многое в контейнерах запускается от имени root (суперпользователя). Это опасно: если злоумышленник получит выполнение команд внутри контейнера, права root резко расширяют спектр возможных атак, а при наличии дополнительных условий (ошибки конфигурации, привилегированный контейнер, уязвимости ядра) могут усилить ущерб.
Что делать?
Всегда создавайте в Dockerfile пользователя с ограниченными правами и переключайтесь на него через команду USER.
Золотое правило: приложению внутри контейнера почти никогда не нужны права root для обычной работы.
Линия обороны №4: сканирование образов (Trivy возвращается)
Помните инструмент Trivy из прошлой статьи? Он умеет сканировать не только код, но и готовые Docker-образы.
Как это сделать
trivy image my-app:latest
Trivy проверит слои вашего образа и покажет уязвимости в пакетах/компонентах, пришедших вместе с базовым образом и установленными зависимостями, а также подскажет, какие версии считаются исправленными.
Резюме: чек-лист безопасности для ваших контейнеров
Чтобы ваш «сейф» был действительно надёжным, следуйте этим четырём пунктам:
| Действие | Инструмент/Метод | Зачем это нужно |
|---|---|---|
| Минимизация | Используйте Alpine или Distroless | Уменьшить площадь атаки |
| Чистка | Multi-stage build | Убрать инструменты сборки из продакшена |
| Ограничение | Команда USER nonroot | Снизить последствия компрометации контейнера |
| Аудит | trivy image | Находить уязвимости в системных пакетах |
Заключение цикла DevSecOps
Мы разобрали четыре мощных инструмента:
- Git-хуки (Gitleaks): чтобы ключи не покидали ваш компьютер.
- SAST (Semgrep): чтобы ваш код не содержал логических дыр.
- SCA (Trivy): чтобы чужие библиотеки не стали вашей проблемой.
- Container Security: чтобы ваша инфраструктура была лёгкой и защищённой.
Безопасность — это не конечная точка, а процесс. Начните внедрять эти инструменты по одному, и уже через месяц вы заметите, как выросла культура разработки в вашей команде. Теперь вы не просто «пишете код», вы создаёте надёжные системы.
// Похожая задача
Если у вас похожая ситуация
Эта статья относится к одной из рабочих тем. Можно продолжить чтение по теме, перейти на главную, чтобы понять, чем я занимаюсь, или сразу открыть услуги.
Тема статьи
Безопасность и защита
SSL, hardening, доступы, защита сервисов и безопасные конфигурации.
Часто с этим приходят
- Настроить SSL, сертификаты и безопасные подключения
- Ограничить доступы и закрыть лишние точки входа
- Усилить конфигурацию сервера и сервисов
// Следующий шаг
Если вам нужна не только статья, а помощь по этой теме, удобнее сразу перейти в услугу. Главная и подборка материалов остаются рядом.
Открыть услуги// Reviews
Отзывы по теме
Опыт сотрудничества оставил максимально позитивное впечатление, в первую очередь профессионализмом и подходом к решению возникающих проблем.
Опыт сотрудничества оставил максимально позитивное впечатление, в первую очередь профессионализмом и подходом к решению возникающих проблем.
Jitsi meet: персональный zoom, настройка jitsi meet в docker и на VPS
11.11.2025 · ★ 5/5
Была задача наладить работу n8n, redis и базы данных. Заказывал раньше у другого исполнителя, постоянно все ломалось. Заказал у Михаила, на следующий же день все стало работать быстро, как часы!
Была задача наладить работу n8n, redis и базы данных. Заказывал раньше у другого исполнителя, постоянно все ломалось. Заказал у Михаила, на следующий же день все стало работать быстро, как часы!
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
24.09.2025 · ★ 5/5
Спасибо за быструю и хорошую работу. Все сделали оперативно и так как нужно!
Спасибо за быструю и хорошую работу. Все сделали оперативно и так как нужно!
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
06.09.2025 · ★ 5/5
Быстрое решение проблемы, всем рекомендую Михаила в качестве исполнителя! Пробовал собрать аналогичную конфигурацию самостоятельно и через советы нейросетей, в результате куча потраченных сил и средств (из-за простоя сервера). Так что мой совет в итоге - обращайтесь к профессионалам, это выйдет дешевле =) Спасибо Михаилу за профессионализм.
Быстрое решение проблемы, всем рекомендую Михаила в качестве исполнителя! Пробовал собрать аналогичную конфигурацию самостоятельно и через советы нейросетей, в результате куча потраченных сил и средств (из-за простоя …
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
25.08.2025 · ★ 5/5
Михаил выполнил настройку очередного VPS. Быстро, профессионально обходя определенные ограничение хостинг провайдеров.
Михаил выполнил настройку очередного VPS. Быстро, профессионально обходя определенные ограничение хостинг провайдеров.
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
12.08.2025 · ★ 5/5
Отличная работа, спасибо! Михаил профессионал своего дела, рекомендую!
Отличная работа, спасибо! Михаил профессионал своего дела, рекомендую!
N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram
03.07.2025 · ★ 5/5
// Contact
Нужна помощь?
Свяжись со мной и я помогу решить проблему
// Related