Эта статья является частью серии "Внедрение GitHub Advanced Security в большом масштабе". Предыдущую статью этой серии см. в разделе Этап 1. Согласование стратегии и целей развертывания.
Подготовка к включению code scanning
Code scanning — это функция, используемая для анализа кода в репозитории GitHub для поиска уязвимостей системы безопасности и ошибок кодирования. Все проблемы, обнаруженные в результате анализа, отображаются в GitHub Enterprise Server. Дополнительные сведения см. в разделе Сведения о проверке кода.
Развертывание code scanning в сотнях репозиториев может оказаться трудной задачей, особенно если делать это неэффективно. Следуя этим шагам, вы обеспечите эффективность и успешность развертывания. В рамках подготовки вы будете работать с командами, использовать автоматизацию для сбора данных о репозиториях и включать code scanning.
Подготовка команд к code scanning
Сначала подготовьте команды к использованию code scanning. Чем больше команд используют code scanning, тем больше данных у вас будет для реализации планов исправления и отслеживания хода развертывания. На этом этапе сосредоточьтесь на использовании API и проведении внутренних событий для включения.
Основной фокус должен быть направлен на подготовку к использованию code scanning как можно большего числа команд. Вы также можете предложить командам внести соответствующие исправления, но мы рекомендуем на этом этапе отдавать приоритет включению и использованию code scanning, а не устранению проблем.
Сбор сведений о репозиториях
Вы можете программно собирать сведения о различных языках программирования, используемых в репозиториях, и использовать эти данные для включения code scanning во всех репозиториях, использующих один и тот же язык, с помощью API GraphQL в GitHub Enterprise Server.
Примечание. Чтобы собрать эти данные без ручного выполнения запросов GraphQL, описанных в этой статье, можно использовать наш общедоступный инструмент. Дополнительные сведения см. в репозитории инструмента ghas-enablement.
Если вы хотите собрать сведения из репозиториев, принадлежащих нескольким организациям в предприятии, можно использовать приведенный ниже запрос, чтобы получить имена организаций, а затем передать их в запрос репозиториев. Замените OCTO-ENTERPRISE на имя вашего предприятия.
query {
enterprise(slug: "OCTO-ENTERPRISE") {
organizations(first: 100) {
totalCount
nodes {
name
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Вы можете определить, какие языки используют репозитории, с помощью сортировки репозиториев по языкам на уровне организации. Вы можете изменить приведенный ниже пример запроса GraphQL, заменив OCTO-ORG именем организации.
query {
organization(login: "OCTO-ORG") {
repositories(first: 100) {
totalCount
nodes {
nameWithOwner
languages(first: 100) {
totalCount
nodes {
name
}
}
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
Дополнительные сведения о выполнении запросов GraphQL см. в разделе Формирование вызовов с помощью GraphQL.
Затем преобразуйте данные из запроса GraphQL в доступный для чтения формат, например в таблицу.
Язык | Кол-во репозиториев | Имя репозиториев |
---|---|---|
JavaScript (TypeScript) | 4212 | org/repo org/repo |
Python | 2012 | org/repo org/repo |
Go | 983 | org/repo org/repo |
Java | 412 | org/repo org/repo |
Swift | 111 | org/repo org/repo |
Kotlin | 82 | org/repo org/repo |
C | 12 | org/repo org/repo |
В этой таблице вы можете отфильтровать языки, которые в настоящее время не поддерживаются GitHub Advanced Security.
Если у вас есть репозитории с несколькими языками, можно отформатировать результаты GraphQL, как показано в таблице ниже. Отфильтруйте языки, которые не поддерживаются, но оставьте репозитории с по крайней мере одним поддерживаемым языком. Вы можете включить code scanning в этих репозиториях, и все поддерживаемые языки будут проверяться.
Языки | Кол-во репозиториев | Имя репозиториев |
---|---|---|
JavaScript/Python/Go | 16 | org/repo org/repo |
Rust/TypeScript/Python | 12 | org/repo org/repo |
Понимание того, какие языки используют репозитории, помогут определить потенциальные репозитории для пилотных программ на этапе 3, и подготовит вас к включению code scanning на этапе 5 во всех репозиториях, по одному языку за раз.
Включение code scanning для устройства
Прежде чем внедрять пилотные программы и развертывать code scanning на предприятии, необходимо сначала включить code scanning для устройства. Дополнительные сведения см. в разделе Настройка сканирования кода на устройстве.
Подготовка к включению secret scanning
Примечание: Когда secret scanning обнаруживает секрет в репозиториях, принадлежащих организациям, которые используют GitHub Enterprise Cloud и имеют лицензию на GitHub Advanced Security, GitHub оповещает всех пользователей о доступе к оповещениям системы безопасности для репозитория.
Если проект взаимодействует с внешней службой, для проверки подлинности можно использовать токен или закрытый ключ. Если зафиксировать секрет в репозитории, то любой пользователь с правами на чтение в репозитории сможет использовать этот секрет для доступа к внешней службе с вашими привилегиями. Secret scanning сканирует весь журнал Git во всех ветвях, присутствующих в репозиториях GitHub для секретов и оповещает вас или блокирует отправку, содержащую секрет. Дополнительные сведения см. в разделе Сведения о проверке секретов.
Рекомендации о времени включения secret scanning
Возможность secret scanning GitHub Enterprise Server немного отличается от code scanning, так как для начала работы не требуется определенная конфигурация для каждого языка программирования или одного репозитория и в целом требуется меньше настроек. Это означает, что включение secret scanning на уровне организации может быть простой задачей, однако простое нажатие кнопки Включить все на уровне организации и включение параметра Автоматически включать secret scanning для всех новых репозиториев имеет некоторые последствия, о которых следует знать.
- Использование лицензий
Включение secret scanning для всех репозиториев будет использовать все ваши лицензии, даже если никто не использует проверку кода. Это нормально, если вы не планируете увеличивать число активных разработчиков в организации. Если число активных разработчиков, вероятно, увеличится в ближайшие месяцы, вы можете превысить ограничение лицензии, а затем не сможете использовать GitHub Advanced Security во вновь создаваемых репозиториях. - Начальный большой объем обнаруженных секретов
Если вы включите secret scanning в большой организации, будьте готовы увидеть большое количество найденных секретов. Иногда это вызывает у организации шок, и они поднимают тревогу. Если вы хотите включить secret scanning во всех репозиториях одновременно, спланируйте, как будете реагировать в организации на большое количество оповещений.
Secret scanning можно включить для отдельных репозиториев. Дополнительные сведения см. в разделе Настройка проверки секретов в ваших репозиториях. Secret scanning также можно включить для всех репозиториев в организации, как описано выше. Дополнительные сведения о включении для всех репозиториев см. в разделе Управление параметрами безопасности и анализа для организации.
Пользовательские шаблоны для secret scanning
Secret scanning обнаруживает большое количество шаблонов по умолчанию, но также может быть настроено для обнаружения пользовательских шаблонов, таких как форматы секретов, уникальные для вашей инфраструктуры или используемые интеграторами, которые secret scanning GitHub Enterprise Server в настоящее время не обнаруживает. Дополнительные сведения о поддерживаемых секретах для шаблонов партнеров см. в разделе Шаблоны сканирования секретов.
При аудите репозиториев и обсуждении с командами по безопасности и разработке создайте список типов секретов, которые позже будут использоваться для настройки пользовательских шаблонов для secret scanning. Дополнительные сведения см. в разделе Определение пользовательских шаблонов для проверки секретов.
Следующую статью этой серии см. в разделе Этап 3. Пилотные программы.