Containerisierung ist eine der modernen Methoden, die von Softwareentwicklungsteams zunehmend eingesetzt wird, da die DevOps-Kultur immer beliebter wird. Die meisten dieser Umgebungen profitieren von den umfangreichen Funktionen der Containerisierung wie Skalierbarkeit, Portabilität und Prozessisolierung.
Es ist jedoch wichtig, zu überlegen, „wie sicher“ eine Software ist, bevor Sie sie an Ihre Kunden ausliefern. Wenn Sie Container-Images als Releases erstellen, besteht durch die starke Verwendung von Drittanbieter- und veralteten Bibliotheken das Risiko, dass die von Ihnen ausgelieferten Images zusätzliche Schwachstellen aufweisen. Daher besteht Bedarf an einer zuverlässigen Methode zum Scannen von Container-Images. Hier kommt Trivy ins Spiel.
Was ist Trivy?
Trivy ist ein benutzerfreundliches, schnelles und umfassendes Open-Source-Tool, das von DevOps- und Sicherheitsteams zum Scannen von Containern und Artefakten auf Schwachstellen und Infrastruktur als Code (IaC) verwendet wird. Trivy wird von Aquasecurity verwaltet und bietet folgende Funktionen:
- Funktioniert mit Containern, Dateisystemen oder sogar Git-Repositorys.
- Ist einfach zu installieren und erfordert keine Voraussetzungen, wie etwa die Installation einer Datenbank.
- Läuft schnell, da keine Datenbank beteiligt ist.
- Passt zur DevSecOps-Methodik, da es in CI-Systeme (Circle CI, Jenkins, GitLab CI oder GitHub Actions) integriert werden kann.
Erfahren Sie hier mehr über die verschiedenen Betriebssysteme und Anwendungsabhängigkeiten, die Trivy scannen kann:
Ist Trivy kostenlos?
Ja, Trivy ist 100 % kostenlos, da es ein Open-Source-Projekt ist. Aqua, das Team hinter Trivy, setzt sich dafür ein, dass dieses Projekt Open Source bleibt, da es die Pflege von qualitativ hochwertigem Code und die Teilnahme an anderen Open-Source-Projekten garantiert.
So integrieren Sie Trivy in eine vorhandene GitLab CI-Pipeline
Es gibt zwei Ansätze, den Trivy-Scanner in GitLab CI zu integrieren. Erstens bietet GitLabs CI eine auf Trivy basierende Sicherheitsscanner-Integration, wenn Sie Ihre Container mit GitLabs Container Registry hosten. Dies ist wahrscheinlich die einfachste Lösung, um Trivy in eine CI-Pipeline zu integrieren. Weitere Informationen finden Sie unter diesem Link: https://docs.gitlab.com/ee/user/application_security/container_scanning/ .
Wenn Sie hingegen ein anderes Container-Register verwenden, in unserem Fall Google Container Registry , funktioniert es zwar etwas anders, stellt aber keine große Herausforderung dar.
Bitte beachten Sie, dass wir in diesem Blogbeitrag die Integration von Trivy in eine vorhandene GitLab CI-Pipeline mithilfe von Google Container Registry behandeln. Wir empfehlen jedoch die Verwendung von Google Artifact Registry , dem aktuellen Angebot zum Speichern, Verwalten und Sichern Ihrer Build-Artefakte in Google Cloud.
Der Link zum verwendeten Repository:
Wir haben eine Docker-Datei, die einen Apache-Server basierend auf dem Container httpd und Dateien in public-html erstellt .
Wir haben die Erstellungsphase ausgeführt und einen schnellen Schwachstellenscan mit Trivy Standalone durchgeführt , bevor wir das Image in unser Container-Register übertragen haben.
Einrichten eines Dienstkontos auf GCP
Damit Trivy aus einem privaten Containerregister wie GCR scannen kann, müssen Sie ein Dienstkonto mit Leseberechtigung für das Containerregister erstellen.
Nachfolgend finden Sie die Anweisungen, die Sie zum Erstellen der erforderlichen Berechtigungen benötigen:
Nachdem Sie das Dienstkonto erstellt haben, müssen Sie einen Schlüssel im JSON-Format erstellen:
Wir haben denselben Schlüssel zum Pullen/Erstellen, Pushen und Ausführen des Scan-Jobs aus Trivy verwendet.
Exportieren Sie diesen Schlüssel, damit Sie ihn als Variable auf GitLab CI verwenden können:
xclip -selection clipboard < /home/user/Downloads/my_key.json
Navigieren Sie im Repository zu Einstellungen > CI/CD > Variablen :
Erstellen Sie eine neue Variable und fügen Sie Ihren Schlüssel aus dem Xclip-Befehl ein.
Ändern von .gitlab-ci.yml zum Integrieren des Scan-Jobs von Trivy
Kurz bevor wir unser Image pushen, führen wir hier Trivy aus, um einen schnellen Scan auf potenzielle Schwachstellen durchzuführen. Wenn eine Schwachstelle mit dem Schweregrad „Kritisch“ vorliegt, soll die Pipeline fehlschlagen, damit wir das Problem beheben können:
Flaggenoptionen:
- –no-progress unterdrückt den generierten Fortschrittsbalken, um das Terminal ruhig zu halten;
- –ignore-unfixed : Standardmäßig erkennt Trivy ungepatchte/nicht behobene Schwachstellen. Das bedeutet, dass Sie diese Schwachstellen nicht beheben können, selbst wenn Sie alle Pakete aktualisieren.
- –severity ermöglicht Ihnen, weitere Filter festzulegen und nur schwerwiegende oder kritische Schwachstellen anzuzeigen;
- –exit-code : Wenn der Wert auf 1 gesetzt ist, kann die gesamte Pipeline fehlschlagen, wenn eine kritische Schwachstelle gefunden wird.
- .trivyignore wird in unserem Fall nicht verwendet, aber wenn Sie der Meinung sind, dass eine Sicherheitslücke ignoriert werden sollte.
Berichte von Trivy anzeigen
Ihre Pipeline läuft jetzt. Trivy kann jetzt das Container-Image scannen, das Sie gerade an GCR senden.
Die Pipeline ist fehlgeschlagen. Lassen Sie uns den GitLab Runner überprüfen:
Dies ist das erwartete Verhalten mit dem Flag –exit code 1 , das wir setzen, wenn eine kritische Schwachstelle gefunden wird.
Bonus-Tipp – Scannen Sie Bilder einer Kubernetes-Ressource mit Trivy
Trivy ermöglicht es Ihnen, die CLI dank Plugins zu erweitern, ohne die Trivy-Codebasis zu ändern. Inspiriert von kubectl und Helm finden Sie hier weitere Informationen zur Installation und Verwendung von Plugins .
Ein hervorragend verwendbares Plugin ist trivy-plugin-kubectl, mit dem Sie einen Pod/Job oder eine Bereitstellung auf Ihrem Kubernetes scannen können.
Mehr lesen: Beste Infrastructure as Code Tools (IaC): Die Top 15 für 2024
Fazit
Das Ausführen eines Sicherheitsscanners für Container-Images ist nichts, was Sie nur tun möchten, wenn Sie Ihre Änderungen in die Produktion einbinden möchten. Am besten führen Sie ihn auf einem vorgestellten Zweig aus, damit Sie Zeit haben, etwaige potenzielle Sicherheitsprobleme bei Ihrem Build zu beheben. Dies ist Teil der DevSecOps-Methodik, die in unserem Blogbeitrag behandelt wird , und wir glauben, dass es für DevOps- und Sicherheitsteams hilfreich sein wird.
Bluelight Consulting ist ein Nearshore-DevOps- und Software-Outsourcing-Unternehmen, das Startups, SaaS und Unternehmen mit innovativen Lösungen unterstützt.
Mit Nearshore Boost, unserem Nearshore-Softwareentwicklungsdienst, können Sie kostengünstiger als die Einstellung von Mitarbeitern im eigenen Unternehmen sicherstellen, dass Ihr Unternehmen mit einem erweiterten Team und einer größeren globalen Präsenz wettbewerbsfähig bleibt und flexibel auf die Bedürfnisse Ihrer Kunden reagieren kann.
Erfahren Sie mehr über unsere Dienstleistungen, indem Sie noch heute eine kostenlose Beratung bei uns buchen!