Проверка безопасности образов контейнеров
Интегрируйте инструменты проверки образов в конвейер CI/CD, чтобы выявлять уязвимости в образах Docker.
«Проверка безопасности образов контейнеров» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.
Зачем сканировать образы контейнеров?
Образы контейнеров — основа современных приложений. Как и любое программное обеспечение, они могут содержать скрытые уязвимости. Сканирование образов — важная практика, помогающая обнаружить эти уязвимости до развёртывания приложений.
Это помогает убедиться, что используемое вами программное обеспечение защищено и не содержит известных уязвимостей.

Скрытые опасности в образах
Какие уязвимости могут скрываться в образах контейнеров?
- Устаревшие базовые образы: использование старых версий операционных систем (например, Ubuntu или Alpine), содержащих известные уязвимости.
- Уязвимые библиотеки: любые дополнительные программные пакеты или зависимости, устанавливаемые в образ, могут содержать уязвимости (CVE).
- Неправильные настройки: хотя сканирование в первую очередь выявляет известные CVE, ненадлежащие настройки также могут создавать риски.
Как работают сканеры образов
Сканеры образов контейнеров выполняют следующие действия:
- Анализируют слои: проверяют каждый слой образа Docker.
- Извлекают компоненты: определяют все установленные пакеты, библиотеки и зависимости (например, пакеты OS, библиотеки Python и модули Node.js).
- Сопоставляют с базами данных: сравнивают эти компоненты с обширными регулярно обновляемыми базами данных уязвимостей (например, базами CVE).
- Создают отчёты: предоставляют подробный список обнаруженных уязвимостей, их степени важности и, зачастую, рекомендуемых исправлений.
Инструменты для работы
Для сканирования образов контейнеров доступны несколько мощных инструментов с открытым исходным кодом и коммерческих решений:
- Trivy: популярный сканер с открытым исходным кодом, известный удобством использования и широким охватом.
- Clair: ещё один надёжный вариант с открытым исходным кодом, часто интегрируемый в крупные реестры контейнеров.
- Docker Scout (через
docker scan): встроен в Docker Desktop и использует базу данных уязвимостей Snyk для быстрого локального сканирования.
Локальное сканирование образа
Выполним быстрое сканирование распространённого образа Docker с помощью встроенной команды docker scan. Эта команда использует Docker Scout (на базе Snyk), чтобы проверить наличие уязвимостей.
Попробуйте выполнить этот пример:
docker scan nginx:latestАнализ результатов
После сканирования Вы получите отчёт. Обратите внимание на следующие сведения:
- Идентификатор CVE: уникальный идентификатор уязвимости (например, CVE-2023-1234).
- Уровень критичности: степень опасности уязвимости (например, критический, высокий, средний или низкий).
- Пакет: конкретный программный компонент или библиотека, содержащие уязвимость.
- Исправленная версия: часто в отчёте предлагается версия пакета или базового образа, устраняющая проблему.
Сканирование в рабочем процессе
Настоящая ценность сканирования образов проявляется при интеграции этой процедуры в рабочий процесс разработки. Добавив сканирование в Ваш конвейер непрерывной интеграции (CI), Вы сможете:
- Рано обнаруживать проблемы: выявлять уязвимости сразу после фиксации нового кода или сборки образа.
- Автоматизировать проверки безопасности: сделать безопасность стандартной автоматизированной частью процесса сборки.
- Предотвращать развёртывание: настроить конвейер CI так, чтобы сборка завершалась с ошибкой при обнаружении критических уязвимостей и небезопасные образы не попадали в рабочую среду.
Автоматизация сканирования с помощью CI
Ниже приведён концептуальный фрагмент, показывающий, как можно интегрировать сканирование Trivy в рабочий процесс GitHub Actions. Это гарантирует автоматическую проверку каждого собранного образа.
# .github/workflows/scan.yml
name: Image Scan
on:
push:
branches: [ main ]
jobs:
build-and-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Build Docker Image
run: docker build -t my-app:latest .
- name: Run Trivy Scan
uses: aquasecurity/trivy-action@master
with:
image-ref: 'my-app:latest'
format: 'table'
exit-code: '1' # Fail build on critical issuesУстранение обнаруженных проблем
Обнаружить уязвимости — это только половина дела; необходимо также их устранить! Вот распространённые стратегии устранения проблем:
- Обновляйте базовые образы: всегда используйте последние исправленные версии выбранного базового образа.
- Сокращайте зависимости: устанавливайте только те пакеты, которые абсолютно необходимы для работы приложения.
- Используйте многоэтапные сборки: применяйте многоэтапные Dockerfile, чтобы уменьшить размер итогового образа и удалить инструменты сборки, не нужные во время выполнения.
- Устанавливайте исправления: применяйте доступные конкретные исправления безопасности для уязвимых компонентов.
Проверка сканирования
Сканирование образов — важная часть безопасной разработки контейнеров. Проверьте, насколько хорошо Вы поняли материал.
Основные выводы
Вы узнали о важной роли сканирования безопасности образов контейнеров:
- Оно выявляет известные уязвимости (CVE) в базовых образах и зависимостях.
- Такие инструменты, как Trivy, Clair и Docker Scout, помогают автоматизировать этот процесс.
- Интеграция сканирования в конвейер CI/CD обеспечивает раннее обнаружение проблем и предотвращает развёртывание небезопасных образов.
- Регулярно обновляйте образы и сокращайте количество зависимостей, чтобы уменьшить поверхность атаки.
Продолжайте сканировать образы, чтобы поддерживать высокий уровень безопасности!
Часто задаваемые вопросы
Урок «Проверка безопасности образов контейнеров» бесплатный?
Да — полный текст урока «Проверка безопасности образов контейнеров» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Проверка безопасности образов контейнеров»?
Интегрируйте инструменты проверки образов в конвейер CI/CD, чтобы выявлять уязвимости в образах Docker. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Проверка безопасности образов контейнеров»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Проверка безопасности образов контейнеров
- Безопасность контейнеров во время выполнения
- Управление секретами и RBAC
- Сетевые политики и минимальные привилегии в сети