Безопасность зависимостей и цепочки поставок (SCA)
Защитите конвейер от уязвимых сторонних пакетов с помощью анализа состава программного обеспечения, Dependabot, проверки зависимостей и закреплённых действий
«Безопасность зависимостей и цепочки поставок (SCA)» — бесплатный урок CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения CI/CD with GitHub Actions & DevOps Pipelines, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Риск цепочки поставок
Современные приложения в основном создаются из сторонних зависимостей. Один уязвимый пакет в глубине дерева зависимостей может поставить под угрозу всё приложение.
Это риск, связанный с цепочкой поставок программного обеспечения, и его обеспечение безопасности — важная часть DevSecOps.
Что такое SCA
Анализ состава программного обеспечения (SCA) сканирует зависимости вашего проекта и сравнивает их с базами данных известных уязвимостей (CVE).
В отличие от SAST, который проверяет ваш код, SCA сосредоточен на подключаемых вами библиотеках.
- Обнаруживает версии с известными уязвимостями
- Выявляет рискованные или несовместимые лицензии
- Предлагает безопасные версии для обновления
Оповещения Dependabot
GitHub предоставляет Dependabot, который непрерывно сканирует файлы манифестов и создаёт оповещения, если зависимость содержит известную уязвимость.
Включить его можно в разделе Настройки > Безопасность кода и анализ. Оповещения появляются на вкладке безопасности с указанием степени серьёзности.
Автоматические обновления зависимостей
Dependabot также может автоматически открывать запросы на слияние для обновления уязвимых зависимостей. Настройте его с помощью файла dependabot.yml.
version: 2
updates:
- package-ecosystem: npm
directory: /
schedule:
interval: weeklyПроверка зависимостей в PR
Действие проверки зависимостей выполняется для запросов на слияние и блокирует слияние, если PR добавляет зависимость с известной уязвимостью.
Это переносит проверку безопасности на более ранний этап и позволяет обнаружить рискованные пакеты до их попадания в основную ветку.
- name: Dependency Review
uses: actions/dependency-review-action@v4
with:
fail-on-severity: highФиксация версий действий
Действия, которые вы вызываете в рабочем процессе, сами являются зависимостями. Ссылка на @v4 означает доверие к тому, кто управляет этим тегом.
Для максимальной безопасности зафиксируйте действия на полном SHA коммита, который невозможно изменить.
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11Важность файлов блокировки
Файл блокировки, например package-lock.json или poetry.lock, фиксирует точные версии зависимостей и хеши.
В среде непрерывной интеграции используйте детерминированную команду установки, чтобы сборки можно было воспроизводить и чтобы незаметно не загружалась изменённая версия.
- name: Install (locked)
run: npm ciСоздание SBOM
Список компонентов программного обеспечения (SBOM) — это полный перечень всех компонентов вашей сборки. Для соблюдения требований он требуется всё чаще.
GitHub может экспортировать SBOM в формате SPDX, а такие инструменты, как Syft, могут создавать его непосредственно в среде непрерывной интеграции.
- name: Generate SBOM
uses: anchore/sbom-action@v0
with:
format: spdx-jsonСоблюдение требований лицензий
SCA также охватывает лицензионные риски. Подключение библиотеки с лицензией GPL к проприетарному продукту может создать юридические обязательства.
Настройте средство сканирования так, чтобы оно отмечало или отклоняло запрещённые лицензии и чтобы проблема выявлялась в среде непрерывной интеграции, а не во время аудита.
Сбой сборки
Обнаружение помогает только в том случае, если оно останавливает небезопасный код. Настройте проверки SCA так, чтобы конвейер завершался ошибкой при обнаружении критической уязвимости.
Задайте порог серьёзности: для находок с низким риском выводите предупреждение, а критические находки используйте для блокировки слияния или развёртывания.
with:
fail-on-severity: criticalНепрерывный мониторинг
Новые уязвимости раскрываются ежедневно, поэтому однократного сканирования недостаточно. Запускайте SCA по расписанию и для каждого PR.
Так можно обнаружить пакеты, которые были безопасными на момент слияния, но позднее стали уязвимыми.
on:
schedule:
- cron: '0 6 * * 1'Быстрая проверка
Проверьте, насколько хорошо вы понимаете безопасность цепочки поставок.
Повторение
Вы научились защищать цепочку поставок программного обеспечения.
- SCA сканирует зависимости на наличие известных уязвимостей
- Dependabot создаёт оповещения и автоматически обновляет рискованные пакеты
- Проверка зависимостей блокирует рискованные PR
- Фиксируйте действия на SHA, используйте файлы блокировки и создавайте SBOM
В сочетании с SAST и управлением секретами это обеспечивает полноценную защиту конвейера.
Часто задаваемые вопросы
Урок «Безопасность зависимостей и цепочки поставок (SCA)» бесплатный?
Да — полный текст урока «Безопасность зависимостей и цепочки поставок (SCA)» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс CI/CD with GitHub Actions & DevOps Pipelines, подпишись на CoddyKit PRO. Курс CI/CD with GitHub Actions & DevOps Pipelines содержит 4 уроков всего.
Чему я научусь в уроке «Безопасность зависимостей и цепочки поставок (SCA)»?
Защитите конвейер от уязвимых сторонних пакетов с помощью анализа состава программного обеспечения, Dependabot, проверки зависимостей и закреплённых действий Ты практикуешь CI/CD with GitHub Actions & DevOps Pipelines с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать CI/CD with GitHub Actions & DevOps Pipelines?
Предыдущий опыт не требуется. CI/CD with GitHub Actions & DevOps Pipelines на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Безопасность зависимостей и цепочки поставок (SCA)»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке CI/CD with GitHub Actions & DevOps Pipelines?
Да. Каждый урок CI/CD with GitHub Actions & DevOps Pipelines включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Лучшие практики безопасности в CI/CD
- Управление секретами с GitHub
- Статическое тестирование безопасности приложений (SAST)
- Безопасность зависимостей и цепочки поставок (SCA)