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 findest du unter Auflösung eines blockierten Pushvorgangs.
- Folgen Sie einer bereitgestellten URL , um den Push zu erlauben. Weitere Informationen findest du 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 finden Sie 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.
- Informationen dazu, wenn das Geheimnis durch den letzten Commit eingeführt wurde, findest du unter Entfernen eines Geheimnisses, das durch den letzten Commit in deinem Branch eingeführt wurde.
- Informationen dazu, wenn das Geheimnis von einem früheren Commit eingeführt wurde, findest du unter Entfernen eines Geheimnisses, das von einem früheren Commit in deinem Branch eingeführt wurde.
Note
Informationen zum Auflösen eines blockierten Commits in der Benutzeroberfläche von GitHub findest du 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 --all
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.
-
Füge deine Änderungen mithilfe von
git add .
zum Stagingbereich hinzu.Note
Der vollständige Befehl lautet
git add .
:- Es gibt ein Leerzeichen zwischen
add
und.
. - Der Punkt nach dem Leerzeichen ist Teil des Befehls.
- Es gibt ein Leerzeichen zwischen
-
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 findest du 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).
Note
Du musst einen Grund für die Umgehung des Pushschutzes angeben, wenn das Repository die Geheimnisüberprüfung aktiviert hat.
Beim Pushen in ein öffentliches Repository, für das die Geheimnisüberprüfung nicht aktiviert ist, sind Sie dank Pushschutz für Benutzer, der standardmäßig für Ihr Benutzerkonto aktiviert ist, weiterhin vor versehentlichem Pushen von Geheimnissen geschützt.
Mit dem Pushschutz für Benutzer blockiert GitHub automatisch Pushvorgänge in öffentliche Repositorys, wenn diese Pushvorgänge unterstützte Geheimnisse enthalten, aber Sie müssen keinen Grund für die Zulassung des Geheimnisses angeben, und GitHub generiert keine Warnung. Weitere Informationen findest du unter Pushschutz für Benutzer.
-
-
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.