SnykLaunch-Rückblick: Empfehlungen für benutzerdefinierte Basis-Images
4. April 2023
0 Min. LesezeitZu den spannenden neuen Funktionen, die heute bei SnykLaunch vorgestellt wurden, gehörten die Empfehlungen für benutzerdefinierte Basis-Images (CBIR). CBIR ist seit Ende 2022 als offene Beta verfügbar und wird bereits von mehreren Unternehmen genutzt. Während wir auf die allgemeine Verfügbarkeit hinarbeiten, haben wir den Funktionsumfang erweitert, um mehr Flexibilität und Automatisierung ohne manuellen Aufwand zu ermöglichen. So können Nutzer CBIR in ihren CI/CD-Pipelines einsetzen.
Empfehlungen für benutzerdefinierte Basis-Images erweitern die leistungsstarken Empfehlungen für Basis-Images, die den Kern von Snyk Container bilden, und machen sie für Unternehmen verfügbar, die fortgeschrittenere DevOps-Workflows nutzen. Ganz gleich, ob Sie dedizierte Teams haben, die kuratierte oder „goldene“ Basis-Images auswählen, erstellen, anpassen und absichern, oder ob Sie einfach mit einem Image beginnen, das nicht zu den beliebten offiziellen Images gehört: Diese Funktion sollten Sie unbedingt nutzen.
Es gibt zahlreiche Workflows zum Erstellen und Bereitstellen containerisierter Anwendungen. Einige wichtige Meilensteine sind jedoch bei allen ähnlich: die Auswahl des Basis-Images, der Build-Schritt (Hinzufügen gängiger Bibliotheken, Komponenten und Projektdateien) und die Bereitstellung.
Warum Empfehlungen für Basis-Images wichtig sind
Die Auswahl eines Basis-Images beginnt oft mit einem „Docker Official“-Image, das auf der Programmiersprache des Projekts basiert. Für eine Python-Anwendung würden wir nach einem Python-Image suchen, für eine Java-Anwendung nach einem Java-Image.
Ein wichtiger Schritt im Bereitstellungszyklus von Container-Images ist es, das Risiko durch Sicherheitslücken zu minimieren. Viele Tools helfen dabei, anfällige Pakete in Ihren Images zu identifizieren und schlagen korrigierte Versionen dieser Pakete vor. Das Basis-Image node:14.0.0 enthält beispielsweise über tausend Sicherheitslücken. Leider geben viele Tools nur Empfehlungen zu einzelnen Sicherheitslücken, wie hier zu sehen.
In diesem Beispiel sehen wir Versionen, mit denen sich einige der Sicherheitslücken beheben ließen. Aber es ist unklar, was wir tun sollten. Eine davon patchen? Alle patchen?
Empfehlungen für Basis-Images helfen Ihnen dabei, bessere Images als Ausgangspunkt zu finden. Statt Sicherheitslücken einzeln und nacheinander zu patchen, können Sie mit einem Klick ganze Gruppen davon beseitigen. In diesem Fall sehen wir, dass ein kleines Upgrade auf node:14.21.3 die Zahl der Sicherheitslücken um 64 % reduziert. Ein Wechsel zur Variante bullseye-slim beseitigt bis auf einige wenige Sicherheitslücken mit niedrigem Schweregrad sogar alle.

Fortgeschrittene DevOps-Workflows
In manchen Unternehmen ist das Team für die Anwendungsentwicklung für das Erstellen und Verwalten von Container-Images zuständig. Andere setzen auf fortgeschrittenere Workflows. Dabei wird die Arbeit aufgeteilt: Ein Plattformteam erstellt interne, kuratierte oder „goldene“ Basis-Images für die Entwickler. Das Plattformteam wählt die Basis-Images als Ausgangspunkt aus und konfiguriert und erstellt anschließend interne Container-Basis-Images gemäß den Unternehmensstandards. Dazu können gängige Bibliotheken, Namens- oder Tagging-Konventionen und Härtungsmaßnahmen zur Minimierung von Sicherheitslücken in den Basis-Images gehören.

