GitLab, die umfassendste DevSecOps-Plattform, bietet alles, was du zum Planen, Verwalten, Erstellen, Bereitstellen, Sichern, Steuern und Überwachen deiner Anwendungen brauchst. Dennoch gibt es Fälle, in denen du GitLab mit Tools von Drittanbietern oder eigenen Tools erweitern möchtest. Du musst zum Beispiel von separaten Lösungen auf eine DevSecOps-Plattform migrieren, Tools von Drittanbietern evaluieren oder eigene oder selbst entwickelte Lösungen in GitLab integrieren.
Folgende Themen werden hier behandelt
- Erweiterbarkeit der DevSecOps-Plattform von GitLab
- Die GitLab-Sicherheitsscanner-Integration
- Sicherheitswidget für Merge Requests
- Pipeline-Sicherheitsbereich
- Sicherheitslückenbericht
- Sicherheitslückenseiten
- Sicherheitsdashboard
- Merge-Request-Approvalrichtlinien-Integration
- Tutorial: Integration von benutzerdefinierten Sicherheitsscannern
- Erstellen eines benutzerdefinierten Sicherheitsscanners
- Integrieren eines benutzerdefinierten Sicherheitsscanners in GitLab
- Mehr erfahren
Erweiterbarkeit der DevSecOps-Plattform von GitLab
GitLab kann auf viele Arten erweitert werden, um erweiterte Funktionen zu unterstützen, die dein Unternehmen benötigt. Einige gängige Beispiele für diese Integrationen sind:
- externe Anwendungsintegrationen wie Jenkins und Slack
- externe Integrationen zur Ticketverfolgung wie Bugzilla und Jira
- externe Integrationen von Authentifizierungsanbietern wie LDAP und SAML
- externe Integrationen von Sicherheitsscannern wie Fortify und Checkmarx
- die Möglichkeit, auf durchgesickerte Geheimnisse zu reagieren wie AWS- und GCP-Zugriffsschlüssel
Alle verfügbaren Integrationen findest du in der Dokumentation zur Integration mit GitLab (nur in englischer Sprache verfügbar). (Hinweis: Es sind nicht alle Integrationen in der Dokumentation aufgeführt.)
Die GitLab-Sicherheitsscanner-Integration
Sicherheitsscanner von Drittanbietern oder benutzerdefinierte Sicherheitsscanner können in GitLab integriert werden, um das Widget für Merge Requests, den Pipeline-Sicherheitsbereich, den Sicherheitslückenbericht, die Sicherheitslückenseiten, das Sicherheitsdashboard und die Merge-Request-Approvalrichtlinien zu füllen. Sehen wir uns die einzelnen Integrationen an.
Sicherheitswidget für Merge Requests
Ein Merge Request enthält ein Sicherheitswidget, das eine Zusammenfassung der neu entdeckten Sicherheitslücken anzeigt.
Wenn du auf eine Sicherheitslücke klickst, wird ein Popup-Fenster angezeigt, das folgende Informationen enthält:
- Status
- Beschreibung
- Projekt
- Datei
- Bezeichner
- Schweregrad
- Tool
- Scanner-Anbieter
Bei diesen Sicherheitslücken kann auch reagiert werden, d. h., du kannst sie entweder ignorieren oder ein vertrauliches Ticket dafür erstellen.
Die Ergebnisse eines benutzerdefinierten Scanners können in das Sicherheitswidget eingefügt werden. Die Daten zu den Sicherheitslücken werden aus dem JSON-Schema, das der Scanner ausgibt, zusammengesetzt.
Pipeline-Sicherheitsbereich
Alle aktivierten Sicherheitsanalysatoren werden in der Pipeline ausgeführt und geben ihre Ergebnisse als Artefakte aus. Diese Artefakte werden verarbeitet, unter anderem durch Deduplizierung, und die Ergebnisse werden auf der Registerkarte „Pipelinesicherheit“ aufgelistet. Von hier aus kannst du auch die resultierenden JSON-Dateien herunterladen.
Die Ergebnisse eines benutzerdefinierten Scanners können in die Registerkarte „Pipelinesicherheit“ eingefügt werden. Die Spalten werden anhand des JSON-Schemas, das der Scanner ausgibt, ausgefüllt.
Sicherheitslückenbericht
Der Sicherheitslückenbericht enthält Informationen zu Sicherheitslücken aus Scans des default-Branch, einschließlich:
- der Gesamtanzahl der Sicherheitslücken pro Schweregrad
- Filtern für gängige Attribute für Sicherheitslücken
- Details zu jeder Sicherheitslücke in einer Tabelle
Die Ergebnisse eines benutzerdefinierten Scanners für den default-Branch können für den Sicherheitslückenbericht verwendet werden.
Sicherheitslückenseiten
Wenn du im Sicherheitslückenbericht auf eine Sicherheitslücke klickst, gelangst du zur Sicherheitslückenseite. Für jede Sicherheitslücke in einem Projekt gibt es eine Seite, auf der du Details findest, z. B:
- Beschreibung
- Wann sie erkannt wurde
- Aktueller Status
- Wo sie erkannt wurde
- Verfügbare Aktionen
- Verknüpfte Tickets
- Aktionsprotokoll
- Lösungen
- Bezeichner
- Training
Du kannst die Daten auf der Seite mit den Sicherheitslücken nutzen, um eine entdeckte Sicherheitslücke einzugrenzen und sie zu beheben.
Die Ergebnisse eines benutzerdefinierten Scanners können in die Sicherheitslückenseite eingefügt werden. Die Daten zu den Sicherheitslücken werden aus dem JSON-Schema, das der Scanner ausgibt, zusammengesetzt.
Sicherheitsdashboard
Sicherheitsdashboards werden verwendet, um den Sicherheitsstatus deiner Anwendungen zu bewerten. GitLab stellt dir eine Sammlung von Metriken, Bewertungen und Diagrammen für die Sicherheitslücken zur Verfügung, die von den Sicherheitsscannern in deinem Projekt entdeckt wurden. Das Sicherheitsdashboard liefert Daten wie:
- Trends bei Sicherheitslücken über einen Zeitraum von 30, 60 oder 90 Tagen für alle Projekte in einer Gruppe
- Eine Bewertung in Buchstaben für jedes Projekt, basierend auf dem Schweregrad der Sicherheitslücke
- Die Gesamtzahl der in den letzten 365 Tagen entdeckten Sicherheitslücken und deren Schweregrad
Im Sicherheitsdashboard auf Gruppenebene kannst du auf ein Projekt klicken, um auf das spezifische Sicherheitsdashboard zuzugreifen. So erhältst du die 365-Tage-Ansicht.
Merge-Request-Approvalrichtlinien-Integration
Merge-Request-Approvalrichtlinien werden verwendet, um eine Genehmigung auf der Grundlage der Ergebnisse eines oder mehrerer Sicherheitsscanaufträge zu verlangen. Dies kann verhindern, dass unsicherer Code in die Produktion übernommen wird. Merge-Request-Approvalrichtlinien werden nach der vollständigen Ausführung eines CI-Scanauftrags ausgewertet, wobei die Richtlinien auf der Grundlage der Job-Artefaktberichte, die in der abgeschlossenen Pipeline veröffentlicht werden, bewertet werden.
Du kannst beispielsweise eine Richtlinie für Merge-Request-Approvalrichtlinien erstellen, die die Genehmigung von Projektbetreuer(inne)n erfordert, wenn ein Scanner zur Erkennung von Geheimnissen Sicherheitslücken findet. Das geht so:
- Wähle in der linken Seitenleiste Suchen oder aufrufen aus und suche nach dem Projekt, dem du eine Richtlinie hinzufügen möchtest.
- Gehe in der linken Seitenleiste des Projekts zu Sicherheit > Richtlinien.
- Wähle Neue Richtlinie aus.
- Wähle im Abschnitt Merge-Request-Approvalrichtlinien Richtlinie auswählen aus.
- Fülle die Felder aus:
- Name: der Name der Richtlinie
- Beschreibung: die Beschreibung der Richtlinie
- Richtlinienstatus: ob sie aktiviert ist oder nicht
- Regeln: die Bedingungen, die erfüllt sein müssen, damit eine Aktion (Approval erforderlich) ausgeführt wird
- Aktionen: die Aktion, die ausgeführt werden soll, wenn die Bedingungen in den Regeln (definierte Schwachstellen/erkannte Lizenzen) erfüllt sind
- Überschreiben von Projekt-Approvaleinstellungen: Wenn diese Option ausgewählt ist, überschreiben die folgenden Optionen die Projekteinstellungen. Dies wirkt sich jedoch nur auf die in der Richtlinie ausgewählten Branches aus.
- Klicke auf die Schaltfläche „Mit einem Merge Request konfigurieren“.
Sobald die Merge-Request-Approvalrichtlinie zusammengeführt wurde, wird die definierte Aktion ausgelöst, wenn du einen Merge Request erstellst und die in den Regeln definierten Kriterien erfüllt sind. In diesem Fall ist mindestens die Zustimmung einer Person erforderlich, bevor der Code zusammengeführt werden kann.
Die Ergebnisse eines benutzerdefinierten Scanners können vollständig in die Merge-Request-Approvalrichtlinien integriert werden. Wenn der benutzerdefinierte Scanner eine Sicherheitslücke entdeckt, ist ein Approval erforderlich, bevor der Code zusammengeführt werden kann. Der Scanner, den du in einer Merge-Request-Approvalrichtlinie auswählst, muss das entsprechende JSON-Schema verwenden.
Tutorial: Integration von benutzerdefinierten Sicherheitsscannern
Jetzt kommen wir zum spannenden Teil: der Integration eines benutzerdefinierten Sicherheitsscanners. In diesem Tutorial lernst du, wie du einen benutzerdefinierten Sicherheitsscanner erstellst und wie du ihn in GitLab integrierst. Wir werden die folgenden Projekte nutzen:
- Fern Pattern Scanner: Er durchsucht deine Dateien nach bestimmten Mustern wie Passwörtern, privaten Schlüsseln und Sozialversicherungsnummern. – Secret List: Enthält eine Liste von Benutzerpasswörtern, Clients und Schlüsseln. Dieses Projekt wird verwendet, um zu zeigen, wie ein benutzerdefinierter Sicherheitsscanner in GitLab integriert werden kann.
Im folgenden Video kannst du dir ansehen, wie die Anwendung erstellt wurde und wie sie im Detail verwendet wird:
Erstellen eines benutzerdefinierten Sicherheitsscanners
Jetzt erstellen wir einen benutzerdefinierten Scanner, der in GitLab integriert werden kann. Bevor ein benutzerdefinierter Scanner vollständig in GitLab integriert werden kann, muss der Scanner:
- Ein Verzeichnis nach definierten Mustern scannen
- Eine JSON-Datei nach dem entsprechenden Schema ausgeben
- Containerisiert und zugänglich sein
- Eine Vorlage bereitstellen, damit er in einem anderen Projekt ausgeführt werden kann
Wenn der Fern Pattern Scanner in einem Projekt mit der bereitgestellten Vorlage ausgeführt wird, führt er die folgenden Schritte aus:
- Er lädt einen Satz von Regeln, die Muster (Regex) definieren, die erkannt werden sollen.
- Die Regeln können konfiguriert werden, um den sich ändernden Anforderungen deines Unternehmens gerecht zu werden.
- Er scannt Dateien auf definierte Muster.
- Er gibt einen JSON-Bericht aus, der dem Schema zur Erkennung von Geheimnissen folgt.
- In diesem Projekt werden Go-Vorlagen verwendet, um eine JSON-Datei zu erstellen.
- Stelle sicher, dass du das entsprechende Schema verwendest, je nachdem, wonach dein Scanner sucht.
Sobald der JSON-Bericht als Artefakt in GitLab geladen wurde, werden das Merge-Request-Widget, der Sicherheitslückenbericht, die Sicherheitslückenseiten, die Merge-Request-Approvalrichtlinien und die Sicherheitsdashboards wie oben definiert befüllt.
Integrieren eines benutzerdefinierten Sicherheitsscanners in GitLab
Sobald du deinen benutzerdefinierten Scanner erstellt hast, der alle Anforderungen für die Integration erfüllt, kannst du ihn in GitLab ausführen.
Das Ausführen eines benutzerdefinierten Scanners ist so einfach wie das Hinzufügen einer Vorlage. Wir können sehen, wie die Vorlage für den Fern Pattern Scanner geladen wird, indem wir uns die Datei .gitlab-ci.yml
im Projekt Secret List ansehen.
- Erstelle eine .gitlab-ci.yml-Datei (Anleitung nur in englischer Sprache verfügbar) in dem Projekt, in dem du den Scanner ausführen möchtest.
- Füge die Vorlage für einen benutzerdefinierten Scanner hinzu.
- Du solltest die Vorlage auch mit Umgebungsvariablen konfigurieren können.
- Committe die Datei in den Main-Branch.
Sobald die Datei übergeben wurde, kannst du sehen, dass der benutzerdefinierte Scanner in deiner Pipeline ausgeführt wird. Sobald die Pipeline abgeschlossen ist, befüllt der Scanner alle oben im Abschnitt Die GitLab-Sicherheitsscanner-Integration definierten Bereiche.
Mehr erfahren
In diesen englischsprachigen Ressourcen erfährst du mehr über GitLab und die anderen Möglichkeiten, wie du deine DevSecOps-Plattform erweitern kannst: