Gymterview
senior

Какие практики безопасности следует соблюдать при работе с Docker?

Безопасность Docker — это комплекс мер, направленных на минимизацию поверхности атаки, предотвращение утечки секретов и ограничение привилегий контейнеров.

1. Не запускайте контейнер от root

Пример
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
USER appuser

2. Используйте минимальные базовые образы

  • alpine — минимальный Linux (~5 МБ)
  • eclipse-temurin:17-jre-alpine — вместо полного JDK
  • distroless (от Google) — образ без shell и утилит, только среда выполнения:
Пример
FROM gcr.io/distroless/java17-debian12
COPY app.jar /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

3. Не храните секреты в образе

Пример
# ПЛОХО — секрет останется в истории слоёв
ENV DB_PASSWORD=supersecret
COPY .env /app/.env

# ХОРОШО — передавайте при запуске
# docker run -e DB_PASSWORD=supersecret myapp

4. Используйте конкретные теги образов

Пример
# ПЛОХО — непредсказуемо
FROM eclipse-temurin:latest

# ХОРОШО — воспроизводимо
FROM eclipse-temurin:17.0.9_9-jre-alpine

5. Сканируйте образы на уязвимости

Пример
docker scout cves myapp:1.0
# Или с помощью Trivy
trivy image myapp:1.0

6. Используйте read-only файловую систему

Пример
docker run --read-only --tmpfs /tmp myapp

7. Ограничивайте ресурсы

Пример
docker run --memory=512m --cpus=1.0 myapp

8. Не устанавливайте лишнее в образ

Пример
RUN apt-get update && \
    apt-get install -y --no-install-recommends необходимый-пакет && \
    rm -rf /var/lib/apt/lists/*

9. Дополнительные меры

  • Используйте .dockerignore для исключения конфиденциальных файлов
  • Обновляйте базовые образы регулярно, чтобы получать исправления безопасности
  • Используйте multi-stage builds для исключения инструментов сборки из финального образа

На собеседовании: назовите минимум 5 практик: непривилегированный пользователь, минимальные базовые образы, no secrets in image, конкретные теги, сканирование уязвимостей. Для senior-уровня упомяните distroless-образы, read-only filesystem, ограничение ресурсов и инструменты сканирования (Trivy, Docker Scout).