Gradle-Abhängigkeiten: Scannen mit dem neuen Snyk-Gradle-Plugin
23. Oktober 2020
0 Min. LesezeitGradle ist eines der wichtigsten Build-Systeme – nicht nur im Java-Ökosystem, sondern auch für die Android-Entwicklung. Mit Gradle können Sie Abhängigkeiten verwalten sowie Ihr Projekt erstellen und testen.
Es ist wichtig, die Abhängigkeiten Ihres Projekts auf bekannte Sicherheitslücken zu überprüfen. Der ideale Zeitpunkt für den Start des Scans ist genau dann, wenn Sie die Abhängigkeiten importieren! Deshalb haben wir ein Gradle-Plugin entwickelt, mit dem Sie Ihre Anwendung im Rahmen Ihres Build-Zyklus auf Sicherheitslücken in Bibliotheken von Drittanbietern überprüfen können.
Snyk-Gradle-Plugin
Das Snyk-Gradle-Plugin wird im Gradle-Plugin-Portal veröffentlicht und lässt sich daher ganz einfach in Ihr Gradle-Projekt einbinden.

Um das Plugin zu verwenden, müssen Sie es lediglich über die Plugins-DSL deklarieren.
Groovy:
Kotlin:
Konfiguration
Um das Plugin zu verwenden, benötigen Sie ein Snyk-Konto. Wenn Sie noch kein Snyk-Konto haben, können Sie hier eines erstellen. Habe ich schon erwähnt, dass ein Snyk-Konto völlig kostenlos ist?!
Es gibt verschiedene Möglichkeiten, Ihren API-Schlüssel festzulegen:
Sie können ihn direkt in Ihrer Gradle-Datei festlegen, wie ich weiter unten zeige. Bei einem Open-Source-Projekt sollten Sie jedoch beispielsweise verhindern, dass dieses Token öffentlich zugänglich wird.
Alternativ können Sie eine Umgebungsvariable SNYK_TOKEN mit dem API-Schlüssel festlegen. Dies ist auch die bevorzugte Methode, wenn Sie Snyk-Scans in Ihrer CI-Pipeline ausführen möchten.
Konfiguration des Snyk-Plugins
Wenn Sie den API-Schlüssel als Umgebungsvariable festgelegt haben, können Sie das Plugin sofort verwenden. Ich erkläre Ihnen aber auch, wie Sie bestimmte Einstellungen des Plugins anpassen können.
Fügen Sie Ihrer Gradle-Datei ein Erweiterungsobjekt snyk hinzu.
Groovy:
Kotlin:
apiDies ist der Snyk-API-Schlüssel. Sie können ihn hier festlegen oder weglassen und stattdessen die Umgebungsvariable
SNYK_TOKENmit dem API-Schlüssel festlegen.severityDies ist der Schweregrad, ab dem Sie gewarnt werden möchten. Möglich sind „low“, „medium“ und „high“. Alle Sicherheitslücken ab dem ausgewählten Schweregrad werden angezeigt und führen dazu, dass der Build fehlschlägt. Wenn Sie keine Einstellung für den Schweregrad festlegen, werden alle gefundenen Sicherheitslücken angezeigt, der Build wird jedoch nicht abgebrochen.
autoDownloadSnyk verwendet für den Scan die CLI-Binärdatei. Wenn Sie die CLI separat installiert haben, beispielsweise über npm, verwendet das Gradle-Plugin diese Installation. Wird auf Ihrem System keine CLI gefunden, lädt das Gradle-Plugin automatisch die neueste Version herunter. Standardmäßig ist diese Eigenschaft auf
truegesetzt und muss daher nicht angegeben werden. Wenn Sie den automatischen Download verhindern möchten, geben Sie diese Eigenschaft an und setzen Sie sie auffalse.autoUpdateWenn Sie die Snyk CLI nicht vorinstalliert haben, sondern sie automatisch vom Plugin herunterladen lassen, kann sie bei Verfügbarkeit einer neueren Version auch aktualisiert werden. Standardmäßig ist diese Eigenschaft auf
falsegesetzt. Beachten Sie, dass autoUpdate nicht funktioniert, wenn Sie die Snyk CLI bereits manuell installiert haben, beispielsweise über npm.argumentsDas Gradle-Plugin verwendet im Hintergrund die Snyk CLI. Mit dieser Eigenschaft können Sie der CLI bei Bedarf zusätzliche Argumente übergeben. Informationen zu den verfügbaren Flags finden Sie in der CLI-Referenz. Profi-Tipp: Wenn Sie in Gradle Subprojekte verwenden, setzen Sie die Eigenschaft arguments wie im Beispiel oben auf
--all-sub-projects. So werden beim Scan alle Gradle-Subprojekte überprüft.
Das Snyk-Plugin ausführen
Das Snyk-Plugin stellt Ihnen zwei neue Tasks zur Verfügung:
snyk-testsnyk-monitor
Sie können diese Tasks einzeln oder in einer Kette ausführen:
Snyk test
Der Task Snyk test scannt Ihre Abhängigkeiten und prüft, ob bekannte Sicherheitslücken in direkten und transitiven Abhängigkeiten vorhanden sind. Werden Sicherheitslücken gefunden, die dem ausgewählten Schweregrad oder einem höheren Schweregrad entsprechen, werden sie in der Konsole angezeigt und der Build schlägt fehl.
Wenn Sie Warnungen zu Abhängigkeiten erhalten möchten, ohne dass der Build fehlschlägt, lassen Sie den Schweregrad in Ihrer Konfiguration weg.

Snyk monitor
Snyk monitor erfasst Ihre Abhängigkeiten genauso wie der Task snyk-test. Allerdings speichert es sie als Momentaufnahme in Ihrem Snyk-Konto und überwacht diese Momentaufnahme. Wenn im Laufe der Zeit neue Sicherheitslücken gefunden oder bestehende behoben werden, werden Sie automatisch benachrichtigt. Das ist ideal, wenn ein Release in die Produktion geht und Sie es weiterhin überwachen möchten. Snyk monitor lässt Ihren Build NICHT fehlschlagen, sondern überwacht ihn lediglich.
Verketten
Sie können die neuen Snyk-Tasks mit anderen vorhandenen Tasks verketten, damit Ihre Scans automatisch ausgeführt werden. Im folgenden Beispiel verknüpfe ich den Task snyk-test in der Gradle-Datei mit dem regulären Test-Task.
Groovy:
Kotlin:
Ab jetzt wird bei jedem Aufruf von gradle test der Task snyk-test nach den regulären Tests ausgeführt. Das bedeutet auch, dass der Task snyk-test jedes Mal aufgerufen wird, wenn die Anwendung erstellt oder neu erstellt wird. Je nach Kontext kann diese Strategie hilfreich sein, um Tests und die Überwachung auf Sicherheitslücken verbindlich sicherzustellen.

