Документация

GitHub-разрешения и проверка безопасности Coroid

Какие разрешения приложения GitHub использует система безопасности и почему, как работает проверка безопасности Coroid, как её требовать, а также как импортируются собственные уведомления о безопасности GitHub.

Система безопасности работает через приложение GitHub от Coroid. На этой странице перечислены требования к приложению для работы с системой безопасности, а также то, Coroid Security что показывает отчёт о проверке, как заставить GitHub требовать её выполнения и как отображаются в системе безопасности собственные уведомления о безопасности GitHub.

Разрешения

Система безопасности использует уже имеющиеся у приложения разрешения для ваших репозиториев: чтение кода и пулл-реквестов, а также запись результатов проверок. Эти разрешения необязательные, и каждое из них добавляет определённую функциональность:

РазрешениеЧто добавляетсяБез него
Очереди слияния: только для чтения, с событием группы слиянияCoroid Security для коммитов в очереди слиянияДля очередей слияния не будет получено Coroid Security результатов
Уведомления Dependabot: только для чтения, с соответствующим событиемИмпортируются уведомления DependabotНе импортируются
Уведомления о сканировании кода: только для чтения, с соответствующим событиемИмпортируются уведомления о сканировании кода от GitHubНе импортируются
Уведомления о сканировании секретов: только для чтения, с соответствующим событиемИмпортируются уведомления о сканировании секретов от GitHub, без значений самих секретовНе импортируются

Когда приложение запрашивает новое разрешение, GitHub просит владельца вашей организации одобрить его для установки. До этого момента в разделе «Безопасность → Обзор» будет указано, для каких репозиториев не хватает этого разрешения, со ссылкой на страницу установки в GitHub.

Coroid также определяет, является ли репозиторий публичным или приватным, на основе событий GitHub и запросов к GitHub, чтобы решить, что можно публиковать в нём. Подробнее — Раскрытие информации.

Проверка безопасности Coroid

Coroid Security Это одна проверка с единым названием, независимо от того, запускается ли она самостоятельно или в составе графа доставки проекта в разделе «Quality Control», поэтому репозиторий может требовать её один раз. Она отображает защитные механизмы, проверяющие каждое изменение: уязвимые зависимости и утечки секретов. Решение принимается на основе более серьёзного из этих двух показателей. Отчёты о сканировании кода передаются через проверки «Quality Control», а отчёты о безопасности — через проверку «Рецензирование» от Coroid.

Она запускается в репозиториях GitHub, подключённых через приложение:

  • при открытии, повторном открытии, обновлении или пометке pull request как готового к рецензированию;
  • для каждого коммита в очереди слияния, при наличии разрешения на очереди слияния;
  • когда кто-то запускает её повторно в GitHub.

Как только поступает соответствующее событие, она отображается как «в процессе». Ссылка на её детали открывает проект в разделе «Безопасность».

Что она отображает

СостояниеПринудительно применяетсяТолько для наблюдения
Полное покрытие изменений, ничего на уровне или выше порогаУспешноУспешно
Найдено обнаружение на уровне или выше порогаОшибкаНейтрально, с указанием причины
Сканирование завершилось ошибкой или не удалось запуститься, файл, затронутый изменением, покрыт лишь частично, или конфигурацию не удалось прочитатьОшибка с указанием причины и инструкцией по повторному запускуНейтрально, с указанием причины
Результат не получен в течение 10 минутОшибка, «превысено время ожидания»Нейтрально
Для проекта отключена вся защитаНейтральноНейтрально

Она никогда не бывает «пропущена»: GitHub считает пропущенную обязательную проверку успешной, поэтому принудительно применяемая защита, которая не запустилась, будет отображаться как пройденная. Обязательная проверка всегда имеет один из вышеуказанных результатов, поэтому очередь слияния никогда не будет ждать бесконечно.

Проверка учитывает только то, что добавлено изменением, а не найденные ранее в базовой ветке элементы. В её тексте никогда не упоминаются найденные элементы, которые не являются публичными; указывается лишь их количество, порог и то, что подробности доступны в Coroid.

Требовать проверку безопасности Coroid

Принудительное применение защиты приводит к тому, что проверка завершается ошибкой. GitHub блокирует слияние только если репозиторий требует выполнения этой проверки:

  1. Защита веток: в разделе «Настройки» репозитория → «Ветки», отредактируйте правило для вашей стандартной ветки, включите «Требовать прохождения проверок статуса перед слиянием», и добавьте Coroid Security.
  2. Наборы правил: в разделе «Настройки» → «Правила» → «Наборы правил», добавьте «Требовать прохождения проверок статуса» в набор правил для вашей стандартной ветки, добавьте Coroid Security, и выберите приложение GitHub от Coroid в качестве источника.
  3. Очереди слияния: потребуйте выполнения проверки в том же правиле. Приложению понадобится разрешение на очереди слияния, чтобы проверка запускалась для коммитов в очереди слияния.

Активируйте этот параметр, когда нужные вам правила защиты уже применяются. Обязательная проверка, которая лишь фиксирует результаты, всё равно считается пройденной.

Уведомления о безопасности GitHub

С помощью Уведомления о безопасности GitHub при включённом соответствующем параметре в разделе «Безопасность» → «Настройки» и наличии указанных выше разрешений раздел «Безопасность» импортирует уведомления Dependabot, сканирования кода и сканирования секретов как наблюдения по тем же проблемам, которые выявляют собственные проверки Coroid. Новые уведомления поступают по мере их отправки GitHub, а Coroid повторно считывает уведомления каждого репозитория раз в сутки.

  • Импортировано, не подтверждено. Уведомление, которое не было подтверждено результатами сканирования самого Coroid, отображается как «Импортировано из GitHub, пока не подтверждено». Оно включается в список и учитывается в статистике, но не генерирует уведомлений и не блокирует процессы до тех пор, пока сканирование Coroid не подтвердит его наличие.
  • Источники дают противоречивые данные. Если GitHub и Coroid сообщают о одной и той же уязвимости по-разному, в описании уязвимости указывается этот факт и отображается состояние каждого источника: присутствует, устранена, отклонена или не удалось прочитать данные.
  • Каждый источник закрывает уведомления по-своему. Уведомление от Dependabot считается устранённым в GitHub после того, как в ветке по умолчанию больше нет уязвимой версии программного обеспечения. Уведомление от средства кодового сканирования считается устранённым, когда анализ ветки по умолчанию перестаёт выявлять эту уязвимость. Уведомление от сканирования секретов остаётся открытым до тех пор, пока пользователь не устранит проблему в самом GitHub, поэтому даже слияние исправления не приводит к его закрытию.
  • Потеря разрешений. Если приложение теряет необходимые разрешения или функция отключается в GitHub, уведомления, которые сообщались только этим источником, отображаются как «Статус неизвестен с [дата]», и ни одно из уведомлений не закрывается.

На странице «Обзор» для каждого репозитория и источника указывается, были ли прочитаны уведомления, отсутствуют ли разрешения, отключена ли соответствующая функция в GitHub или не удалось получить доступ к репозиторию.