аргументы сборки docker - аргументы сборки docker - аргументы сборки docker

Аргументы сборки Docker: скрытый вектор секретных утечек в образах

Аргументы сборки: удобство, которое может поставить под угрозу безопасность

Аргументы сборки Docker упрощают передачу значений конфигурации во время сборки, но у них есть одна часто упускаемая из виду проблема: эти аргументы сохраняются в метаданных и слоях образа. Разработчики часто предполагают, что эти значения исчезают после сборки, но на самом деле инструкции Docker, содержащие аргументы сборки, встраивают их в историю образа Docker.

⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.

Любой, кто бежит история докера or докер проверить найдет api_key Значение, встроенное в метаданные образа. Это происходит из-за инструкции Docker build arg commitкаждый шаг сборки как постоянный слой.

Защищенная версия:

Образовательная заметка: Избегайте внедрения секретов через аргументы сборки Docker. Используйте –секретный BuildKit предоставляет монтирования для конфиденциальных данных; они никогда не сохраняются в слоях или метаданных.

Как секреты сохраняются в слоях и метаданных

Каждая инструкция в Dockerfile создаёт новый слой образа. Даже при перезаписи или удалении файлов предыдущие слои остаются в кэше. Вот почему секреты, внедренные с помощью аргументов сборки Docker или аргументов сборки Docker, сохраняются неограниченное время.

⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.

. ARG таким образом токен встраивается в слой изображения, видимый через проверка образа докера или извлечены из кэша. Защищенная версия:

Образовательная заметка: При его использовании конфиденциальные данные сохраняются в истории. Вместо этого используйте временные секретные монтировки для защиты токенов и учётных данных.

Распространенные ошибки конфигурации в CI/CD Pipelines

In современный pipelines, разработчики часто передают секреты через CI/CD Среды, использующие аргументы Docker или общие кэши. Эта привычка приводит к утечке секретных данных в журналы, исполнители и кэши реестра. С общими бегунами в Действия GitHub, GitLab CI или Jenkins , эти секреты могут легко распространиться на несвязанные с ними рабочие места.

⚠️Небезопасный пример, только для образовательных целей. Не использовать в продакшене.

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

Образовательная заметка: Избежать –build-arg для секретов. В CI/CDСекреты никогда не должны передаваться через переменные окружения или журналы. Всегда отдавайте предпочтение временным секретным монтированиям.

Лучшие практики по предотвращению раскрытия секретной информации

Предотвращение раскрытия секретной информации начинается с признания того, что аргументы сборки Docker изначально являются открытыми. Они отлично подходят для настройки (например, для тегов версий или флагов функций), но не для учётных данных.

Лучшие практики

  1. Использовать BuildKit — секрет для конфиденциальных данных.
  2. Никогда не определяйте секреты через ARG или ENV.
  3. Добавить .env, секреты/ и config / каталоги для .dockerignore.
  4. Применяйте многоэтапные сборки для изоляции частных сцен.
  5. Очистить кеши после деликатных этапов сборки.
  6. Проверить метаданные изображения с историей Docker перед публикацией.

Мини-профилактический контрольный список

  • Аудит всех Dockerfiles на предмет сборка аргументов Docker Применение.
  • Заменить учетные данные на BuildKit –секретный.
  • Обеспечивать .dockerignore исключает конфиденциальные файлы.
  • Sanitize CI/CD переменные среды.
  • Автоматизируйте секретное сканирование перед отправкой изображений.

Образовательная заметка: Если значение передается через аргумент сборки Docker, оно становится постоянным. Используйте секретные монтирования и изолированные этапы сборки для защиты конфиденциальных данных.

Обнаружение небезопасного использования аргументов сборки перед развертыванием

Автоматизированное сканирование необходимо для выявления рискованных шаблонов аргументов сборки Docker до того, как образ будет запущен в производство. Такие инструменты, как Мелочь, Хадолинт и Ксигени может обнаруживать учетные данные, встроенные в Dockerfiles или слои образов.

Функциональный фрагмент с контекстом и защитой управления

Этот шаг действует как превентивный контроль, блокируя небезопасные инструкции Docker аргументов сборки перед развертыванием.

Образовательная заметка: Интегрируйте сканирование Dockerfile как обязательное CI/CD Этап. Автоматизированные инструменты помогают обеспечить единообразную и безопасную гигиену сборки.

Как Xygeni защищает от утечек секретной информации во время сборки

Ксигени Секреты безопасности обеспечивает специализированное обнаружение неправильного использования аргументов Docker. Он выявляет небезопасные определения ARG, отслеживает секретные значения на этапах сборки и отмечает остаточные учетные данные в метаданных изображения или кэшированных слоях. Интеграция с вашим CI/CD pipeline, он применяет политики безопасности Docker build arg перед слияниями или выпусками.

Функциональный фрагмент, пример контекстного применения

Добавьте эту работу в свой список pipelineэтап проверки для непрерывной защиты.

Образовательная заметка: Xygeni автоматически применяет безопасные практики Docker, предотвращая утечку секретов между средами из-за рискованных конфигураций времени сборки.

Итог: Docker никогда не должен обрабатывать секреты с помощью аргументов сборки

Аргументы сборки Docker — палка о двух концах: удобны для конфигурирования, рискованны для секретов. Каждое внедряемое вами значение Docker-сборки может сохраняться в метаданных, истории образов или кэшах.
Защитите свои сборки следующими способами:

  • Использование BuildKit –секретный для получения учетных данных.
  • Изоляция конфиденциальных данных в многоэтапных сборках.
  • Сканирование на предмет утечки значений перед развертыванием.
  • Обеспечение соблюдения политик безопасности посредством Xygeni Code Security.

Ваша сборка pipeline Безопасность зависит от уровня секретности, который вы не раскрываете. Рассматривайте каждый аргумент сборки Docker как потенциальный вектор раскрытия и блокируйте его до того, как злоумышленники его обнаружат.

sca-инструменты-программное обеспечение-композиция-анализ-инструменты
Расставьте приоритеты, устраните и защитите риски, связанные с программным обеспечением
Получите бесплатный аккаунт.
Нет необходимости кредитную карту.

Защитите свою разработку и доставку программного обеспечения

с пакетом продуктов Xygeni