Skip to main content

Umsetzbare Sicherheit in CI/CD-Workflows und Build-Systeme mit Snyk-Tests integrieren

Artikel von
blog banner cicd workflow

13. Dezember 2019

0 Min. Lesezeit

Wenn Sie Snyk mit Repositories verbinden, die Sie in einem Source-Code-Management-System wie GitHub oder GitLab gespeichert haben, und Ihre Projekte anschließend in Snyk importieren, können Sie Sicherheitstests für Anwendungen optimal in Ihre zentralen Entwicklungs-Workflows integrieren und davon profitieren. Sie profitieren sofort von der kontinuierlichen Sicherheitsüberwachung, die neue Schwachstellen in den Bibliotheksmanifesten Ihres Projekts erkennt. Noch besser: Pull Requests zur Behebung dieser Sicherheitsprobleme können automatisch für Sie erstellt werden.

Sehen Sie sich unser Video an und erfahren Sie, wie Sie mit unserem CLI-Tool loslegen.

Zusätzlich zu diesen grundlegenden Git-Integrationen lässt sich Snyk auch über Ihre CI/CD-Tools (Continuous Integration/Continuous Development) integrieren. Auf Basis unserer Snyk CLI kann Snyk beispielsweise in einem Build- oder CI-Prozess mit Jenkins ausgeführt werden. Die Snyk CLI ist eine äußerst flexible Lösung, mit der Entwickler ganz einfach Open-Source-Schwachstellen in ihren Anwendungen und Containern finden und beheben können. Kein Wunder, dass DevOps-Engineers dieses CLI-Tool immer häufiger in ihre Pipelines einbinden.

Wie kann ich meinen Entwicklern wertvolle Erkenntnisse zur Anwendungssicherheit vermitteln?

Wenn Sie als DevOps- oder DevSecOps-Engineer arbeiten, haben Sie sich diese Frage bestimmt schon mindestens einmal gestellt.

Anwendungssicherheitstests in Ihrer CI/CD sind ein wichtiger Schritt nach vorn. Noch besser ist es jedoch, Entwicklern umsetzbare Empfehlungen zur Behebung von Problemen bereitzustellen, wenn ein Build fehlschlägt. So reduzieren Sie auch unnötige Warnmeldungen, etwa wenn der Build aufgrund nicht behebbarer Probleme abgebrochen wird und Entwickler sich hilflos fühlen.

Damit Ihre Empfehlungen wertvoll sind, sollten Sie vor allem darauf achten, dass sie umsetzbar sind.

Wenn Sie direkt über die Snyk-Benutzeroberfläche und die Source-Code-Management-Integrationen arbeiten, ist das – wie im Bild unten gezeigt – ganz einfach. Doch wie erreichen wir dasselbe für Entwickler, die mit dem CLI-Tool arbeiten?

Snyk-Projekt-Dashboard mit 45 Schwachstellen, Abhängigkeiten und einem Problem mit hohem Schweregrad: beliebiges Schreiben von Dateien in adm-zip.

Wenn Sie Snyk über die CLI ausführen, um Sicherheitsprobleme aufzuspüren, kennen Sie wahrscheinlich die übersichtlich dargestellte Liste mit Schwachstellen. Diese ist hilfreich, wenn Sie die Build-Ergebnisse betrachten. Aber wussten Sie, dass Sie diese Ergebnisse auch im JSON-Format abrufen können? Und wie hilft uns das dabei, Entwicklern die Behebung dieser Sicherheitsprobleme noch leichter zu machen?

Terminalausgabe von Snyk mit Schwachstellen hoher Schwere in js-yaml und handlebars, Vorschlägen zur Behebung und vier gefundenen Problemen.

JSON-Ausgabe von Snyk-CLI-Tests filtern

Die Snyk CLI bietet mehrere sehr nützliche Kommandozeilenargumente, mit denen Sie bei einem Test die gewünschten Informationen abrufen können. Als Referenz stellen wir außerdem einen Spickzettel zur Snyk CLI bereit.

Ein nützliches Kommandozeilenargument ist die Option --json. Die JSON-Ausgabe des Snyk-Tests kann in Kombination mit dem Befehl jq JSON parser äußerst hilfreich sein, um Schwachstellenergebnisse zu filtern und zu bearbeiten.

Mit diesem Argument können Sie die Ergebnisse ganz einfach so filtern, dass nur Probleme angezeigt werden, die sich durch ein Upgrade der anfälligen Bibliothek oder durch das Anwenden eines Patches beheben lassen. Das ist meiner Meinung nach ziemlich umsetzbar!

snyk test --json | jq '.vulnerabilities |= map(select(.isUpgradable == true or .isPatchable == true))'

Von maschinell generierter JSON-Ausgabe zur Visualisierung

Ein strukturiertes JSON-Format, das sich bearbeiten lässt, ist sehr praktisch. Noch besser wäre es jedoch, wenn wir die Ergebnisse in eine ansprechende Visualisierung umwandeln könnten. Anschließend können wir die gefilterte Version an Entwickler, Teamleiter oder andere Stakeholder senden, damit diese die nächsten Schritte nachverfolgen und Sicherheitslücken in unseren Projekten beheben können.

Zum Glück können wir dafür die CLI snyk-to-html verwenden. Mit diesem Tool exportieren Sie die JSON-Ergebnisse als statische HTML-Webseite – in einer einzigen Datei, die Sie per E-Mail versenden oder nach Belieben teilen können.

Installieren Sie zunächst das Tool:

$ npm install --global snyk-to-html

Leiten Sie nun die JSON-Ausgabe des Snyk-CLI-Tests zur Filterung an jq und anschließend an snyk-to-html weiter, um das JSON in eine HTML-Datei umzuwandeln:

$ snyk test —json | snyk-to-html -o results.html

So wird ein ansprechend formatierter, statischer HTML-Bericht erstellt, den Sie anschließend an die zuständigen Stakeholder senden können – zum Beispiel diesen hier:

Snyk-Testbericht mit drei bekannten Sicherheitslücken, darunter eine Denial-of-Service-Schwachstelle mittlerer Schwere in js-yaml.

Zusammenfassung

Es ist wichtig, Sicherheitslücken zu kennen. Denken Sie jedoch daran: Noch wirkungsvoller ist es, diese Erkenntnisse mit umsetzbaren Empfehlungen zu verbinden, die Ihre Entwickler dazu befähigen, aktiv zu werden und ihre Anwendungen zu schützen.

Mit den folgenden Ressourcen können Sie sich eingehender mit der Ausgabe der Snyk CLI befassen:

  1. Sehen Sie sich unser kurzes Video an, um mit unserem CLI-Tool loszulegen, und werfen Sie auch einen Blick auf unsere vollständige CLI-Referenz.

  2. Weitere Informationen zu unseren Kommandozeilenargumenten finden Sie in diesem praktischen Spickzettel zur Snyk CLI.

  3. Informationen zu Filtern und anderen Operatoren finden Sie in der jq-Dokumentation.

  4. Abschließend können Sie auch unseren ausführlicheren Beitrag dazu lesen, wie Sie das Beste aus Snyk-Tests mit JSON herausholen.

Starten Sie mit Capture the Flag

Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.