Skip to main content

Использование функций безопасности GitHub для защиты использования GitHub Actions

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

Сведения о функциях безопасности GitHub

GitHub предоставляет множество функций, чтобы сделать код более безопасным. Встроенные функции %% данных variables.product.prodname_dotcom %}можно использовать для понимания действий, от которых зависят рабочие процессы, убедитесь, что вы уведомляете об уязвимостях в используемых действиях или автоматизируете процесс хранения действий в рабочих процессах. При публикации и обслуживании действий можно использовать GitHub для взаимодействия с сообществом об уязвимостях и их устранении. Дополнительные сведения о функциях безопасности, которые GitHub предлагают, см. в разделе "Функции безопасности GitHub".

В этой статье объясняется, как использовать некоторые функции безопасности GitHub, чтобы повысить безопасность использования GitHub Actions.

Общие сведения о зависимостях в рабочих процессах

Вы можете использовать граф зависимостей для изучения действий, используемых рабочими процессами в репозитории. Граф зависимостей представляет собой сводку файлов манифеста и блокировки, хранящихся в репозитории. Он также распознает файлы в ./github/workflows/ виде манифестов, что означает, что любые действия или рабочие процессы, на которые ссылается синтаксис jobs[*].steps[*].uses , или jobs.<job_id>.uses будут проанализированы как зависимости.

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

  • Учетная запись или организация, которая владеет действием.
  • Файл рабочего процесса, ссылающийся на действие.
  • Версия или SHA, на которые закреплено действие.

В граф зависимостей зависимости автоматически сортируются по серьезности уязвимостей. Если какие-либо из действий, которые вы используете, имеют рекомендации по безопасности, они будут отображаться в верхней части списка. Вы можете перейти к рекомендации из граф зависимостей и инструкции по доступу для разрешения уязвимости.

Граф зависимостей включен для общедоступных репозиториев, и его можно включить в частных репозиториях. Дополнительные сведения об использовании граф зависимостей см. в разделе "Изучение зависимостей репозитория".

Учитывая уязвимости безопасности в действиях, которые вы используете

Для действий, доступных в Marketplace, GitHub проверяет связанные советы по безопасности, а затем добавляет эти рекомендации к GitHub Advisory Database. Вы можете выполнить поиск в базе данных действий, используемых для поиска сведений о существующих уязвимостях и инструкциях по их устранению. Чтобы упростить поиск, используйте фильтр GitHub Actions в GitHub Advisory Database.

Вы можете настроить репозитории, чтобы вы:

Мониторинг действий в рабочих процессах

Вы можете использовать Dependabot для отслеживания действий в рабочих процессах и включения Dependabot alerts для уведомления о том, когда используемое действие имеет уязвимость. Dependabot выполняет сканирование ветвь по умолчанию репозиториев, в которых она включена для обнаружения небезопасных зависимостей. Dependabot создает Dependabot alerts при добавлении нового рекомендации в GitHub Advisory Database или при обновлении действия.

Примечание. Dependabot создает оповещения только для уязвимых действий, использующих семантический управление версиями и не создавая оповещения для действий, закрепленных в значениях SHA.

Вы можете включить Dependabot alerts для личная учетная запись, репозитория или организации. Дополнительные сведения см. в разделе "Настройка оповещений Dependabot".

Вы можете просмотреть все открытые и закрытые Dependabot alerts и соответствующие Dependabot security updates на вкладке Dependabot alerts в репозитории. Дополнительные сведения см. в разделе "Просмотр и обновление оповещений Dependabot".

Проверка действий по уязвимостям в новых или обновленных рабочих процессах

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

  • Добавленные, удаленные и обновленные зависимости, а также даты их выпуска.
  • Количество проектов, в которых используются эти компоненты.
  • Данные об уязвимостях для этих зависимостей.

Если какие-либо изменения, внесенные в рабочие процессы, помечены как уязвимые, вы можете избежать их добавления в проект или обновить их до безопасной версии.

