Вопрос с собеседования · DevOps

Как сделать контейнер безопаснее?

MiddleDocker и контейнерыDockerKubernetes
Ещё спрашивают так:
  • Почему не стоит запускать контейнер от root?
Коротко

Не root внутри контейнера, минимальный образ (меньше пакетов — меньше уязвимостей), сканирование образов в CI (Trivy, Grype), файловая система только для чтения, сброс capabilities, запрет privileged и монтирования docker.sock, секреты не в образе и не в переменных, видимых всем, фиксированные версии и подпись образов.

  • root в контейнере при уязвимости рантайма или неосторожном монтировании — root на хосте
  • Kubernetes: securityContext — runAsNonRoot, readOnlyRootFilesystem, allowPrivilegeEscalation: false
  • Сетевые политики ограничивают, кто с кем может общаться

А ещё Pod Security Standards (restricted) включают эти правила на уровне кластера

Подробно

Почему важно. Контейнер изолирован общим ядром. Ошибка в рантайме, privileged-режим, монтирование /var/run/docker.sock или каталогов хоста дают выход на хост. Запуск от root делает последствия максимальными.

Список мер:

  • USER в Dockerfile, runAsNonRoot в Kubernetes;
  • distroless или slim-образ, регулярное обновление базового образа;
  • readOnlyRootFilesystem: true, временные каталоги — emptyDir;
  • capabilities: drop: ["ALL"], добавлять только нужные;
  • запрет privileged и hostPath;
  • сканирование образов и зависимостей в CI, блокировка критичных уязвимостей;
  • подпись образов (cosign) и проверка при деплое;
  • сетевые политики по принципу «запрещено всё, что не разрешено».

Что хотят услышать

  • Почему root опасен.
  • Минимальные образы и сканирование.
  • Ограничения в рантайме и Kubernetes.

Проверьте себя

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Запуск не от root и минимальный базовый образ
  • ✓Сканирование образов в CI
  • ✗Монтирование docker.sock в контейнер приложения
  • ✓Файловая система только для чтения и сброс capabilities

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования