Назад к вопросам
Junior
72
questionbank

Почему не рекомендуется запускать контейнеры от пользователя root?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Запуск контейнеров от пользователя root создает угрозу безопасности, так как в случае компрометации контейнера злоумышленник получает привилегированный доступ к хост-системе. Это позволяет выполнять команды с высокими привилегиями, модифицировать системные файлы, устанавливать вредоносное ПО и потенциально получить полный контроль над сервером или кластером.

Рекомендуется использовать непривилегированного пользователя внутри контейнера, ограничив его возможности.

FROM ubuntu:latest
USER non_root_user  # Создаем и используем нового пользователя
RUN groupadd -r appgroup && useradd -r -g appgroup non_root_user
RUN chown -R non_root_user:appgroup /app # Предоставляем права на нужные директории

COPY . /app
WORKDIR /app
CMD ["./your_app"]

Причины:

  • Эскалация привилегий: Утечка процесса контейнера или уязвимость в движке контейнеризации может предоставить атакующему root-доступ на хосте.
  • Снижение радиуса атаки: Запуск от непривилегированного пользователя ограничивает возможности атакующего в случае взлома контейнера.
  • Принцип наименьших привилегий: Приложение в контейнере должно иметь только те права, которые ему необходимы для выполнения своих функций.

Сравнение:

Признак Запуск от root Запуск от непривилегированного пользователя
Безопасность Низкая (риск эскалации) Высокая (ограниченные права)
Права доступа Полные привилегии на хосте Ограниченные внутри контейнера
Сложность Проще по умолчанию Требует настройкиDockerfile
Риск для хоста Высокий Низкий