Docker-Sicherheits-Scans – Leitfaden 2023
Docker wird weltweit genutzt und hat die Art und Weise verändert, wie Anwendungen entwickelt werden. Erst kürzlich wurde die Marke von zehn Millionen Benutzern und 242 Mrd. Image-Abrufen überschritten.
Aus dem hohen Entwicklungstempo, das die Containerisierung ermöglicht, ergeben sich neue sicherheitsrelevante Aufgaben für Entwickler, die nun neben dem eigentlichen Programmieren auch noch Container-Abbilder erstellen und pflegen müssen. Vor diesem Hintergrund ist die entwicklerfreundliche Integration von Snyk und Docker nicht hoch genug anzusehen.
Was ist Docker?
Docker beinhaltet eine Reihe von PaaS-Produkten (Platform-as-a-Service), bei denen Anwendungen und Dienste in eigenen Sandboxes ausgeführt werden. Diese werden als Container bezeichnet und mittels Virtualisierung ausgeführt.
Mit Docker können nun sämtliche Abhängigkeiten von Diensten innerhalb solcher Container installiert werden. So brauchen Sie sich keine Gedanken zu machen, dass versehentlich unerwünschte oder abweichende Versionen ein und desselben Pakets installiert werden. Das vereinfacht die Freigabe anwendungsspezifischer Arbeitsumgebungen innerhalb und außerhalb des eigenen Teams.
Docker-Imagedateien können ganz einfach in den Docker Hub hochgeladen oder verschoben werden. Für dieses Docker-Angebot gibt es sowohl kostenlose als auch kostenpflichtige Konten. Alternativ stehen auch Repositories von Drittanbietern wie das Amazon Elastic Container Registry (ECR) oder das Container Registry von Google (GCR) zur Verfügung.
Doch wie genau wird festgelegt, welche Abhängigkeiten bzw. Programme im Container installiert werden sollen? Das geht mit Dockerfile – einem Dateiformat, das genau zu diesem Zweck entwickelt wurde.
Was ist eine Dockerfile?
Eine Dockerfile sagt Docker, wie genau Container erstellt werden sollen. Sobald sämtliche Anweisungen in der Dockerfile abgelegt worden sind, lässt sich auf dieser Grundlage eine Imagedatei erstellen. Und die können Sie dann als Vorlage weitergeben und es so auch anderen ermöglichen, Abbilder nach demselben Muster zu erstellen. Die Imagedateien lassen sich aber auch direkt teilen. Der größte Vorteil besteht darin, dass Imagedateien lediglich einmal freigegeben und dann nie wieder nachgebildet werden müssen.
Wissenswertes über Docker-Sicherheits-Scans
Was sind Sicherheits-Scans von Docker-Images?
Sicherheits-Scans von Docker-Images dienen dazu, bekannte Sicherheitslücken in den Paketen zu finden, die in einer Docker-Imagedatei aufgelistet sind. So lassen sich Schwachstellen in Containerabbildern finden und beseitigen, bevor die Imagedatei in Docker Hub oder woanders gespeichert wird.
Die Integration von Snyk und Docker bettet entwicklerfreundliche Scans der Container-Sicherheit direkt in Docker ein. So können Sie Containerabbilder mit einem einfachen Befehl gleich nach ihrer Erstellung über den Docker Desktop scannen:
snyk container test <image-name>
Auf diese Weise finden und beseitigen Sie Schwachstellen in Containerabbildern, noch bevor Sie die Imagedateien in Docker Hub oder an anderer Stelle speichern.
Die Schwachstellen-Scans von Snyk unterscheiden sich von anderen Verfahren zur Erkennung von Sicherheitslücken. So werden nicht nur sämtliche Mängel aufgelistet, sondern vor allem Handlungsempfehlungen gegeben:
Wird die Dockerfile per
--file in die Imagedatei aufgenommen,
<path/to/Dockerfile>
finden sich unter den Ergebnissen desDocker-Scans
auch Informationen zur Auswahl aktuellerer bzw. kleinerer Imagedateien, die weniger Schwachstellen enthalten.Zudem werden alle Sicherheitsrisiken zusammen mit den für die Problemsuche erforderlichen Abhängigkeiten in die jeweilige Dockerfile-Anweisung aufgenommen.
Container-Schwachstellen automatisch beheben
Container-Schwachstellen mit Snyk kostenlos finden und beheben
Wozu dienen Docker-Sicherheits-Scans?
Docker-Sicherheits-Scans sind die wichtigste Möglichkeit, Schwachstellen in Containerabbildern zu finden und zu beseitigen, bevor die Imagedatei in Docker Hub oder an anderer Stelle gespeichert wird.
Wer eine externe Containerorchestrierung wie Kubernetes nutzt, nimmt oft irrtümlich an, dass auf diese Weise bereits sämtliche Sicherheitsmängel beseitigt würden. Doch wenngleich Kubernetes bei der Ausführung von Pods (= Containern) bestimmte Sicherheitsrichtlinien befolgt, bleibt in Sachen Code- und Dienstsicherheit doch einiges zu wünschen übrig. Und die Verantwortung für diese Themen wird auf die Benutzer abgeschoben Daher sollten Sie bei der Konfiguration von Kubernetes-Clustern mithilfe von Code unbedingt die Kubernetes-Sicherheitshinweise beachten.
Verschiedene Formen von Docker-Sicherheits-Scans
Die im Docker-Image gelisteten Pakete mithilfe der erwähnten CVE-Datenbank auf bekannte Schwachstellen hin zu prüfen, ist keineswegs ausreichend. Denn Sicherheitslücken können überall lauern. Deshalb gibt es für Docker-Container diverse Programme für Sicherheits-Scans:
Netzwerkkonfiguration: Einige Programme prüfen Image-Port und Netzwerkkonfiguration auf Probleme und zeigen entsprechende Hinweise an. Zwei Beispiele dafür sind Cilium und Sysdig Falco.
Identitäts- und Zugangsverwaltung Eine wichtige Sicherheitsvorkehrung besteht darin, den uneingeschränkten Zugriff von Containern auf sämtliche Ressourcen zu verhindern. Dies beinhaltet auch die Zuweisung verschiedener Rollen und Zuständigkeiten zu Docker-Containern. Dafür gibt es mehrere Programme, die die Rollenaufteilung dann auch durchsetzen und überwachen können. Ein Beispiel für Programme dieser Art ist Notary.
Benutzerspezifische Richtlinien: Einige Programme ermöglichen die Aufstellung und Durchsetzung individueller Sicherheitsrichtlinien für sämtliche Container. Ein beliebtes Beispiel dafür ist Grafeas.
Open-Source-Programme: Es gibt zahlreiche Open-Source-Programme für Schwachstellen-Scans. Diese erfreuen sich bei Entwicklern besonders großer Beliebtheit, weil sie oft andere Open-Source-Tools wie Frameworks, Betriebssysteme oder integrierte Entwicklungsumgebungen nutzen. Sie sind eine beliebte Wahl, da sie leicht zu überprüfen und äußerst transparent sind. Wenn die Containervirtualisierung mit Docker Neuland für Sie ist, ist zudem relevant, welche Anweisungen in der Dockerfile Sicherheitsprobleme im Container verursachen. Auch dafür gibt es bereits einige Angebote. Snyk ist ein hervorragendes Beispiel für ein Open-Source-Sicherheits-Scanprogramm und kann nach der Anmeldung kostenlos genutzt werden.
Zwar bietet kein Scanner absolute Sicherheit. Dennoch unterstützen sie die Sicherheit von Docker-Imagedateien und verringern damit die Gefahr von Sicherheitslücken in Anwendungen und Infrastrukturen. Zudem ist bei einigen Programmen eine durchgehende Überwachung der Container mit entsprechenden Warnhinweisen möglich, sodass Sie bei Problemen sofort benachrichtigt werden. Und wer die Docker-Sicherheitshinweise befolgt, verringert das Risiko von Sicherheitslücken zusätzlich Erstellen und versenden Sie Container-basierte Anwendungen sicher. Schützen Sie Ihre containerisierten Anwendungen mit dem Docker-Schwachstellen-Scanner von Snyk.
Docker-Sicherheits-Scans – Cheatsheet
Docker wird weltweit genutzt und hat die Art und Weise verändert, wie Anwendungen entwickelt werden. Erst kürzlich wurde die Marke von zehn Millionen Benutzern und 242 Mrd. Image-Abrufen überschritten.
Aus dem hohen Entwicklungstempo, das die Containerisierung ermöglicht, ergeben sich neue sicherheitsrelevante Aufgaben für Entwickler, die nun neben dem eigentlichen Programmieren auch noch Container-Abbilder erstellen und pflegen müssen. Vor diesem Hintergrund ist die entwicklerfreundliche Integration von Snyk und Docker nicht hoch genug anzusehen.
Im Rahmen der SnykCon 2020 haben wir bereits die Aufnahme von Container-Scans mit Snyk in Docker Desktop angekündigt. Damit lösen wir unser Versprechen ein, Snyk zum Sicherheitspartner für Docker-Imagedateien zu machen und Snyk-Scans direkt in Docker Hub einzubinden.
Die fünf Schritte der Container-Sicherheit mit Docker Desktop
Vergewissern Sie sich, dass Sie die neueste Version von Docker Desktop nutzen.
Melden Sie sich an.
Führen Sie einen ersten Docker-Scan durch.
Scannen Sie die Imagedatei zusammen mit der Dockerfile.
Filtern Sie nun die Ergebnisse des Scans.
In unserem Docker Vulnerability Scanning CLI Cheatsheet finden Sie zahlreiche Tipps zur Verwendung von Docker Desktop und Snyk. Eine Auswahl dieser Tipps haben wir hier für Sie zusammengestellt.
Schritt 1: Vergewissern Sie sich, dass Sie die neueste Version von Docker Desktop nutzen.
Docker Desktop enthält bereits seit einigen Monaten die Scanfunktionen von Snyk. Falls Sie eine Weile kein Update durchgeführt haben oder nicht wissen, ob Sie alle Snyk-Komponenten installiert haben, können Sie das folgendermaßen überprüfen.
Über die Befehlszeilenschnittstelle | In Docker Desktop unter „About“ |
---|---|
Hier können Sie den Befehl | Falls das kleine Snyk-Logo und die Versionsinformationen angezeigt werden, sind Sie auf dem neuesten Stand. |
$ docker scan --help
Usage: docker scan [OPTIONS] IMAGE A tool to scan your images
Schritt 2: Melden Sie sich an.
Um einen Scan zu starten, benötigen Sie eine Docker-ID und müssen sich in Docker Desktop anmelden Jeden Monat können Sie zehn Container-Images kostenlos scannen. Wenn Sie sich zusätzlich bei Snyk einloggen, können Sie sogar 200 Scans pro Monat durchführen. Der Snyk-Login ist mit Ihrer Docker-ID möglich. Auch wenn Sie bei Snyk noch keine eigenen Anmeldedaten haben, können Sie also gleich loslegen.
$ docker scan --login
Falls Sie für die Anmeldung lieber einen API-Token nutzen möchten, denken Sie an das Flag --token
und verwenden Sie Ihren Token als Flag-Argument. Ihren API-Token finden Sie in Snyk unter Einstellungen –> Konten (Settings –> Service Accounts).
Wenn Sie sich bei Snyk registrieren, profitieren Sie zudem von weiteren Scanfunktionen für Abhängigkeiten, Konfigurationsdateien und vieles mehr. So erhöhen Sie Ihre Open-Source-Sicherheit zusätzlich. In unserem Interview erfahren Sie, wie Snyk in den gesamten Softwareentwicklungs-Lebenszyklus (SDLC) eingebunden werden kann – in integrierte Entwicklungsumgebungen (Integrated Developer Environments, IDE), Quelltextverwaltung (Source Code Management,SCM), kontinuierliche Integration und kontinuierliche Entwicklung (CI/CD) sowie Plattformen und vieles mehr.
Schritt 3: Führen Sie einen ersten Docker-Scan durch.
Mit dem Befehl docker scan myapp:mytag
können Sie einzelne Docker-Images auf Sicherheitslücken hin überprüfen. Es gibt auch noch andere Flags, mit denen Sie Ihre Ergebnisse eingrenzen können (siehe unten).
Schritt 4: Scannen Sie die Imagedatei zusammen mit der Dockerfile.
Die Option --file path/to/Dockerfile
ist besonders hilfreich. Wenn Sie die Dockerfile einbeziehen, erhalten Sie verschiedene Upgrade-Empfehlungen zu Ihrem Basis-Image. Außerdem werden die Dockerfile-Befehle aufgeführt, die die jeweiligen Schwachstellen verursacht haben.
Schritt 5: Filtern Sie nun die Ergebnisse des Scans.
Das Flag --exclude-base
muss zusammen mit dem Flag –fileverwendet werden und übergeht sämtliche Sicherheitsrisiken, die auf das Basis-Image zurückgehen. So können Sie sich ganz auf die Probleme im eigentlichen Container-Image konzentrieren.
Das Flag --dependency-tree
gibt eine Abhängigkeitsstruktur aus, die Ihnen bei der Isolierung der Problemursache hilft.
Mit dem Flag --json
können Sie die Scan-Ergebnisse konfigurieren. Das jq tool ermöglicht mit den folgenden Schlüsseln das Analysieren und Filtern von JSON-Resultaten:
packageName
: Name des übergeordneten Paketsseverity
: Wertung auf Grundlage des Common Vulnerability Scoring System (CVSS)id
: Kennung in der Schwachstellen-Datenbank von Snykname
: Name des Schwachstellen-Binärcodesversion
: die im Container-Image installierte VersionnearestFixedInVersion
: erforderliche Version für die SchwachstellenbehebungdockerfileInstruction
: Zeile, in der sich das anfällige Paket befindetdockerBaseImage
: erkanntes übergeordnetes Image
Die oben aufgeführten Schritte sollen Ihnen den Einstieg in die Container-Sicherheit erleichtern. Falls Sie eine Gedächtnisstütze oder weitere Beispiele benötigen, empfehlen wir Ihnen das Docker CLI Cheatsheet. Die Docker Container Scanning CLI ist leicht verständlich und eine gute Möglichkeit, um Schwachstellen frühzeitig in der Entwicklung zu erkennen und zu beheben. Die Docker-native Lösung kann direkt nach der Entwicklung eingesetzt werden. So finden Sie etwaige Probleme, noch bevor die Imagedatei überhaupt in den Docker Hub gelangt. Falls Sie Fragen oder Anregungen haben, freuen wir uns in der Snyk Community auf Ihren Beitrag.
Developer-First Security für Container
Mit Snyk identifizieren Sie Schwachstellen in Container-Images und Kubernetes-Workloads und adressieren sie automatisch.