Skip to main content

Container-Fixes schneller umsetzen – mit der neuen automatischen Erkennung von Basis-Images in Snyk

Artikel von
blog feature snyk container pink

12. August 2021

0 Min. Lesezeit

Wenn Sie Ihre Apps in Containern bereitstellen, können Sie auf der Arbeit anderer aufbauen. Sie können aus einer Vielzahl einsatzbereiter Container-Images wählen, die nahezu jeden Code und jedes Framework ausführen, den bzw. das Sie verwenden. Snyk Container unterstützt Sie bereits dabei, Ihre Parent-Images zu verwalten und Empfehlungen zu besseren Alternativen zu erhalten – Images mit weniger Sicherheitslücken, einem geringeren Speicherbedarf oder beidem. Wir freuen uns, das neueste Update für unsere Funktionen zur Image-Verwaltung anzukündigen: die automatische Erkennung von Basis-Images.

Vereinfachte Workflows für die Image-Sicherheit

Vor dieser Version ermittelte Snyk Container das Parent-Image Ihres gescannten Container-Images, indem das Dockerfile analysiert wurde, während das Container-Image mit der Option --file=/path/to/Dockerfile getestet wurde. Das ist praktisch, wenn das Dockerfile griffbereit ist und Sie daran denken, es zu den Scans hinzuzufügen. Aber seien wir ehrlich: Das Dockerfile hinzuzufügen ist ein zusätzlicher Schritt und unterscheidet sich deutlich davon, wie andere Image-Scanner funktionieren. Wir wollten die Verwaltung unserer Basis-Images vereinfachen und schon beim ersten Snyk-Scan Empfehlungen zu Basis-Images geben. Deshalb haben wir die Erkennung von Basis-Images automatisiert! Scannen Sie Ihre Container-Images einfach mit Snyk – um alles Weitere kümmern wir uns.

Terminalfenster mit dem Befehl „snyk container test goofy:demo“

Im Beispiel oben habe ich eine Demo-App gescannt, die in einem Container auf Basis von node:10 läuft – einer sehr alten Version. Beim Scan erkennt Snyk Container das verwendete Parent-Image node:10 und empfiehlt bessere Alternativen, mit denen sich über 520 der Sicherheitslücken in meinem Image beheben lassen. In nahezu jeder Liste mit Best Practices für Container wird empfohlen, kleinere Basis-Images auszuwählen, um die Angriffsfläche zu verringern. Ein Test auf Sicherheitslücken in Containern zeigt schnell, warum: Viele Sicherheitslücken entstehen durch größere oder veraltete Images. Ein neueres, schlankeres Image auszuwählen, hat oft den größten und schnellsten Effekt bei der Verringerung von Sicherheitslücken. Jede Sicherheitslücke in einem Container einzeln zu beheben oder Hunderte von Basis-Images in öffentlichen Repositories zu durchsuchen, ist dagegen meist keine sinnvolle Verwendung Ihrer Zeit. Deshalb übernimmt Snyk Container diese Arbeit für die beliebtesten Images auf Docker Hub.

Im Beispiel unten habe ich eine weitere App gescannt, deren Basis-Image ruby:2.6-slim ist. Anders als mein Node-Image ist dieses Image eine gute Wahl mit relativ wenigen Sicherheitslücken – zumindest wäre es das, wenn ich mein Container-Image erst vor Kurzem erstellt hätte. Tatsächlich wurde es vor etwa sieben Monaten erstellt. Deshalb werde ich nicht auf alternative Basis-Images hingewiesen, sondern darauf, dass mein Ruby-Image veraltet ist und neu erstellt werden sollte, um Sicherheitslücken zu beheben. Hier habe ich die Option --json verwendet, um die maschinenlesbare JSON-Ausgabe anzuzeigen. So können Sie die Snyk-Ergebnisse bei Bedarf in andere Tools einspeisen.

Terminalfenster mit dem Befehl „snyk container test purpledobie/blog:good“

Unterstützung weiterer Optionen zum Erstellen von Containern

Es gibt noch einen weiteren Grund, warum die automatische Erkennung von Basis-Images wichtig ist: Immer mehr Container-Tools erstellen Container ohne Dockerfile. Glücklicherweise nutzen diese Tools weithin die Standards für Container-Images der Open Container Initiative(OCI). Das bedeutet, dass Ihre Container-Tools und Laufzeitumgebungen diese Container ausführen können sollten. Tools wie Jib, Buildah und Cloud Native Buildpacks ermöglichen es, OCI-konforme Container ohne Dockerfile zu erstellen.

Snyk Container konnte diese Container schon immer scannen. Dank unserer Funktionen zur automatischen Erkennung von Basis-Images können wir jetzt auch Empfehlungen zu Basis-Images für diese alternativen Build-Workflows geben. In den kommenden Wochen veröffentlichen wir Blogbeiträge zu Jib und Cloud Native Buildpacks. Wenn Sie nicht so lange warten möchten, erstellen Sie einfach mit Ihrem bevorzugten Tool einen Container und scannen Sie ihn!

