О защите от отправки для secret scanning
Функция защиты от отправки secret scanning помогает предотвратить утечки секретных данных за счет проверки на наличие секретов перед отправкой изменений в репозиторий. Когда вы включаете защиту отправки, secret scanning также проверяет отправки на наличие секретов с высокой достоверностью (с малой частотой ложноположительных результатов). Secret scanning перечисляет все обнаруженные секреты, чтобы автор мог просмотреть секреты и удалить их или, при необходимости, разрешить отправку этих секретов. Сведения о секретах и поставщиках услуг, поддерживаемых для защиты от push-уведомлений, см. в разделе Шаблоны сканирования секретов.
Если вы убедились, что секрет реальный, перед повторной отправкой необходимо удалить этот секрет из ветви и из всех фиксаций, в которых он отображается.
Совет. Если GitHub блокирует секрет, который, как вы считаете, можно безопасно отправить, вы можете разрешить секрет и указать причину, по которой следует разрешить отправку. Дополнительные сведения об обходе защиты от push-уведомлений для секрета см. в разделах "Защита отправок с помощью сканирования секретов" и "Защита отправок с помощью сканирования секретов" для командной строки и пользовательского веб-интерфейса соответственно.
Как разрешить заблокированную отправку в командной строке
При попытке отправить поддерживаемый секрет в репозиторий или организацию с включенным secret scanning для защиты отправок, GitHub заблокирует отправку. Вы можете удалить секрет из ветви или перейти по указанному URL-адресу, чтобы разрешить отправку.
Примечания
- Если конфигурация Git поддерживает отправку в несколько ветвей, а не только в текущую ветвь, отправка может быть заблокирована из-за отправки дополнительных и незапланированных ссылок. Дополнительные сведения см. в разделе Параметры
push.default
в документации Git. - Если истечет время ожидания secret scanning при отправке, GitHub все равно выполнит проверку фиксаций на наличие секретов после отправки.
Если заблокированный секрет был внесен последней фиксацией в вашей ветви, следуйте приведенным ниже инструкциям.
- Удалите секрет из кода.
- Зафиксируйте изменения с помощью
git commit --amend
. - Отправьте изменения с помощью команды
git push
.
Вы также можете удалить секрет, если он отображается в более ранней фиксации в журнале Git.
- Чтобы узнать, какая фиксация, появившаяся в ошибке отправки, была первой в журнале, используйте команду
git log
. - Запустите интерактивное перемещение изменений из одной ветви в другую с помощью команды
git rebase -i <commit-id>~1
.— это идентификатор фиксации из шага 1. - Определите фиксацию, которую нужно редактировать, изменив
pick
наedit
в первой строке текста, который отображается в редакторе. - Удалите секрет из кода.
- Зафиксируйте изменения с помощью команды
git commit --amend
. - Выполните команду
git rebase --continue
, чтобы завершить перемещение изменений из одной ветви в другую.
Как разрешить заблокированную фиксацию в пользовательском веб-интерфейсе
При попытке использовать веб-интерфейс, чтобы зафиксировать поддерживаемый секрет в репозиторий или организацию с включенной защитой отправок, GitHub заблокирует отправку.
Вы увидите баннер в верхней части страницы со сведениями о расположении секрета, а секрет также будет подчеркнут в файле, чтобы его можно было легко найти.
Чтобы разрешить заблокированную фиксацию в веб-интерфейсе, необходимо удалить секрет из файла. Также можно воспользоваться раскрывающимся списком Обход защиты, чтобы разрешить секрет. Дополнительные сведения об обходе защиты от push-уведомлений из пользовательского веб-интерфейса см. в разделе Защита отправок с помощью сканирования секретов.
Если вы убедились, что секрет реальный, необходимо удалить его из файла. После удаления секрета баннер в верхней части страницы изменится — на нем будет информация о том, что теперь можно зафиксировать изменения.