Примечание. Администратор сайта должен включить code scanning для ваш экземпляр GitHub Enterprise Server, прежде чем использовать эту функцию. Дополнительные сведения см. в разделе Настройка сканирования кода для устройства.
Возможно, вы не сможете включить или отключить code scanning , если владелец предприятия установил политику GitHub Advanced Security (GHAS) на корпоративном уровне. Дополнительные сведения см. в разделе Применение политик безопасности кода и анализа для вашего предприятия.
CodeQL — это система анализа кода, разработанная GitHub для автоматизации проверок безопасности. Код можно проанализировать, используя CodeQL, и отобразить результаты в виде оповещений code scanning.
Существует три основных способа использования анализа данных CodeQL для code scanning:
-
Используйте настройку по умолчанию, чтобы быстро настроить анализ CodeQL для code scanning в репозитории. Настройка по умолчанию автоматически выбирает языки для анализа, набора запросов для выполнения и событий, которые активируют сканирование. Если вы предпочитаете, вы можете вручную выбрать набор запросов, чтобы запустить и языки для анализа. После включения CodeQL{ GitHub Actions выполняет рабочий процесс для сканирования кода. Дополнительные сведения см. в разделе Настройка настройки по умолчанию для сканирования кода.
-
Используйте расширенную настройку, чтобы добавить в репозиторий рабочий процесс CodeQL. При этом создается настраиваемый файл рабочего процесса, который использует действие github/codeql-action для запуска CodeQL CLI. Дополнительные сведения см. в разделе Настройка расширенной настройки для сканирования кода.
-
Запустите CodeQL CLI непосредственно во внешней системе CI и отправьте результаты в GitHub. Дополнительные сведения см. в разделе Использование сканирования кода с существующей системой CI.
Сведения о оповещениях code scanning см. в разделе "О предупреждениях о сканировании кода".
Сведения о CodeQL
CodeQL обрабатывает код как данные, что позволяет находить потенциальные уязвимости в коде с большей уверенностью, чем при использовании традиционных статических анализаторов.
- Создается база данных CodeQL для представления базы кода.
- Затем выполняются запросы CodeQL к этой базе данных для выявления проблем в базе кода.
- Результаты запроса отображаются как оповещения code scanning в GitHub Enterprise Server при использовании CodeQL с code scanning.
CodeQL поддерживает как компилируемые, так и интерпретируемые языки и может находить уязвимости и ошибки в коде, написанном на поддерживаемых языках.
- C/C++
- C#
- Go
- Java и Kotlin
- JavaScript/TypeScript
- Python
- Ruby
- Swift
Примечания:
- Используйте
java-kotlin
для анализа кода, написанного на Java, Kotlin или обоих. - Используйте
javascript-typescript
для анализа кода, написанного в JavaScript, TypeScript или обоих.
Дополнительные сведения см. в документации на веб-сайте CodeQL: «Поддерживаемые языки и платформы».
Сведения о запросах CodeQL
Эксперты по GitHub, исследователи в области безопасности и участники сообщества пишут и поддерживают запросы по умолчанию CodeQL, используемые для code scanning. Запросы регулярно обновляются для улучшения анализа и уменьшения результатов ложноположительных результатов. Дополнительные сведения о запросах, доступных в пакетах по умолчанию и расширенных пакетах, см. в статье "Запросы, включенные в наборы запросов по умолчанию и расширенному обеспечению безопасности".
Написание собственных запросов
Запросы открытый код, поэтому вы можете просматривать и вносить вклад в запросы в репозитории github/codeql. Дополнительные сведения см. в разделе Сведения о CodeQL queries в документации CodeQL.
Выполнение дополнительных запросов
Если вы сканируете код с помощью расширенной установки или внешней системы CI, вы можете выполнять дополнительные запросы в рамках анализа.
Эти запросы должны принадлежать опубликованному пакету запросов CodeQL или пакету CodeQL в репозитории.
-
Когда пакет запросов CodeQL публикуется в GitHub Container registry, все транзитивные зависимости, необходимые запросам и кэш компиляции, включаются в пакет. Это повышает производительность и гарантирует, что выполнение запросов в пакете дает одинаковые результаты при каждом обновлении до новой версии пакета или CLI.
-
Пакеты запросов CodeQL можно скачать из нескольких реестров контейнеров GitHub . Дополнительные сведения см. в разделе Настройка расширенной настройки для сканирования кода.
Дополнительные сведения см. в разделе Настройка анализа с помощью пакетов CodeQL.