So funktioniert die Erkennung von Basis-Images

Mit dieser Funktion können wir jetzt auf zwei Arten das Basis-Image Ihrer Container erkennen und Empfehlungen geben:

  1. Dockerfile während des Scans untersuchen: Wenn Sie diese Methode bereits verwenden, funktioniert sie weiterhin und Sie können sie auch künftig nutzen. Snyk Container funktioniert wie bisher. Dabei verwenden wir das Dockerfile als Quelle für die Informationen zum Basis-Image anstelle der automatischen Erkennung.

  2. Image-Layer untersuchen: Durch die Analyse der Layer eines Images während des Scans können wir ermitteln, welches Basis-Image verwendet wird. Snyk Container analysiert die beliebtesten offiziellen Docker-Images auf Docker Hub und erfasst deren Layer-Daten. So können wir die Layer Ihres gescannten Images mit diesen Datensätzen abgleichen.

Derzeit konzentrieren wir uns auf die beliebtesten offiziellen Images auf Docker Hub. Dazu gehören Basis-Images mit einer Linux-Distribution wie Debian, Alpine und Ubuntu; Images mit integrierten Sprach- und Framework-Paketen wie Python, Node oder OpenJDK; sowie Images mit vorgefertigten App-Komponenten wie NGINX, WordPress, Mongo und MySQL. Es gibt noch viele weitere Images, und wir erweitern die Liste laufend. Wenn Sie einen Vorschlag haben, lassen Sie es uns wissen!

Warum Sie Ihr Dockerfile weiterhin scannen sollten

Es mag so wirken, als könnten Sie auf das Scannen des Dockerfiles verzichten, da Snyk Container Basis-Images jetzt automatisch erkennt. Es gibt jedoch gute Gründe, das Dockerfile (sofern Sie eines verwenden) in Ihre sicheren Entwicklungspraktiken einzubeziehen:

  1. Frühzeitige Warnung: Wenn Sie Git-Repositories in Snyk importieren, suchen wir unter anderem nach einem Dockerfile. So können wir Sie so früh wie möglich darauf hinweisen, dass es möglicherweise ein besseres Basis-Image gibt. Und da wir in Ihre Quellcode-Repositories integriert sind, können wir die Korrekturen für Basis-Images über Pull Requests automatisieren.

  2. Nachvollziehbarkeit: Wenn Sie mit Snyk Container sowohl das Dockerfile als auch die daraus erstellten Container-Images scannen, können Sie die Ergebnisse miteinander verknüpfen. So können Sie nachvollziehen, woher Images in Ihrer Umgebung stammen, und Ihre laufenden Produktionscontainer mit ihrer Quelle verbinden.

  3. Vollständigkeit: Das Scannen des Dockerfiles aus Git warnt frühzeitig bei der Auswahl des Basis-Images, beschränkt sich jedoch darauf, nur Empfehlungen zu Basis-Images zu geben. Denn welches Image aus diesem Dockerfile entsteht, hängt davon ab, wann es erstellt wird, da Linux-Pakete und Basis-Images häufig aktualisiert werden. Das Dockerfile allein zeigt nicht, was tatsächlich in einem bereits erstellten Image enthalten ist. Außerdem wird das Dockerfile oft zusammen mit dem Code gespeichert, der im Container ausgeführt wird. Wenn Sie Sicherheitslücken und Code-Probleme gleichzeitig mit Problemen im Container sehen, erhalten Sie daher zusätzlichen Kontext.

Wenn Sie sowohl das Dockerfile als auch die Images scannen, erhalten Sie einen vollständigen Überblick über Sicherheitslücken – unabhängig davon, ob sie vom Basis-Image oder von anderen Image-Layern stammen. Außerdem können Sie direkt zur Quelldatei wechseln und die Probleme schnell beheben.

So legen Sie los

Wenn Sie die Funktionen zur Erkennung von Basis-Images und die Empfehlungen von Snyk selbst ausprobieren möchten, ist der Einstieg ganz einfach. Sie sind in allen Tarifen verfügbar, auch im kostenlosen Tarif. Erstellen Sie einfach ein Image auf Basis eines der beliebten offiziellen Basis-Images von Docker und scannen Sie es mit Snyk Container. Mit Version 1.677 oder höher der Snyk CLI erhalten Sie automatische Empfehlungen zu Basis-Images. Sie können Images auch in Ihren CI/CD-Pipelines und Container-Registries scannen. Wenn Sie den Snyk Business- oder Enterprise-Tarif nutzen, können Sie außerdem laufende Container in Ihren Kubernetes-Clustern scannen. In all diesen Fällen erhalten Sie dieselbe Erkennung von Basis-Images und dieselben Empfehlungen.

Sichern Sie Ihren Code mit modernsten Erkenntnissen

Lernen Sie in nur 30 Minuten das gesamte Funktionsspektrum von Snyk Code SAST kennen.