Skip to main content

Использование сканирования кода с существующей системой CI

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

Кто может использовать эту функцию?

Пользователи с доступом на запись

Репозитории, принадлежащие организации, с включенными GitHub Advanced Security

Note

Администратор сайта должен включить code scanning перед использованием этой функции. Дополнительные сведения см. в разделе Настройка сканирования кода для устройства.

Возможно, вы не сможете включить или отключить code scanning , если владелец предприятия установил политику GitHub Advanced Security (GHAS) на корпоративном уровне. Дополнительные сведения см. в разделе Применение политик безопасности кода и анализа для вашего предприятия.

Сведения об использовании code scanning с существующей системой CI

В качестве альтернативы запуску code scanning в GitHub с помощью GitHub Actions, можно проанализировать код во внешней системе непрерывной интеграции или непрерывной доставки или развертывания (CI/CD), а затем передать результаты в GitHub Enterprise Server.

Вы можете добавить CodeQL CLI в стороннюю систему или использовать другое стороннее средство статического анализа, которое может создавать результаты в виде формата обмена статическими результатами анализа (SARIF) 2.1.0. Дополнительные сведения о поддерживаемом формате SARIF см. в разделе "Поддержка SARIF для проверки кода".

CodeQL CLI — это автономное средство командной строки, которое можно использовать для анализа кода. Дополнительные сведения см. в разделе «Сведения о интерфейсе командной строки CodeQL».

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

Note

Отправка данных SARIF для отображения как code scanning приводит к поддержке GitHub Enterprise Server для репозиториев, принадлежащих организации, с GitHub Advanced Security включено. Дополнительные сведения см. в разделе Управление параметрами безопасности и анализа для репозитория.

Настройка средства анализа

Сначала необходимо скачать средство анализа и настроить его с помощью системы CI.

Если вы используете CodeQL CLI, необходимо сделать все содержимое пакета CodeQL CLI доступным для каждого сервера CI, для которого требуется выполнить анализ CodeQL code scanning. Дополнительные сведения см. в разделе «Настройка интерфейса командной строки CodeQL».

После того как средство анализа доступно для серверов в системе CI, вы будете готовы к созданию данных.

Анализ кода

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

Затем вы можете выполнить шаги для анализа базы кода и создания результатов, которые будут отличаться в зависимости от используемого статического средства анализа.

Если вы используете CodeQL CLI, сначала необходимо создать базу данных CodeQL из кода, а затем проанализировать базу данных для получения результатов SARIF. Дополнительные сведения см. в разделе "[AUTOTITLE" и "Подготовка кода для анализа CodeQL](/code-security/codeql-cli/getting-started-with-the-codeql-cli/analyzing-your-code-with-codeql-queries)".

Создание маркера для проверки подлинности с помощью GitHub Enterprise Server

Каждому серверу CI требуется GitHub App или personal access token для отправки результатов в GitHub Enterprise Server, независимо от того, используются ли данные CodeQL CLI, REST API или другой метод. Необходимо использовать маркер доступа или GitHub App с разрешением на запись security_events. Если серверы CI уже используют маркер с этой областью для извлечения репозиториев из GitHub Enterprise Server, вы можете использовать тот же токен. В противном случае создайте новый маркер с разрешением на запись security_events и добавьте его в хранилище секретов системы CI. Дополнительные сведения см. в разделе "[AUTOTITLE" и "Создание приложений GitHub](/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)".

Дополнительные сведения о различных методах отправки результатов в GitHub Enterprise Serverсм. в разделе "Отправка файла SARIF в GitHub".

Отправка результатов в GitHub Enterprise Server

После анализа кода вы создали результаты SARIF и убедитесь, что вы можете пройти проверку подлинности с помощью GitHub Enterprise Server, вы можете передать результаты в GitHub Enterprise Server. Дополнительные сведения о различных методах, которые можно использовать для отправки результатов, см. в разделе "Отправка файла SARIF в GitHub".

Дополнительные сведения о передаче результатов в GitHub Enterprise Server с помощью CodeQL CLIсм. в разделе "Отправка результатов анализа CodeQL в GitHub".

По умолчанию code scanning ожидается один файл результатов SARIF по каждому анализу для репозитория. Следовательно, когда вы загружаете второй файл результатов SARIF для фиксации, он рассматривается как замена исходного набора данных. Вы можете отправить два разных ФАЙЛА SARIF для одного анализа, если, например, средство анализа создает другой ФАЙЛ SARIF для каждого языка, который он анализирует или каждый набор правил, которые он использует. Если вы хотите отправить несколько наборов результатов для фиксации в репозитории, необходимо определить каждый набор результатов как уникальный набор. Способ указания категории для отправки SARIF зависит от метода анализа. Дополнительные сведения см. в разделе «Поддержка SARIF для проверки кода».