Эта статья является частью серии "Внедрение GitHub Advanced Security в большом масштабе". Предыдущую статью этой серии см. в разделе Этап 4. Создание внутренней документации.
Включение проверки кода
Используя данные, сопоставленные на этапе 2, можно приступить к включению GHAS, а затем и code scanning в репозиториях — по одному языку за раз. Пошаговый процесс включения GHAS должен выглядеть следующим образом.
- Включите GHAS в репозитории. Дополнительные сведения см. в разделе Управление параметрами безопасности и анализа для репозитория.
- Создайте запрос на вытягивание в ветви репозитория по умолчанию с файлом
codeql-analysis.yml
, содержащим пример запуска CodeQL для этого языка. Дополнительные сведения см. в разделе Создание запроса на включение изменений. - Создайте проблему в репозитории, чтобы объяснить, почему был вызван запрос на вытягивание. Созданная проблема может содержать ссылку на предыдущее сообщение, отправленное всем пользователям, но также может объяснить, какие изменения внесены в запрос на вытягивание, какие дальнейшие действия необходимо предпринять команде, каковы обязанности команды и как команда должна использовать code scanning. Дополнительные сведения см. в разделе Создание проблемы.
Существует общедоступный инструмент, который выполняет первые два шага — ghas-enablement. Вы можете повторно запускать инструмент ghas-enablement для разных языков там, где это имеет смысл. Например, JavaScript, TypeScript, Python и Go, скорее всего, имеют аналогичный процесс сборки и могут использовать один файл анализа CodeQL. Инструмент ghas-enablement можно также использовать для таких языков, как Java, C и C++, но из-за различных особенностей сборки и компиляции этих языков может потребоваться создать более узкоспециализированные файлы анализа CodeQL.
Примечание. Если вы планируете использовать GitHub Actions для управления code scanning и не используете инструмент ghas-enablement, имейте в виду, что доступ к каталогу .github/workflow
через API отсутствует. Это означает, что не получится создать сценарий без клиента git, лежащего в основе автоматизации. Обходной путь — использовать сценарии bash на компьютере или в контейнере с клиентом git. Клиент git может отправлять и извлекать файлы в каталог .github/workflows
, в котором находится файл codeql-analysis.yml
.
Важно не просто отправить файл codeql-analysis.yml
в ветвь репозитория по умолчанию. Используя запрос на вытягивание, команда разработчиков может просматривать и объединять права владения, позволяя команде разработчиков узнать о code scanning и участвовать в этом процессе.
Необходимо записать URL-адреса запроса на вытягивание, созданные службой автоматизации, и проверять каждую неделю на наличие каких-либо действий и смотреть, какие из них закрыты. Через несколько недель может потребоваться создать другую проблему или отправить внутренние сообщения электронной почты, если запрос на вытягивание остается не объединенным.
Создание профильных специалистов
Затем можно перейти к следующему этапу включения, на котором создаются внутренние профильные специалисты и организуются встречи в компании. Открытие запросов и проблем с запросами на вытягивание в репозиториях, скорее всего, покроет большую часть внедрения, но это не позволит решить разовые варианты использования, когда для конкретного процесса сборки, платформы или библиотеки необходимо включить определенные флаги функций. Для обеспечения высокого уровня внедрения необходим более персонализированный и практический подход, особенно для языков Java, C и C++.
Рекомендуется проводить регулярные собрания в компании по конкретным темам, чтобы просвещать и обсуждать развертывание с более широкой группой. Это гораздо эффективнее для предприятия с тысячами репозиториев по сравнению с работой с одной командой за раз. Команды могут приходить на сессии, которые имеют отношение к ним. Некоторые примеры сеансов, которые были запущены ранее, включают следующие.
- Code scanning в контейнере
- Code scanning & java struts
- Code scanning & JSP
Вы можете использовать собранные данные о распределении различных языков между репозиториями для создания целевых собраний.
Следующую статью этой серии см. в разделе Этап 6. Развертывание и масштабирование сканирования секретов.