In this article
Leitfaden zum Docker-Security-Scanning
Docker hat eine riesige weltweite Nutzerbasis. Kürzlich wurde die Marke von 10 Millionen Nutzern und 242 Milliarden Image-Abrufen überschritten. Docker hat die Art und Weise verändert, wie Anwendungen entwickelt werden.
Durch die höhere Entwicklungsgeschwindigkeit, die Containerisierung ermöglicht, tragen Entwickler zunehmend zusätzliche Sicherheitsverantwortung: Sie müssen nun neben ihrem Code auch Container-Images pflegen.
Was ist Docker?
Docker ist eine Reihe von Platform-as-a-Service-Produkten (PaaS), mit denen Anwendungen und Services in eigenen, dedizierten Sandboxes, sogenannten Containern, ausgeführt werden. Dabei kommt Virtualisierung auf Betriebssystemebene zum Einsatz.
Mit Docker können Sie alle Abhängigkeiten, die ein Service benötigt, in einem Container installieren. So müssen Sie sich keine Gedanken darüber machen, unerwünschte oder unterschiedliche Versionen desselben Pakets nativ auf Ihrem Computer zu installieren. Dadurch lässt sich die vollständige Arbeitsumgebung einer Anwendung ganz einfach mit anderen innerhalb oder außerhalb Ihres Teams teilen.
Sie können Ihre Docker-Images ganz einfach auf DockerHub, dem eigenen Dienst von Docker mit kostenlosen und kostenpflichtigen Konten, oder in Repositories von Drittanbietern wie Amazon Elastic Container Registry (ECR) oder Google Container Registry (GCR) hochladen oder pushen.
Doch wie teilen Sie einem Container mit, welche Abhängigkeiten oder Tools darin installiert werden sollen? Genau dafür wurde das Dockerfile entwickelt.
Was ist ein Dockerfile?
Ein Dockerfile teilt Docker mit, wie ein Container vorbereitet werden soll. Sobald Sie alle Anweisungen in das Dockerfile geschrieben haben, können Sie daraus ein Image „erstellen“. Um Ihre Images zu teilen, können Sie entweder einfach die Dockerfile-Vorlage weitergeben, mit der jeder das Image erstellen kann, oder die Images direkt teilen. Der Vorteil: Sobald Sie Ihr Image geteilt haben, muss es nicht neu erstellt werden.
Docker-Security-Scanning erklärt
Was ist Docker-Image-Sicherheitsscanning?
Docker-Image-Sicherheitsscanning ist ein Verfahren, um bekannte Sicherheitslücken in den Paketen zu identifizieren, die in Ihrem Docker-Image aufgeführt sind. So können Sie Sicherheitslücken in Container-Images finden und beheben, bevor Sie das Image auf Docker Hub oder in eine andere Registry übertragen.
Snyk Container stellt Entwicklern direkt Container-Sicherheit-Scans zur Verfügung. Damit können Sie Ihr Container-Image über die Snyk CLI sowie die Snyk Container-Erweiterung in Docker Desktop (verfügbar im Docker Desktop Extensions Marketplace) scannen. Das Scannen über die Befehlszeile ist ganz einfach. So können Sie loslegen:
Testen Sie Ihr Image mit der Snyk CLI und diesem Befehl:
snyk container test <image-name>So können Sie Schwachstellen in Container-Images finden und beheben, bevor Sie das Image in Docker Hub, ECR, GCR, Harbor oder andere Registries pushen.
Die von Snyk unterstützten Schwachstellen-Scans unterscheiden sich ein wenig von anderen Schwachstellen-Scans, die Sie vielleicht kennen. Snyk listet nicht einfach nur alle Probleme auf, sondern möchte Entwickler zum Handeln anleiten:
Wenn Sie das Dockerfile zusammen mit dem Image über die Option
--file <path/to/Dockerfile>einbeziehen, enthält das Ergebnis vondocker scanDetails dazu, wie Sie ein aktuelleres und/oder kleineres Basis-Image mit weniger Schwachstellen auswählen.Schwachstellen werden der Dockerfile-Anweisung zugeordnet, durch die sie eingeführt wurden. Außerdem werden die relevanten Abhängigkeiten angegeben, die Ihnen dabei helfen, ein Problem aufzuspüren und zu beheben.
Der Befehl
snyk container monitorüberprüft Ihre vorhandenen Container kontinuierlich auf neu entdeckte Schwachstellen und benachrichtigt Sie, sobald eine gefunden wird.
Container-Sicherheit für DevSecOps
Finden und beheben Sie Container-Schwachstellen kostenlos mit Snyk.
Warum ist Docker-Security-Scanning wichtig?
Das Scannen der Sicherheit von Container-Images ist wichtig, denn so lassen sich Schwachstellen in Container-Images finden und beheben, bevor Sie das Image in Docker Hub, ECR, GCR, Harbor oder andere von Ihnen genutzte Registries pushen.
Wenn Sie einen Container-Orchestrierungsdienst wie Kubernetes verwenden, gehen Sie vielleicht davon aus, dass diese Sicherheitsprobleme bereits gelöst sind. Das ist jedoch nicht unbedingt der Fall. Kubernetes bietet zwar Sicherheitsrichtlinien für das Ausführen von Pods (Pods sind im Wesentlichen Container), schützt aber den darin ausgeführten Code oder die Services kaum. Diese Verantwortung liegt stattdessen bei Ihnen. Bei der Konfiguration Ihres Kubernetes-Clusters, die ebenfalls über Code erfolgt, sollten Sie die Best Practices für Kubernetes-Sicherheit befolgen.
Arten des Docker-Security-Scannings
Die Überprüfung der in Ihren Docker-Images aufgeführten Pakete auf bekannte Schwachstellen anhand der oben genannten CVE-Datenbank reicht nicht immer aus. Sicherheitslücken können an vielen verschiedenen Stellen lauern. Für Docker-Container stehen daher zahlreiche Tools und Services für Sicherheitsscans zur Verfügung:
Tools für die Netzwerkkonfiguration: Diese Tools scannen Ports und Netzwerkkonfigurationen von Docker-Images, um entsprechende Probleme zu erkennen und zu markieren. Beispiele dafür sind Cilium und Sysdig Falco.
Tools für Identitäts- und Zugriffsverwaltung: Eine wichtige Sicherheitsmaßnahme besteht darin, zu verhindern, dass Ihr Container uneingeschränkten Zugriff auf all Ihre Ressourcen hat. Dazu werden Docker-Containern bestimmte Rollen und Verantwortlichkeiten zugewiesen. Es gibt Tools, die diesen Prozess erleichtern und diese Rollen zudem durchsetzen und überwachen. Notary ist ein solches Tool.
Tools für benutzerdefinierte Richtlinien: Mit einigen Tools können Sie sogar eigene Sicherheitsrichtlinien für Ihre Container definieren und durchsetzen. Grafeas ist ein beliebtes Tool in dieser Kategorie.
Open-Source-Tools: Es gibt eine Reihe von verfügbaren Open-Source-Tools zum Scannen auf Schwachstellen. Open-Source-Scanning- und SBOM-Erstellungstools sind bei Entwicklern beliebt, die andere Open-Source-Tools wie Frameworks, Betriebssysteme oder IDEs verwenden. Sicherheitsexperten bevorzugen ebenfalls Open Source, da sich diese Lösungen leicht prüfen lassen und mehr Transparenz bieten. Wenn Sie neu bei Docker oder Containern sind, möchten Sie außerdem wissen, welche Anweisung im Dockerfile Sicherheitsprobleme in Ihrem Container verursacht. Auch dafür gibt es Tools. Snyk Open Source ist ein hervorragendes Beispiel für ein Open-Source-Sicherheitsscan-Tool (auch als Software Composition Analysis-Tool bekannt), für das Sie sich kostenlos anmelden können.
Tools für Anwendungssicherheit: Es gibt verschiedene Arten von Tools, mit denen Sie den Code in Ihren Docker-Containern schützen können. Dazu gehören SAST-Tools wie Snyk Code, die Entwickler dabei unterstützen, ihre Anwendungen abzusichern.
Kein Sicherheitsscan-Tool kann die 100-prozentige Sicherheit eines Docker-Images oder -Containers garantieren. Solche Tools zum Scannen der Sicherheit von Docker-Images können jedoch dazu beitragen, das Risiko von Schwachstellen in Ihrer Anwendung und Infrastruktur zu minimieren. Einige Tools bieten zudem kontinuierliche Container-Überwachung und Warnmeldungen, sodass Sie benachrichtigt werden, wenn ein Problem erkannt wird. Wenn Sie außerdem die Best Practices für Docker-Sicherheit befolgen, können Sie das Risiko verringern, Sicherheitslücken einzuführen. Entwickeln und veröffentlichen Sie Container-Anwendungen mit Zuversicht. Sichern Sie Ihre containerisierten Anwendungen mit dem Docker-Schwachstellenscanner von Snyk.
Die wichtigsten Erkenntnisse zum Docker-Security-Scanning
Der Snyk Container CLI-Scanner ist ein einfaches und zugleich leistungsstarkes Tool, um Schwachstellen früh im Entwicklungsprozess zu erkennen und zu beheben. Sie können die Lösung direkt nach dem Erstellen ausführen und Probleme beheben, bevor das Image überhaupt in Ihre Registry gepusht wird. Wenn Sie Fragen haben oder einen cleveren Anwendungsfall entdeckt haben, freuen wir uns, von Ihnen auf der Snyk Community-Website zu hören.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.