Durch diese Aufteilung der Zuständigkeiten können sich Entwickler auf die Anwendungen konzentrieren, an denen sie arbeiten, denn sie müssen sich nicht um die Korrektur der Basis-Images kümmern.
Sehen wir uns an, wie dieser fortgeschrittene Workflow mit CBIR funktioniert.
Lebenszyklus benutzerdefinierter Basis-Images
Plattform- und Sicherheitsteams
Bei diesem Modell mit geteilten Zuständigkeiten verantwortet das Plattformteam die Auswahl der Ausgangs-Images und die Erstellung der benutzerdefinierten Basis-Images für die Entwickler. Es ist dafür zuständig, eine skalierbare Supply Chain für Container-Images zu automatisieren und abzusichern, auf deren Grundlage Entwickler ihre Images erstellen können. Gleichzeitig erhält das Sicherheitsteam vollständige Transparenz über den Status der Basis-Images und kann Korrekturen priorisieren. Diese Transparenz schafft eine Feedback-Schleife, mit der Teams sicherere Images bereitstellen können. Wichtig ist: Das Plattformteam kann beim Erstellen seiner benutzerdefinierten Basis-Images weiterhin die standardmäßige Empfehlungslogik für Basis-Images nutzen.
Sobald ein benutzerdefiniertes Basis-Image erstellt wurde, kann es zur Überwachung in Snyk importiert werden. Dafür stehen dieselben Methoden wie bisher zur Verfügung: CLI, CI/CD und API oder die Snyk-Benutzeroberfläche. Wird ein Image mit Snyk Container überwacht, kann es als „Custom Base Image“ gekennzeichnet und optional in Empfehlungen verwendet werden. Snyk kann anhand semantischer Versionierung, Datumsangaben oder benutzerdefinierter Namensschemata neuere Versionen automatisch erkennen.

Dieser Prozess lässt sich auch über die API automatisieren. Das Deaktivieren des Flags „Use in recommendations“ ist hilfreich, wenn ein Image durch eine andere Version ersetzt wurde und nicht mehr als Ersatz vorgeschlagen werden soll.
Entwickler
Wenn ein Container von einem benutzerdefinierten Basis-Image abgeleitet wird oder auf einem solchen Image FROM basiert, werden Empfehlungen anhand der Image-Familie angezeigt. Ist auch die Dockerfile-Datei enthalten, mit der das Image erstellt wurde, stehen außerdem Upgrade-Optionen mit nur einem Klick zur Verfügung, wie in diesem Beispiel zu sehen. In diesem Fall verwendet der Entwickler mybaseimage:1.0, das 185 Sicherheitslücken aufweist. Die neueste Version 6.0 enthält weniger Sicherheitslücken und der Entwickler kann schnell einen Pull Request für das Upgrade erstellen. Außerdem können Pull Requests für Images, die von benutzerdefinierten Basis-Images abgeleitet sind, automatisch erstellt werden, sobald eine neuere Version des Basis-Images verfügbar ist.

Kuratierte, benutzerdefinierte Basis-Images des Plattformteams ersparen Entwicklern die vielen Informationen, die sie sonst durchsehen müssten. So können sie sich auf die Pakete konzentrieren, die sie den Containern manuell oder über Paketmanager hinzugefügt haben, sowie auf ihre Anwendung. Entscheidend ist: Sie müssen sich keine Sorgen machen.
Automatisierung für Ihre Container-Supply-Chain
Wie bereits erwähnt, gibt es neue APIs, mit denen überwachte Basis-Images als benutzerdefinierte Basis-Images gekennzeichnet und benutzerdefinierte Versionierungsschemata für Ihre Container-Namen registriert werden können. So können Sie Ihre Images wie gewohnt benennen und gleichzeitig benutzerdefinierte Empfehlungen nutzen.
Mit diesen APIs können Sie benutzerdefiniertes Image-Tagging und Empfehlungen für benutzerdefinierte Basis-Images in Ihre automatisierten Workflows integrieren. Gleichzeitig können sich Ihre Entwickler darauf konzentrieren, sicherere Software bereitzustellen.
Weitere Informationen zur Funktion selbst finden Sie in unserer Dokumentation zu Empfehlungen für benutzerdefinierte Basis-Images.
Probieren Sie es noch heute aus!
Die Empfehlungen für benutzerdefinierte Basis-Images von Snyk Container sind derzeit für Kunden der Enterprise-Stufe verfügbar. Künftig sollen sie auch für andere Stufen, einschließlich der kostenlosen Stufe, angeboten werden. Wenden Sie sich vor der allgemeinen Verfügbarkeit an Ihren Account Manager oder erstellen Sie ein Support-Ticket, um die Funktion für Ihr Unternehmen zu aktivieren und die Kontrolle über Ihre Container-Supply-Chain-Workflows zu übernehmen.
Die Demo können Sie sich in der Aufzeichnung auf Abruf von SnykLaunch ansehen.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.
