Назад к вопросам
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 |
| Риск для хоста | Высокий | Низкий |