Skip to main content

Этап 5. Развертывание и масштабирование проверки кода

Можно использовать доступные API-интерфейсы для программного развертывания code scanning отдельно по командам и по языкам в организации с помощью собранных ранее данных репозитория.

Эта статья является частью серии "Внедрение GitHub Advanced Security в большом масштабе". Предыдущие статьи в этой серии см. в разделе "Этап 4. Создание внутренней документации".

Включение проверки кода

Используя данные, которые вы сопоставляете на этапе 2, вы можете начать включать GHAS, а затем code scanning в репозиториях, один язык за раз. Пошаговый процесс включения GHAS должен выглядеть следующим образом.

  1. Включите GHAS в репозитории. Дополнительные сведения см. в разделе Управление параметрами безопасности и анализа для репозитория.
  2. Создайте запрос на вытягивание для ветвь по умолчанию репозитория с codeql-analysis.yml файлом, содержащим пример запуска CodeQL для этого языка. Дополнительные сведения см. в разделе Создание запроса на включение изменений.
  3. Создайте проблему в репозитории, чтобы объяснить, почему был вызван запрос на вытягивание. Созданная проблема может содержать ссылку на предыдущее сообщение, отправленное всем пользователям, но также может объяснить, какие изменения внесены в запрос на вытягивание, какие дальнейшие действия необходимо предпринять команде, каковы обязанности команды и как команда должна использовать code scanning. Дополнительные сведения см. в разделе Создание проблемы.

Существует общедоступный инструмент, который выполняет первые два шага — ghas-enablement. Вы можете повторно запускать инструмент ghas-enablement для разных языков там, где это имеет смысл. Например, JavaScript, TypeScript, Python и Go, скорее всего, имеют аналогичный процесс сборки и могут использовать аналогичный файл анализа CodeQL. Средство включения ghas также можно использовать для таких языков, как Java, C и C++, но из-за различных особенностей сборки и компиляции этих языков может потребоваться создать более целевые файлы анализа CodeQL.

Note

Если вы планируете использовать GitHub Actions для управления code scanning и не используете средство включения ghas, помните, что доступ к .github/workflow каталогу отсутствует. Это означает, что не получится создать сценарий без клиента git, лежащего в основе автоматизации. Обходной путь — использовать сценарии bash на компьютере или в контейнере с клиентом git. Клиент git может отправлять и извлекать файлы в каталог .github/workflows, в котором находится файл codeql-analysis.yml.

Важно не просто отправить файл codeql-analysis.yml в ветвь репозитория по умолчанию. Используя запрос на вытягивание, команда разработчиков может просматривать и объединять права владения, позволяя команде разработчиков узнать о code scanning и участвовать в этом процессе.

Необходимо записать URL-адреса запроса на вытягивание, созданные службой автоматизации, и проверять каждую неделю на наличие каких-либо действий и смотреть, какие из них закрыты. Через несколько недель может потребоваться создать другую проблему или отправить внутренние сообщения электронной почты, если запрос на вытягивание остается не объединенным.

Создание предметной экспертизы

Затем вы можете перейти к следующему этапу включения, который создает внутренние эксперты по темам (или SMEs) и упорядочивает собрания компании. Открытие запросов и проблем с запросами на вытягивание в репозиториях, скорее всего, покроет большую часть внедрения, но это не позволит решить разовые варианты использования, когда для конкретного процесса сборки, платформы или библиотеки необходимо включить определенные флаги функций. Для обеспечения высокого уровня внедрения необходим более персонализированный и практический подход, особенно для языков Java, C и C++.

Рекомендуется проводить регулярные собрания в компании по конкретным темам, чтобы просвещать и обсуждать развертывание с более широкой группой. Это гораздо эффективнее для предприятия с тысячами репозиториев по сравнению с работой с одной командой за раз. Команды могут приходить на сессии, которые имеют отношение к ним. Некоторые примеры сеансов, которые были запущены ранее, включают следующие.

  • Code scanning в контейнере
  • Code scanning и Java Struts
  • Code scanning и JSP

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

В следующей статье этой серии см. раздел "Этап 6. Развертывание и масштабирование сканирования секретов".