Сведения о принудительной защите от командной строки
Защита от отправки предотвращает случайное фиксацию секретов в репозитории путем блокировки push-уведомлений, содержащих поддерживаемые секреты.
При попытке отправить поддерживаемый секрет из командной строки в репозиторий, защищенный защитой push-уведомлений, GitHub блокирует отправку.
Необходимо выполнить следующие действия:
- Удалите секрет из ветви. Дополнительные сведения см. в разделе "Разрешение заблокированной отправки".
- Следуйте предоставленному URL-адресу , чтобы узнать, какие параметры доступны для отправки. Дополнительные сведения см. в разделе об обходе защиты от push-уведомлений и обхода привилегий обхода.
В командной строке будет отображаться до пяти обнаруженных секретов. Если определенный секрет уже обнаружен в репозитории и оповещение уже существует, GitHub не заблокирует этот секрет.
Если вы подтверждаете, что секрет является реальным и что вы планируете исправить его позже, постарайтесь как можно скорее исправить секрет. Например, можно отозвать секрет и удалить его из журнала фиксаций репозитория. Реальные секреты, которые отображаются, необходимо отозвать для предотвращения несанкционированного доступа. Прежде чем отзывать секрет, можно сначала сменить его. Дополнительные сведения см. в разделе Удаление конфиденциальных данных из репозитория.
Примечание.
- Если конфигурация Git поддерживает отправку в несколько ветвей, а не только в текущую ветвь, отправка может быть ��аблокирована из-за дополнительных и непреднамеренных ссылок. Дополнительные сведения см. в разделе Параметры
push.default
в документации Git. - Если истечет время ожидания secret scanning при отправке, GitHub все равно выполнит проверку фиксаций на наличие секретов после отправки.
Разрешение заблокированной отправки
Чтобы устранить заблокированную отправку, необхо��имо удалить секрет из всех фиксаций, в которые он отображается.
- Если секрет был введен вашей последней фиксацией, см. раздел "Удаление секрета", введенного последней фиксацией в вашей ветви.
- Если секрет отображается в предыдущих фиксациях, см . раздел "Удаление секрета, введенного более ранней фиксацией в ветви".
Примечание.
Сведения о том, как устранить заблокированную фиксацию в пользовательском интерфейсе GitHub см. в разделе Работа с защитой push-уведомлений в пользовательском интерфейсе GitHub.
Удаление секрета, введенного последней фиксацией в ветви
Если заблокированный секрет был внесен последней фиксацией в вашей ветви, следуйте приведенным ниже инструкциям.
- Удалите секрет из кода.
- Чтобы зафиксировать изменения, выполните команду
git commit --amend --all
. Это обновляет исходную фиксацию, которая представила секрет вместо создания новой фиксации. - Отправьте изменения с помощью команды
git push
.
Удаление секрета, введенного более ранней фиксацией в ветви
Вы также можете удалить секрет, если он отображается в более ранней фиксации в журнале Git. Для этого необходимо определить, какая фиксация впервые представила секрет и изменить журнал фиксации с помощью интерактивной повторной базы.
-
Проверьте сообщение об ошибке, отображаемое при попытке отправить ветвь, в которой перечислены все фиксации, содержащие секрет.
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 log
to identify which commit comes earliest in your Git history.- In the example, commit
8728dbe67
was 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
pick
toedit
on 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
.
Обход защиты от принудительной отправки
Если GitHub блокирует секрет, который вы считаете безопасным для отправки, вы можете обойти блок, указав причину отправки секрета.
При отправке секрета на вкладке "Безопасность **" создается **оповещение. GitHub закрывает оповещение и не отправляет уведомление, если указать, что секрет является ложным срабатыванием или используется только в тестах. Если указать, что секрет является реальным и что вы исправите это позже, GitHub оставит оповещение системы безопасности открытым и отправит уведомления автору фиксации, а также администраторам репозитория. Дополнительные сведения см. в разделе Управление оповещениями о проверке секретов.
Когда участник проходит блок принудительной защиты для секрета, GitHub также отправляет оповещение электронной почты владелец организации, диспетчера безопасности и администраторов репозитория, которые приняли участие в Уведомления по электронной почте.
Если вы не видите возможность обойти блок, администратор репозитория или владелец организации настроил более жесткие элементы управления вокруг защиты push-уведомлений. Вместо этого необходимо удалить секрет из фиксации или отправить запрос на "обход привилегий" для отправки заблокированного секрета. Дополнительные сведения см. в разделе "Запрос обхода привилегий".
-
Посетите URL-адрес, возвращаемый GitHub при блокировке отправки, так как тот же пользователь, который выполнил отправку. Если другой пользователь пытается посетить этот URL-адрес, он получит ошибку
404
. 1. Выберите вариант ответа, который наиболее точно описывает, почему у вас должна быть возможность отправлять секрет.-
Если секрет используется только в тестах и не представляет угрозы, нажмите Используется в тестах.
-
Если обнаруженная строка не является секретом, нажмите Ложноположительный результат.
-
Если секрет реальный, но вы планируете исправить его позднее, нажмите Исправлю позже.
Примечание.
Необходимо указать причину обхода принудительной защиты, если в репозитории включена проверка секретов.
При отправке в общедоступный_ репозиторий, который не включает проверку секретов, вы по-прежнему защищены от случайной отправки секретов благодаря _принудительной защите пользователей, которая включена по умолчанию для учетной записи пользователя.
При защите от push-уведомлений для пользователей GitHub автоматически блокирует отправки в общедоступные репозитории, если эти push-уведомления содержат поддерживаемые секреты, но вам не нужно указать причину разрешения секрета, и GitHub не создаст оповещение. Дополнительные сведения см. в разделе Защита от push-уведомлений для пользователей.
-
-
Щелкните Разрешить мне отправить этот секрет.
-
Повторите попытку отправки с помощью командной строки в течение трех часов. Если вы не выполнили отправку в течение трех часов, необходимо повторить этот процесс.
Запрос привилегий обхода
Если отправка заблокирована защитой push-уведомлений, и вы считаете, что секрет является безопасным для отправки, вы можете запросить разрешение на обход блока. Ваш запрос отправляется в назначенную группу рецензентов, которые либо утвердят, либо отклонят запрос.
Срок действия запросов истекает через 7 дней.
- Посетите URL-адрес, возвращаемый GitHub при блокировке отправки, так как тот же пользователь, который выполнил отправку. Если другой пользователь пытается посетить этот URL-адрес, он получит ошибку
404
. 1. В разделе "Или обход привилегий обхода запросов" добавьте комментарий. Например, можно объяснить, почему вы считаете, что секрет безопасн для отправки, или укажите контекст о запросе для обхода блока. - Нажмите кнопку "Отправить запрос".
- Проверьте Уведомления по электронной почте ответа на запрос.
После проверки запроса вы получите сообщение электронной почты, уведомляющее вас о решении.
Если запрос утвержден, вы можете отправить фиксацию (или фиксации), содержащую секрет в репозиторий, а также любые будущие фиксации, содержащие тот же секрет.
Если ваш запрос отклонен, необходимо удалить секрет из всех фиксаций, содержащих секрет, прежде чем отправлять его еще раз. Сведения о том, как удалить заблокированный секрет, см. в разделе "Разрешение заблокированной отправки".