О защите от отправки для secret scanning
Функция защиты от отправки secret scanning помогает предотвратить утечки секретных данных за счет проверки на наличие секретов перед отправкой изменений в репозиторий. Когда вы включаете защиту отправки, secret scanning также проверяет отправки на наличие секретов с высокой достоверностью (с малой частотой ложноположительных результатов). Secret scanning перечисляет все обнаруженные секреты, чтобы автор мог просмотреть секреты и удалить их или, при необходимости, разрешить отправку этих секретов. Сведения о секретах и поставщиках услуг, поддерживаемых для защиты от push-уведомлений, см. в разделе Шаблоны сканирования секретов.
Если вы убедились, что секрет реальный, перед повторной отправкой необходимо удалить этот секрет из ветви и из всех фиксаций, в которых он отображается.
Совет. Если GitHub блокирует секрет, который, как вы считаете, можно безопасно отправить, вы можете разрешить секрет и указать причину, по которой следует разрешить отправку. Дополнительные сведения об обходе защиты от отправки секретов см. в разделах Как разрешить отправку заблокированного секрета и Обход защиты отправки секрета, касающихся командной строки и веб-интерфейса соответственно.
Как разрешить заблокированную отправку в командной строке
При попытке отправить поддерживаемый секрет в репозиторий или организацию с включенным 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-уведомлений из пользовательского веб-интерфейса см. в разделе Защита отправок с помощью сканирования секретов.
Если вы убедились, что секрет реальный, необходимо удалить его из файла. После удаления секрета вы сможете зафиксировать изменения.