AllInfo

So sichern Sie Ihr Git-Repository mit signierten Commits und Tags

Git-Repositorys speichern wertvollen Quellcode und werden zum Erstellen von Anwendungen verwendet, die mit sensiblen Daten arbeiten. Wenn ein Angreifer in der Lage wäre, ein GitHub-Konto mit einem anfälligen Repository zu kompromittieren, könnte er bösartige Commits direkt in die Produktion übertragen. Signierte Commits tragen dazu bei, dass das nicht passiert.

Was sind signierte Commits?

Signierte Commits beinhalten das Hinzufügen einer digitalen Signatur zu Ihren Commits mithilfe eines privaten kryptografischen Schlüssels, normalerweise GPG, der jedoch auch SSH oder X.509 unterstützt. Nach der Erstellung müssen Sie den Signaturschlüssel sowohl zu Ihrem GitHub-Profil als auch zu Ihrem lokalen Git-Client hinzufügen.

Signierte Commits bieten eine zusätzliche Sicherheitsebene, indem sie sicherstellen, dass der Commit nicht manipuliert wurde, und vieles mehr Wichtig ist, dass es von einer vertrauenswürdigen Quelle stammt, die sowohl Eigentümer des GPG-Schlüssels als auch berechtigt ist, auf das GitHub-Konto zuzugreifen.

Um Commits in ein Repository zu pushen, das nur signierte Commits zulässt, muss der Angreifer in der Lage sein, Kompromisse einzugehen den privaten GPG-Schlüssel des Opfers, was normalerweise bedeutet, dass es Zugriff auf seinen gesamten Computer erhält, nicht nur auf sein GitHub-Konto. Da es sich hierbei um einen eher ungewöhnlichen und schwierigen Angriffsvektor handelt, bieten signierte Commits eine hervorragende Möglichkeit, um zu überprüfen, ob Commits von der Person stammen, von der sie sich ausgeben.

Einrichten eines neuen GPG-Schlüssels

Zuerst müssen Sie einen neuen GPG-Schlüssel erstellen, der zum Signieren verwendet wird, und dann müssen Sie sowohl Ihren Git-Client als auch GitHub darüber informieren.

Um den Schlüssel zu generieren, muss der gpg-Befehl auf Ihrem System installiert sein. Dies sollte standardmäßig vorhanden sein. Wenn dies nicht der Fall ist, können Sie es von Ihrem Paketmanager erhalten. Anschließend können Sie einen neuen Schlüssel generieren:

gpg –full-generate-key

Für die meisten Eingabeaufforderungen können Sie die Eingabetaste drücken, müssen jedoch eine Passphrase und Ihre GitHub-E-Mail-Adresse eingeben. Wenn Sie möchten, dass Ihre Adresse privat bleibt, können Sie die Option „Keine Antwort“ verwenden. Adresse für Ihr GitHub-Konto.

Listen Sie dann die Schlüssel auf und exportieren Sie den öffentlichen Schlüsselblock für die Schlüssel-ID, die Sie gerade erstellt haben:

gpg –list-secret-keys gpg –armor – -export [keyID]

Als Nächstes fügen wir es Ihrem GitHub-Konto hinzu. Klicken Sie in Ihren Benutzereinstellungen auf „SSH- und GPG-Schlüssel“. und fügen Sie einen neuen GPG-Schlüssel hinzu. Sie können hier auch den Wachsamkeitsmodus aktivieren, der Commits auf GitHub, die diese Schlüssel nicht verwenden, als nicht überprüft markiert.

Legen Sie einen Namen fest und fügen Sie den öffentlichen Schlüsselblock ein, den Sie mit gpg –export exportiert haben.

Als Nächstes informieren Sie Ihren lokalen Git-Client über Ihren Schlüssel. Wenn Sie einen GUI-Git-Client wie GitKraken verwenden, können Sie ihn möglicherweise einfach importieren, andernfalls müssen Sie dies über die Befehlszeile tun.

Da dies an Ihren Benutzer gebunden ist, möchten Sie es wahrscheinlich als globale Konfiguration festlegen, Sie können aber auch Konfigurationen auf Repository-Ebene verwenden. Setzen Sie user.signingkey auf die GPG-Schlüssel-ID, die Sie zum Exportieren verwendet haben.

git config –global user.signingkey [keyID]

Dann möchten Sie Git anweisen, alle Commits standardmäßig zu signieren. Dies kann bei Bedarf für einzelne Repositorys festgelegt werden:

git config –global commit.gpgsign true

Andernfalls können Sie das Flag -S verwenden, um Commits manuell zu signieren.

Signierte Commits mit Branch-Schutz erzwingen

Zweigschutzregeln erzwingen Einschränkungen und Richtlinien für bestimmte Zweige in Ihrem Repository. Während sie häufig zum Durchsetzen eines bestimmten Pull-Request- und Merge-Workflows und zum Einschränken des Zugriffs auf Release-Branches verwendet werden, können sie auch so eingerichtet werden, dass sie nur signierte Commits akzeptieren.

Nur das Akzeptieren signierter Commits bietet eine Möglichkeit zusätzliche Sicherheitsebene und zwingt jeden Mitwirkenden dazu, einen GPG-Schlüssel mit seinem Konto zu verknüpfen.

Es ist ganz einfach, eine neue Zweigschutzregel über die Registerkarte „Zweige“ zu erstellen. Registerkarte in Ihren Repository-Einstellungen. Sie sollten den Filter auf „*“ setzen. um alle Zweige einzuschließen.

Wählen Sie dann “ Erfordern signierte Commits.”

Von jetzt an , alle Commits, die an alle Zweige in diesem Repository übertragen werden, müssen GPG-Signatursignaturen enthalten.

WEITER LESEN

Exit mobile version