Schwachstellen in Ihrer CI/CD-Pipeline mit Snyk und Harness finden und beheben
Pas Apicella
Martin Ansong
10. Dezember 2021
0 Min. LesezeitAls DevOps vor mehr als zehn Jahren aufkam, lag der Schwerpunkt darauf, die Lücken zwischen Entwicklungs- und Betriebsteams zu schließen. Dazu wurden die Prozesse für das Konzipieren, Entwickeln, Testen und Bereitstellen von Anwendungen automatisiert.
Doch während Entwicklungsteams immer schneller und häufiger liefern, fällt es Sicherheitsteams schwer, Schritt zu halten. Oft werden sie zum Engpass in der Delivery-Pipeline. Deshalb ist es immer wichtiger geworden, Sicherheit frühzeitig in den DevOps-Prozess einzubinden und eine DevSecOps-Kultur zu etablieren.
Die Integration der entwicklerorientierten Sicherheitsplattform von Snyk in den einheitlichen Delivery-Pipeline-Workflow von Harness stellt sicher, dass Sicherheits- und Compliance-Tests Teil jedes Releases sind. So verhindern Sie, dass Anwendungen mit anfälligen Abhängigkeiten und Code in die Produktion gelangen. Mit modernen Tools wie Snyk und Harness können Sie Schwachstellen in einer CI/CD-Pipeline finden und beheben und Geschäftsrisiken minimieren, ohne Ihre Fähigkeit zu beeinträchtigen, Software schnell bereitzustellen.
Erste Schritte mit Snyk
Snyk ist eine Sicherheitsplattform für Entwickler, mit der Teams ganz einfach Schwachstellen in Code, Abhängigkeiten, Containern und Infrastructure as Code finden, priorisieren und beheben können. Die Plattform lässt sich direkt in Entwicklungstools, Workflows und Automatisierungs-Pipelines integrieren.
Dank branchenführender Anwendungs- und Sicherheitsinformationen stellt Snyk Sicherheitswissen in jedem Entwickler-Toolkit bereit.
Die ersten Schritte mit Snyk sind ganz einfach: Registrieren Sie sich für ein kostenloses Konto.
Erste Schritte mit Harness
Harness ist die branchenweit erste Software-Delivery-Plattform, die DevOps-Prozesse mithilfe von KI vereinfacht – CI, CD, Feature Flags, Cloud-Kostenmanagement und vieles mehr.
Mit Harness können Sie komplexe Deployments in wenigen Minuten mithilfe wiederverwendbarer Vorlagen erstellen und so Zeit und Stress sparen. Mit Harness erstellen Sie Pipelines in wenigen Minuten.
Um mit Harness loszulegen, besuchen Sie einfach harness.io und richten Sie ein kostenloses Testkonto ein.
Verhindern, dass Schwachstellen den Build- und Deployment-Prozess durchlaufen
Am besten lässt sich die gebündelte Leistung von Snyk und Harness in einer Anleitung demonstrieren, die Sie selbst einrichten und ausführen können. In diesem Beispiel zeigen wir mit Snyk, wie Sie verhindern können, dass Schwachstellen den Build- und Deployment-Prozess durchlaufen, indem Sie automatisierte Snyk-Tests in einen Harness-Workflow integrieren.
Wir verwenden das folgende GitHub-Repository: https://github.com/mansong1/springbootemployee-api
Wenn Sie mitmachen möchten, benötigen Sie Folgendes:
Dieses Tutorial ist am sinnvollsten, wenn Sie zuvor die folgenden Schritte mit Harness abgeschlossen haben:
Wenn Sie die obigen Schritte abgeschlossen bzw. die Inhalte durchgearbeitet haben, wissen Sie, wie Sie einen Harness-CI-Workflow einrichten.
Sieben Schritte zum Ausführen von Snyk-Tests in Harness
Schritt 1: Snyk-API-Token-Secret erstellen
Für Snyk-CLI-Tests benötigen Sie ein Snyk-API-Token. Als Unternehmenskunde können Sie Servicekonten einrichten und über Snyk App ein Token erstellen. Bei Snyk-Konten ohne Enterprise-Tarif, einschließlich unseres kostenlosen Snyk-Tarifs, können Sie das Benutzer-Token verwenden.
Erstellen Sie anschließend in Harness ein Secret zum Speichern Ihres Snyk-API-Tokens. Folgen Sie dazu diesen Schritten.
Schritt 2: Neue Pipeline erstellen
1. Erstellen Sie zunächst ein neues Projekt in Harness, indem Sie auf +Project klicken.

2. Nachdem Sie Ihr Projekt erstellt haben, öffnen Sie das Modul Continuous Integration, um eine neue Pipeline zu erstellen.

Schritt 3: Codebasis hinzufügen
Wenn dies die erste CI-Stage in der Pipeline ist, aktivieren Sie in den CI-Stage-Einstellungen die Option Clone Codebase. Wenn bereits eine Pipeline mit einer CI-Stage vorhanden ist, klicken Sie auf Codebase. Siehe Codebase-Konfiguration bearbeiten.
Schritt 4: Build-Farm-Infrastruktur definieren
Definieren Sie in der Infrastruktur der CI-Stage die Build-Farm für die Codebasis. Siehe Build-Infrastruktur für Kubernetes-Cluster einrichten.
Schritt 5: Run-Snyk-Test konfigurieren
Klicken Sie unter „CI Execution“ auf „Add Step“ und dann auf „Run“.

Mit dem Run-Schritt werden ein oder mehrere Befehle in einem Container-Image ausgeführt.
Snyk bietet mehrere Container-Images, die die Snyk CLI enthalten und mit den relevanten Tools für verschiedene Sprachen ausgestattet sind. In diesem Beispiel verwenden wir die Maven-Version, da sie auch in dieser Beispielanwendung zum Einsatz kommt.
Informationen zur Konfiguration eines Run-Schritts finden Sie unter Run-Step-Einstellungen. Fügen Sie dort Ihr Snyk-API-Token hinzu.

Sie können jetzt in der Konfiguration im Abschnitt Command auf diese Umgebungsvariable verweisen.

Schritt 6: Pipeline ausführen
Jetzt können Sie Ihre Pipeline ausführen.
1. Klicken Sie auf Save and Publish.
2. Klicken Sie auf Run. Die Einstellungen für Pipeline Inputs werden angezeigt.
3. Klicken Sie unter „CI Codebase“ auf Git Branch.
4. Geben Sie unter Git Branch den Namen des Branches ein, in dem sich die Codebasis befindet, z. B. master.

5. Klicken Sie auf Run Pipeline.
Schritt 7: Pipeline-Ausführung anzeigen
Während der Workflow ausgeführt wird, schlägt der Snyk-Test-Schritt fehl, da das Projekt anfällige Abhängigkeiten enthält. Klicken Sie auf den Umschalter Console View, um den vollständigen Bericht anzuzeigen.
Hinweis: Um Ihre Tests besser zu steuern, können Sie dem Befehl snyk test das Flag severity-threshold mit einer der unterstützten Optionen (low|medium|high|critical) übergeben. Mit diesem Flag werden nur Schwachstellen auf der angegebenen oder einer höheren Stufe gemeldet.

Die gesamte Pipeline ist auch als YAML verfügbar. Öffnen Sie dazu unter Builds:
Klicken Sie auf More Options.
Wählen Sie Edit Pipeline aus.
Klicken Sie auf YAML.

Unten sehen Sie die gesamte Pipeline als YAML. Sie können alles in der Pipeline bearbeiten und sie erneut ausführen.
CI/CD-Workflow
Neben Abhängigkeiten von Anwendungen können auch die verwendeten Container Schwachstellen mit sich bringen. Fehlkonfigurationen von Cloud-Ressourcen zählen zudem zu den häufigsten Ursachen für Cloud-Schwachstellen, die zum Zugriff auf Cloud-Daten und -Dienste ausgenutzt werden.
In diesem Beispiel erstellen wir unsere Anwendung, stellen sie in Kubernetes bereit und überwachen sie anschließend mit Snyk.
Um einen Container in Harness zu erstellen und hochzuladen, folgen Sie einfach diesen Schritten. Einen Snyk Container-Scan-Schritt fügen Sie ähnlich wie den oben beschriebenen Snyk-Test-Schritt hinzu.
Informationen zum Deployment des Containers in unserem Kubernetes-Cluster finden Sie in der Harness-Dokumentation. In unserer CD-Pipeline führen wir zuvor einen Snyk-Test unseres Kubernetes-Manifests aus. Dazu fügen Sie einen Schritt vom Typ Shell Script mit dem Befehl snyk iac test hinzu.

Das im Snyk-IaC-Schritt ausgeführte Skript sieht wie folgt aus:
Der vollständige CI/CD-Workflow sieht so aus:


Wie zuvor lässt sich diese Pipeline als YAML anzeigen. Sie befindet sich in diesem GitHub-Repository.
Snyk lässt sich in Kubernetes integrieren. So können Sie Ihre laufenden Workloads importieren und testen sowie Schwachstellen in den zugehörigen Images und Konfigurationen erkennen. Nach dem Import überwacht Snyk diese Workloads kontinuierlich und erkennt weitere Sicherheitsprobleme, wenn neue Images bereitgestellt werden oder sich die Workload-Konfiguration ändert.
Ein erfolgreiches Deployment über unseren Harness-CD-Workflow wird in der Snyk-Benutzeroberfläche wie folgt angezeigt:


Jetzt ausprobieren
Bei der Wahl einer Technologieplattform ist es wichtig, eine Lösung auszuwählen, bei der die Bedürfnisse von Entwicklern im Mittelpunkt stehen. Außerdem sollte sie den Schwerpunkt auf die Behebung von Problemen legen, statt sie nur zu melden. Plattformen mit einem entwicklerorientierten Ansatz können Sicherheit in die gesamte Pipeline integrieren und verschiedenen Beteiligten wie Entwicklungs-, Sicherheits- und Betriebsteams einen ganzheitlichen Überblick verschaffen.So wird ein gemeinsames DevSecOps-Mindset verankert und sicherere Software erreicht die Nutzer.
Vielen Dank, dass Sie an diesem Tutorial teilgenommen haben. Probieren Sie noch heute Snyk und Harness aus!
Sichern Sie Ihre Infrastruktur an der Quelle
Snyk automatisiert die IaC-Sicherheit und Compliance in Workflows und erkennt abweichende sowie fehlende Ressourcen.
Über die Autoren
Martin Ansong ist Solutions Engineer im Bereich Commercial Sales bei Harness. Er unterstützt Kunden dabei, den Build- und Delivery-Lebenszyklus ihrer Software zu beschleunigen.
Pas Apicella ist Principal Solution Engineer APJ bei Snyk. Er arbeitet an der Snyk-Plattform, um Kunden dabei zu unterstützen, ihre Cloud-Native-Anwendungen zu schützen und eine DevSecOps-Kultur zu etablieren – und gleichzeitig die geschäftlichen Anforderungen zu erfüllen.
