Info zu Pushschutz über die Befehlszeile
Der Push-Schutz verhindert, dass Sie versehentlich Geheimnisse an ein Repository übermitteln, indem Push-Nachrichten mit unterstützten Geheimnissen blockiert werden.
Wenn Sie ein unterstütztes Geheimnis von der Befehlszeile an ein Repository mit Pushschutz pushen möchten, blockiert GitHub den Push.
Sie sollten eine der folgenden Aktionen ausführen:
- Entfernen Sie das Geheimnis aus Ihrer Branch. Weitere Informationen finden Sie unter „Auflösung eines blockierten Pushvorgangs“.
- Folgen Sie einer bereitgestellten URL , um den Push zu erlauben. Weitere Informationen finden Sie unter „Umgehen des Pushschutzes.“
In der Befehlszeile werden jeweils bis zu fünf erkannte Geheimnisse angezeigt. Wenn ein bestimmtes Geheimnis schon im Repository erkannt wurde und bereits eine Warnung existiert, blockiert GitHub das Geheimnis nicht.
Wenn du bestätigst, dass ein Geheimnis echt ist und du es später beheben möchtest, solltest du das Geheimnis so schnell wie möglich beheben. Du kannst beispielsweise das Geheimnis widerrufen und aus dem Commitverlauf des Repositorys entfernen. Falls tatsächliche Geheimnisse offengelegt wurden, müssen diese widerrufen werden, um nicht autorisierten Zugriff zu verhindern. Du kannst das Geheimnis auch rotieren, bevor du es widerrufst. Weitere Informationen findest du unter Entfernen vertraulicher Daten aus einem Repository.
Note
- Wenn deine Git-Konfiguration das Pushen an mehrere Branches und nicht nur an den aktuellen Branch unterstützt, wird dein Push möglicherweise blockiert, weil zusätzliche und unbeabsichtigte Verweise gepusht werden. Weitere Informationen findest du unter
push.default
-Optionen in der GitHub-Dokumentation. - Wenn für secret scanning bei einem Push ein Timeout auftritt, scannt GitHub die Commits nach dem Pushen trotzdem auf Geheimnisse.
Auflösen eines blockierten Pushvorgangs
Um einen blockierten Push aufzulösen, müssen Sie das Geheimnis aus allen Commits entfernen, in denen er angezeigt wird.
- Wenn das Geheimnis von Ihrem neuesten Commit eingeführt wurde, lesen Sie „Entfernen eines Geheimnisses, das durch den neuesten Commit für Ihre Branch eingeführt wurde."
- Wenn das Geheimnis in früheren Commits angezeigt wird, lesen Sie „Entfernen eines Geheimnisses, das von einem früheren Commit für Ihre Branch eingeführt wurde.“
Note
Informationen zum Auflösen eines blockierten Commits in der Benutzeroberfläche von GitHub finden Sie unter „Arbeiten mit Pushschutz in der GitHub-Benutzeroberfläche“.
Entfernen eines Geheimnisses, das durch den letzten Commit in deinem Branch eingeführt wurde
Wenn das blockierte Geheimnisse mit dem letzten Commit in deinen Branch gelangt ist, befolge diese Schritte:
- Entferne das Geheimnis aus deinem Code.
- Um die Änderungen zu committen, führe
git commit --amend
aus. Dadurch wird der ursprüngliche Commit aktualisiert, der das Geheimnis eingeführt hat, anstatt einen neuen Commit zu erstellen. - Pushe die Änderungen mit
git push
.
Entfernen eines Geheimnisses, das von einem früheren Commit in deinem Branch eingeführt wurde
Du kannst das Geheimnis auch entfernen, wenn es in einem früheren Commit im Git-Verlauf vorkommt. Dazu musst du ermitteln, welcher Commit das Geheimnis zuerst eingeführt hat und den Verlauf der Commits durch die Ausführung eines interaktiven Rebase ändern.
-
Untersuche die Fehlermeldung, die angezeigt wurde, als du versucht hast, deinen Branch zu pushen, und die alle Commits auflistet, die das Geheimnis enthalten.
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
-
Führe als nächstes
git log
aus, um einen vollständigen Verlauf aller Commits in deinem Branch mit den entsprechenden Zeitstempeln anzuzeigen.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
-
Speichere den Vorgang und schließe den Editor, um den interaktiven Rebase-Vorgang zu starten.
-
Entferne das Geheimnis aus deinem Code.
-
Committe deine Änderungen mithilfe von
git commit --amend
. -
Führe
git rebase --continue
aus, um das Rebasing fertigzustellen. -
Pushe die Änderungen mit
git push
.
Umgehen des Pushschutzes
Wenn GitHub ein Geheimnis sperrt, von dem Sie glauben, dass es sicher ist, es zu pushen, können Sie die Sperrung umgehen, indem Sie einen Grund angeben, warum das Geheimnis gepusht werden darf.
Wenn du das Pushen eines Geheimnisses zulässt, wird auf der Registerkarte Sicherheit eine Warnung erstellt. GitHub schließt diese Warnung und sendet keine Benachrichtigung, wenn du angibst, dass das Geheimnis ein False Positive ist oder nur in Tests verwendet wird. Wenn du angibst, dass das Geheimnis echt ist und das Problem später behoben wird, lässt GitHub die Sicherheitsbenachrichtigung offen und sendet Benachrichtigungen an dendie Autorin des Commits sowie an die Repositoryadministrator*innen. Weitere Informationen findest du unter Verwalten von Warnungen aus der Geheimnisüberprüfung.
Wenn ein Mitwirkender einen Pushschutzblock für ein Geheimnis umgeht, sendet GitHub auch eine Warnung per E-Mail an die Organisationsbesitzer, Sicherheits-Manager und Repositoryadministratoren, die sich für E-Mail-Benachrichtigungen angemeldet haben.
Wenn Sie die Option zum Umgehen der Sperrung nicht sehen, hat der Repository-Administrator oder der Organisationsbesitzer strengere Kontrollen für den Push-Schutz eingerichtet. Stattdessen sollten Sie das Geheimnis aus dem Commit entfernen oder eine Anforderung für „Rechte umgehen“ senden, um das blockierte Geheimnis zu übertragen. Weitere Informationen finden Sie unter „Anfordern von Umgehungsberechtigungen“ in der GitHub Enterprise Cloud-Dokumentation.
-
Klicke auf die URL, die von GitHub zurückgegeben wird, wenn dein Push blockiert wurde.
-
Wähle die Option aus, die am besten beschreibt, warum du in der Lage sein solltest, den geheimen Schlüssel zu pushen.
- Wenn das Geheimnis nur in Tests verwendet wird und keine Bedrohung darstellt, klicke auf It's used in tests (Wird in Tests verwendet).
- Wenn die erkannte Zeichenfolge kein Geheimnis ist, klicke auf It's a false positive (Es handelt sich um einen False Positive).
- Wenn das Geheimnis echt ist, du es jedoch später beheben möchtest, klicke auf I'll fix it later (Problem wird später behoben).
-
Klicke auf Allow me to push this secret (Pushen dieses Geheimnisses zulassen).
-
Wiederhole den Push innerhalb von drei Stunden über die Befehlszeile. Wenn du innerhalb von drei Stunden keinen Push durchgeführt hast, musst du diesen Vorgang wiederholen.