Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы может все еще выполняться. Актуальные сведения см. в документации на английском языке.

Этап 2. Подготовка к включению в большом масштабе

На этом этапе вы подготовите разработчиков и соберете данные о репозиториях, чтобы убедиться, что ваши команды готовы, и у вас есть все необходимое для пилотных программ и развертывания code scanning и secret scanning.

Эта статья является частью серии "Внедрение 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)4212org/repo
org/repo
Python2012org/repo
org/repo
Go983org/repo
org/repo
Java412org/repo
org/repo
Swift111org/repo
org/repo
Kotlin82org/repo
org/repo
C12org/repo
org/repo

В этой таблице вы можете отфильтровать языки, которые в настоящее время не поддерживаются GitHub Advanced Security.

Если у вас есть репозитории с несколькими языками, можно отформатировать результаты GraphQL, как показано в таблице ниже. Отфильтруйте языки, которые не поддерживаются, но оставьте репозитории с по крайней мере одним поддерживаемым языком. Вы можете включить code scanning в этих репозиториях, и все поддерживаемые языки будут проверяться.

ЯзыкиКол-во репозиториевИмя репозиториев
JavaScript/Python/Go16org/repo
org/repo
Rust/TypeScript/Python12org/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. Пилотные программы.