0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Урок

Безопасность зависимостей и цепочки поставок (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 — локальная установка не требуется.

Все уроки этого курса

  1. Лучшие практики безопасности в CI/CD
  2. Управление секретами с GitHub
  3. Статическое тестирование безопасности приложений (SAST)
  4. Безопасность зависимостей и цепочки поставок (SCA)
← Назад к CI/CD with GitHub Actions & DevOps Pipelines