Вступить в клуб →
средняявопросDocker и сборка образов

Токен, переданный через ARG, считается скомпрометированным

Чтобы ставить пакеты из приватного репозитория, в пайплайне сделали так:

FROM python:3.12-slim
ARG NEXUS_TOKEN
RUN pip install --index-url https://ci-user:$NEXUS_TOKEN@nexus.internal/simple -r requirements.txt
COPY . /app

Токен передаётся через --build-arg NEXUS_TOKEN=$CI_NEXUS_TOKEN, в ENV он не попадает. Готовый образ пушится во внутренний реестр, доступный всем командам.

Как оценивать такую схему с точки зрения безопасности?

  • Схема безопасна: `ARG` существует только во время сборки, в готовый образ значение не сохраняется, а промежуточные контейнеры сборки удаляются вместе с ним
  • Схема безопасна, пока значение не продублировано в `ENV`: в итоговый образ попадают именно переменные окружения, а всё остальное остаётся на сборочной машине
  • Токен виден в истории слоёв образа: любой, кто скачает образ из реестра, прочитает команду вместе со значением — токен нужно ротировать, а сборку перевести на build secrets
  • Риска нет: слой с `pip install` перезаписывается последующим `COPY`, и команда из истории исчезает

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела