Snyk Maven-Plugin: Integriertes Scannen auf Sicherheitslücken für Entwickler
20. April 2021
0 Min. LesezeitMaven ist seit vielen Jahren das am häufigsten verwendete Build-System im Java-Ökosystem. Mit Maven lässt sich Ihre Anwendung ganz einfach erstellen, da es Ihnen vieles abnimmt. In den verschiedenen Phasen des Maven-Lebenszyklus übernimmt es unter anderem folgende Aufgaben:
Abhängigkeiten herunterladen
Java-Code kompilieren
Unit-Tests ausführen
Ein bereitstellbares Artefakt erstellen
Integrationstests ausführen
Und vieles mehr
Mit Maven läuft der Entwicklungslebenszyklus auf jedem Rechner und für alle Entwickler im Team gleich ab – ebenso wie in der CI-Pipeline. Da Maven bereits die benötigten Abhängigkeiten herunterlädt und Tests ausführt, wäre es nicht großartig, das Scannen auf Sicherheitslücken nahtlos in diesen Lebenszyklus zu integrieren? Genau das leistet das Snyk Maven-Plugin.
Es ist unerlässlich, die Abhängigkeiten Ihres Projekts auf bekannte Sicherheitslücken zu überprüfen. Der ideale Zeitpunkt, um mit der Überprüfung Ihrer Abhängigkeiten zu beginnen, ist genau dann, wenn Sie sie importieren! Deshalb haben wir das Snyk Maven-Plugin entwickelt. Damit können Sie Ihre Anwendung jetzt während des Build-Zyklus auf Sicherheitslücken in Bibliotheken von Drittanbietern scannen – und Sicherheitswissen direkt in die Hände von Entwicklern legen.
Möchten Sie das Plugin erst in Aktion sehen, bevor Sie weiterlesen? Dann habe ich genau das richtige Video für Sie …

Das Snyk Maven-Plugin
Das Snyk-Plugin für Maven ist allgemein verfügbar und auf Maven Central veröffentlicht. Sie müssen es nur in Ihrer pom.xml-Datei konfigurieren. Unten sehen Sie die Standardkonfiguration des Plugins.
Wie Sie sehen, unterscheiden wir zwei verschiedene Ziele: test und monitor. Nachdem Sie das Plugin zu Ihrem Projekt hinzugefügt haben, rufen Sie einfach mvn snyk:test oder mvn snyk:monitor auf. Standardmäßig ist das Ziel snyk test mit der Maven-Testphase im Lebenszyklus verknüpft. Das bedeutet, dass das Snyk-Testziel automatisch ausgeführt wird, sobald die Maven-Testphase abgeschlossen ist. Das Snyk-Monitorziel ist mit der Installationsphase verknüpft und funktioniert genauso.
Wie bei jedem anderen Maven-Plugin können Sie dieses Verhalten ändern. Fügen Sie dazu im Ausführungsabschnitt einfach ein <phase>-Tag hinzu. Sie können eine vorhandene Phase wie test, package oder verify festlegen oder keine Phase auswählen. Im Beispiel unten habe ich snyk-test mit der Phase verify und snyk-monitor mit none verknüpft. mvn snyk:monitor kann jetzt weiterhin manuell ausgeführt werden, wird aber nicht automatisch als Teil einer Phase im Build-Lebenszyklus gestartet.
Beachten Sie: Wenn Sie die Ausführung des Snyk-Ziels in Ihrem Lebenszyklus überspringen möchten, müssen Sie Ihrem Befehl lediglich -Dsnyk.skip hinzufügen. Beispiel:
Wie funktioniert das neue Snyk Maven-Plugin?
Es gab bereits ein Snyk-Plugin für Maven. Dieses Plugin verwendete jedoch eine benutzerdefinierte Logik, um den Abhängigkeitsbaum zu ermitteln. Daher konnten sich die Ausgabe der CLI und die des alten Maven-Plugins leicht unterscheiden.
Ähnlich wie das Gradle-Plugin verwendet das neue Snyk Maven-Plugin jetzt tatsächlich im Hintergrund die Snyk CLI. Es lädt automatisch die passende CLI-Binärdatei herunter und aktualisiert sie, sodass die CLI nicht vorinstalliert sein muss. Sie benötigen lediglich ein kostenloses Snyk-Konto, um ein API-Token zu erhalten.
Das Snyk Maven-Plugin konfigurieren
Um das Plugin zu konfigurieren, müssen Sie das API-Token festlegen, damit Snyk Abhängigkeiten auf Sicherheitslücken scannen kann. Sie finden das Token in Ihrem Snyk-Konto unter Allgemeine Einstellungen. Alternativ können Sie auch ein spezielles Token für ein Servicekonto erstellen.

Im ersten Beispiel des Blogbeitrags habe ich das Token nicht in die pom-Datei geschrieben. Stattdessen habe ich auf meinem Rechner eine globale Umgebungsvariable namens SNYK_TOKEN erstellt und darauf verwiesen.
So muss ich mein geheimes Token nicht in der pom-Datei speichern. Das ist besonders nützlich, wenn Sie Ihren Code in einem Open-Source-Repository veröffentlichen.
Im Abschnitt <args> der Konfiguration können Sie beliebige Flags angeben, die Sie normalerweise auch der CLI übergeben. In meinem Beispiel verwende ich derzeit das Flag --all-projects. Damit werden alle meine Projekte unabhängig vom Ökosystem auf einmal gescannt. Das ist besonders nützlich, wenn Ihr Projekt mehrere pom-Dateien enthält.
Außerdem können Sie bei Bedarf bestimmte CLI-Einstellungen konfigurieren. Standardmäßig wird die CLI bei der ersten Ausführung des Tages automatisch aktualisiert. Wenn Sie jedoch eine bestimmte Binärdatei oder CLI-Version verwenden oder die Aktualisierungsstrategie ändern möchten, können Sie innerhalb von <configuration> ein <cli>-Objekt hinzufügen. Alle verfügbaren Einstellungen sind im GitHub-Repository dokumentiert. Im Beispiel unten setze ich <updatePolicy> auf always. Dadurch sucht das Plugin bei jeder Ausführung nach neuen CLI-Updates und nicht nur einmal täglich.
Integrieren Sie Sicherheit in Ihren Maven-Lebenszyklus
Das Scannen mit Snyk Open Source in den Maven-Build-Lebenszyklus zu integrieren, fühlt sich nahtlos und natürlich an. Mit dem neuen Snyk-Plugin für Maven funktioniert diese Integration reibungslos und auf jedem Rechner auf dieselbe Weise – auch in Ihrer CI-Pipeline. Sie müssen die CLI nicht mehr manuell aufrufen, und die Konfiguration für das Scannen mit Snyk Open Source wird direkt im Projekt gespeichert. Eine Sorge weniger für Entwickler.
Weitere Informationen zum Plugin finden Sie in unserem GitHub-Repository. Und denken Sie daran, sich für ein kostenloses Snyk-Konto anzumelden, bevor Sie diese praktische Integration nutzen.
Diese weiterführenden Ressourcen empfehle ich Ihnen besonders:
Gradle-Abhängigkeiten: Scannen mit dem neuen Snyk Gradle-Plugin
So beheben Sie Java-Sicherheitsprobleme beim Programmieren in IntelliJ IDEA
Starten Sie mit Capture-the-Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Challenges lösen.



