Разрешение заблокированной отправки
Чтобы устранить заблокированную отправку, необходимо удалить секрет из всех фиксаций, в которые он отображается.
- Если секрет был введен вашей последней фиксацией, см. раздел "Удаление секрета", введенного последней фиксацией в вашей ветви.
- Если секрет отображается в предыдущих фиксациях, см . раздел "Удаление секрета, введенного более ранней фиксацией в ветви".
Удаление секрета, введенного последней фиксацией в ветви
- Удалите секрет из кода.
- Чтобы зафиксировать изменения, выполните команду
git commit --amend --all. Это обновляет исходную фиксацию, которая представила секрет вместо создания новой фиксации. - Отправьте изменения с помощью команды
git push.
Удаление секрета, введенного более ранней фиксацией в ветви
-
Проверьте сообщение об ошибке, отображаемое при попытке отправить ветвь, в которой перечислены все фиксации, содержащие секрет.
remote: —— GitHub Personal Access Token —————————————————————— remote: locations: remote: - commit: 8728dbe67 remote: path: README.md:4 remote: - commit: 03d69e5d3 remote: path: README.md:4 remote: - commit: 8053f7b27 remote: path: README.md:4 -
Затем выполните команду
git log, чтобы просмотреть полную историю всех фиксаций в ветви, а также соответствующие метки времени.test-repo (test-branch)]$ git log commit 8053f7b27 (HEAD -> main) Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 13:03:37 2024 +0100 my fourth commit message commit 03d69e5d3 Author: Octocat <1000+octocat@users.noreply.github.com> Date: Tue Jan 30 13:02:59 2024 +0100 my third commit message commit 8728dbe67 Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 13:01:36 2024 +0100 my second commit message commit 6057cbe51 Author: Octocat <1000+octocat@users.noreply.github.com Date: Tue Jan 30 12:58:24 2024 +0100 my first commit message -
Focusing only on the commits that contain the secret, use the output of
git logto identify which commit comes earliest in your Git history.- In the example, commit
8728dbe67was the first commit to contain the secret.
- In the example, commit
-
Start an interactive rebase with
git rebase -i <COMMIT-ID>~1.- For
<COMMIT-ID>, use the commit identified in step 3. For example,git rebase -i 8728dbe67~1.
- For
-
In the editor, choose to edit the commit identified in step 3 by changing
picktoediton the first line of the text.edit 8728dbe67 my second commit message pick 03d69e5d3 my third commit message pick 8053f7b27 my fourth commit message -
Сохраните и закройте редактор, чтобы запустить интерактивную перебазу.
-
Удалите секрет из кода.
-
Добавьте изменения в промежуточную область с помощью
git add ..Примечание.
Полная команда:
git add .- Существует пространство между
addи.. - Период после пробела является частью команды.
- Существует пространство между
-
Зафиксируйте изменения с помощью
git commit --amend. -
Выполните команду
git rebase --continue, чтобы завершить перемещение изменений из одной ветви в другую. -
Отправьте изменения с помощью команды
git push.
Обход защиты от принудительной отправки
Примечание.
Если вы не видите возможности обойти блокировку, следует удалить секрет из коммита или отправить запрос на «обход прав», чтобы продвинуть заблокированный секрет. См. раздел «Запрос прав на обход».
-
Посетите URL-адрес, возвращаемый GitHub при блокировке отправки, так как тот же пользователь, который выполнил отправку. Если другой пользователь пытается посетить этот URL-адрес, он получит ошибку
404. 1. Выберите вариант ответа, который наиболее точно описывает, почему у вас должна быть возможность отправлять секрет.-
Если секрет используется только в тестах и не представляет угрозы, нажмите Используется в тестах.
-
Если обнаруженная строка не является секретом, нажмите Ложноположительный результат.
-
Если секрет реальный, но вы планируете исправить его позднее, нажмите Исправлю позже.
Примечание.
Необходимо указать причину обхода принудительной защиты, если в репозитории включена проверка секретов.
При отправке в общедоступный_ репозиторий, который не включает проверку секретов, вы по-прежнему защищены от случайной отправки секретов благодаря _принудительной защите пользователей, которая включена по умолчанию для учетной записи пользователя.
При защите от push-уведомлений для пользователей GitHub автоматически блокирует отправки в общедоступные репозитории, если эти push-уведомления содержат поддерживаемые секреты, но вам не нужно указать причину разрешения секрета, и GitHub не создаст оповещение. Дополнительные сведения см. в разделе Защита от push-уведомлений для пользователей.
-
-
Щелкните Разрешить мне отправить этот секрет.
-
Повторите попытку отправки с помощью командной строки в течение трех часов. Если вы не выполнили отправку в течение трех часов, необходимо повторить этот процесс.
Запрос привилегий обхода
-
Посетите URL-адрес, возвращаемый GitHub при блокировке отправки, так как тот же пользователь, который выполнил отправку. Если другой пользователь пытается посетить этот URL-адрес, он получит ошибку
404. -
В разделе "Или обход привилегий обхода запросов" добавьте комментарий. Например, можно объяснить, почему вы считаете, что секрет безопасн для отправки, или укажите контекст о запросе для обхода блока.
-
Нажмите кнопку "Отправить запрос".
-
Проверьте Уведомления по электронной почте ответа на запрос. После проверки запроса вы получите сообщение электронной почты, уведомляющее вас о решении.
- Если ваш запрос одобрен, вы можете отправить коммит (или коммиты), содержащие секрет, в репозиторий, а также любые будущие коммиты с таким же секретом.
- Если ваш запрос отклонён, нужно удалить секрет из всех коммитов перед повторным продвижением. Сведения о том, как удалить заблокированный секрет, см. в разделе "Разрешение заблокированной отправки".
Дополнительные материалы
-
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) -
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-rest-api)