Дополнительные сведения о проверке зависимостей см. в разделе "[AUTOTITLE" и "Сведения о проверке зависимостей](/code-security/supply-chain-security/understanding-your-software-supply-chain/configuring-dependency-review)".

Вы можете использовать в репозитории для принудительного применения dependency-review-action проверок зависимостей в запросах на вытягивание. Это действие проверяет наличие уязвимых версий зависимостей, представленных изменениями версии пакета в запросах на вытягивание, и предупреждает о связанных с ними уязвимостях системы безопасности. Это позволяет лучше отслеживать изменения в запросе на вытягивание и предотвращать добавление уязвимостей в репозиторий.

Снимок экрана: запуск рабочего процесса, использующий действие проверки зависимостей.

По умолчанию проверка Действие проверки зависимостей произойдет сбой, если он обнаруживает уязвимые пакеты. Ошибка проверки блокирует объединение запроса на вытягивание, если владелец репозитория потребовал обязательную проверку зависимостей. Дополнительные сведения см. в разделе Сведения о защищенных ветвях.

Обеспечение безопасности и актуальности действий в рабочих процессах

Вы можете использовать Dependabot для обеспечения актуальности ссылок на действия и повторно используемых рабочих процессов в репозитории. Действия часто обновляются с помощью исправлений ошибок и новых функций, чтобы сделать автоматизированные процессы более быстрыми, безопасными и более надежными. Dependabot берет на себя усилия по поддержанию зависимостей, так как это делается автоматически. Дополнительные сведения см. в разделе "[AUTOTITLE" и "Поддержка актуальности действий с помощью Dependabot](/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates)".

Следующие функции могут автоматически обновлять действия в рабочих процессах.

  • Dependabot version updates откройте запросы на вытягивание, чтобы обновить действия до последней версии при выпуске новой версии.
  • Dependabot security updates откройте запросы на вытягивание для обновления действий с обнаруженными уязвимостями до минимальной исправленной версии.

Примечания:

  • Dependabot поддерживает только обновления GitHub Actions с помощью синтаксиса репозитория GitHub репозитория.actions/checkout@v4 Dependabot игнорирует действия или повторно используемые рабочие процессы, на которые ссылается локально (например, ./.github/actions/foo.yml).
  • Docker Hub и GitHub Packages Container registry URL-адреса в настоящее время не поддерживаются. Например, ссылки на действия контейнера Docker с использованием docker:// синтаксиса не поддерживаются.
  • Dependabot поддерживает общедоступные и частные репозитории для GitHub Actions. Параметры конфигурации частного реестра см. в разделе "gitПараметры конфигурации для файла dependabot.yml".

Сведения о настройке Dependabot version updatesсм. в разделе "Настройка обновлений версий Dependabot".

Сведения о настройке Dependabot security updatesсм. в разделе "Настройка обновлений для системы безопасности Dependabot".

Защита созданных действий

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

Если вы являетесь кем-то, кто поддерживает действие, используемое в других проектах, вы можете использовать следующие функции GitHub для повышения безопасности опубликованных действий.

  • Используйте представление зависимостей в графе зависимостей, чтобы узнать, какие проекты зависят от кода. Если вы получаете отчет об уязвимостях, вы получите представление о том, с кем нужно взаимодействовать с уязвимостью и как ее исправить. Дополнительные сведения см. в разделе Изучение зависимостей репозитория.
  • Используйте рекомендации по безопасности репозитория для создания рекомендаций по безопасности, частной совместной работы для устранения уязвимости во временной закрытой вилке и публикации рекомендаций по безопасности для оповещения сообщества об уязвимости после выпуска исправления. Дополнительные сведения см. в разделе "[AUTOTITLE" и "Настройка отчетов о частных уязвимостях для репозитория](/code-security/security-advisories/working-with-repository-security-advisories/creating-a-repository-security-advisory)".