In this article
Alles, was Sie für den Einstieg in Container-Sicherheit wissen müssen
Container-Sicherheit für Entwickler
Der Einsatz von Containern ist in den vergangenen Jahren exponentiell gewachsen. Container-Technologien gibt es zwar schon seit Jahrzehnten, doch erst die Einführung von Docker im Jahr 2013 machte es für Unternehmen praktikabler, ein Entwicklungs- und Betriebsmodell mit Containern an erster Stelle einzuführen.
Mit diesem Wachstum gehen Sicherheitsrisiken einher. Bei Millionen verfügbarer Images ist die Absicherung von Containern eine eigene Disziplin. Für Container sind mehrere Sicherheitsebenen relevant, zum Beispiel:
Das Container-Image und die darin enthaltene Software
Die Interaktion zwischen dem Container, dem Host-Betriebssystem und anderen Containern auf dem Host
Das Host-Betriebssystem
Container-Netzwerke und Speicher-Repositories
Die Laufzeitumgebung, häufig in Kubernetes-Clustern
Da jede Ebene einen eigenen Leitfaden verdient, konzentriert sich dieser Leitfaden auf den ersten Aspekt: das Image und Ihren Code. Ein einzelnes Container-Image kann Hunderte oder Tausende von Schwachstellen enthalten. Dadurch ist Ihr Unternehmen Sicherheitsvorfällen wie einem Datenleck und Produktivitätsverlusten ausgesetzt – etwa durch den Zeitaufwand für die Triage und Bewertung von Schwachstellen, der mit der wachsenden Zahl verwendeter Images steigt.
Was ist Container-Sicherheit?
Die Anwendungssicherheit lag traditionell in der Verantwortung spezialisierter Sicherheitsteams. Doch die Art und Weise, wie Container definiert und erstellt werden, überträgt diese Verantwortung zunehmend auf Entwickler und DevSecOps-Teams.
Dieser Wandel der Verantwortung und die Geschwindigkeit, mit der Container aktualisiert und bereitgestellt werden können, erfordern eine praktische Sicherheitsmethodik. Es reicht nicht aus, Container in CI zu scannen und bewährte Image-Praktiken zu befolgen, wenn ein Scan Hunderte von Schwachstellen aufdeckt.
Was ist Containersicherheit?
Containersicherheit umfasst die Implementierung von Sicherheitstools und -prozessen, um für jedes containerbasierte System oder jeden Workload umfassenden Informationsschutz zu gewährleisten – einschließlich des Container-Images, des laufenden Containers und aller Schritte, die zum Erstellen und Ausführen dieses Images erforderlich sind.
Wir haben bereits einen Leitfaden zur Container-Sicherheit mit Docker erstellt. Weitere praktische Tipps finden Sie in unseren 3 praktischen Schritten zur Absicherung eines Container-Images. In diesem Beitrag geben wir einen Überblick über die DevSecOps-Praktiken, mit denen Unternehmen sicherere Container-Images und laufende Container erstellen. Außerdem stellen wir technische Tools wie Snyk Container, Snyk IaC und unsere Partnerschaft mit Sysdig vor, die umfassende Container-Sicherheit von der Entwicklung bis zur Laufzeit ermöglichen.
Warum ist Container-Sicherheit wichtig?
Container-Sicherheit ist wichtig, weil das Container-Image alle Komponenten enthält, die Ihre Anwendung später ausführen. Verbergen sich Schwachstellen im Container-Image, steigt das Risiko von Sicherheitsproblemen in der Produktionsumgebung und deren potenzielle Schwere. Deshalb sollten Sie auch die Produktionsumgebung überwachen. Sie können Images ohne Schwachstellen und erhöhte Berechtigungen erstellen, müssen aber trotzdem überwachen, was zur Laufzeit geschieht.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.
Container-Sicherheit in verschiedenen Ökosystemen im Überblick
Docker-Container-Sicherheit
Die enorme Docker-Nutzerbasis – mit mehreren zehn Millionen Nutzern und Hunderten Milliarden Image-Pulls – zeigt, wie stark die Containerisierung die Entwicklung von Anwendungen verändert. Die Verantwortung für die Sicherheit geht zunehmend auf Entwickler über. Es ist wichtig, Docker-Images zu scannen, bevor Sie sie an Docker Hub oder andere Registries übertragen. So lassen sich Schwachstellen in Linux-Paketen, Benutzerberechtigungen, Netzwerkkonfigurationen, Open-Source-Tools oder der Zugriffsverwaltung finden und beheben. Ein solcher Scan kann Ihnen helfen, Schwachstellen in Ihrer Anwendung und Infrastruktur aufzudecken und zu beheben, bevor Sie sie veröffentlichen.
Kubernetes-Container-Sicherheit
Kubernetes bietet zahlreiche Sicherheitskontrollen, mit denen Sie Ihre Cluster, Workloads und Container sicherer machen können. Beachten Sie, dass Kubernetes manuell konfiguriert werden muss, da bei der Bereitstellung von Kubernetes keine Sicherheitskontrollen vorkonfiguriert sind. Außerdem reichen die standardmäßigen Sicherheitskonfigurationen häufig nicht aus, obwohl Kubernetes Kontrollen und Funktionen für sichere Cluster bietet. Für die sichere Bereitstellung von Workloads sind Kubernetes-Kenntnisse erforderlich. Weitere Informationen finden Sie auf unserer Seite zu den Best Practices für Kubernetes-Sicherheit.
GKE-Container-Sicherheit
Google Kubernetes Engine (GKE) bietet zahlreiche Tools zur Absicherung von Workloads. Für die GKE-Sicherheit empfiehlt sich ein mehrschichtiger Ansatz, bei dem Sicherheitsfunktionen für Zugriffskontrollen, Workloads und weitere Sicherheitsaspekte konfiguriert werden. GKE kann im Standardmodus ausgeführt werden, in dem Sie die zugrunde liegende Infrastruktur verwalten, oder im Autopilot-Modus, in dem GKE die Infrastruktur bereitstellt und verwaltet. Die Kubernetes-Integration von Snyk Container ermöglicht es Kunden, Workloads auf GKE abzusichern – sowohl im Standard- als auch im Autopilot-Modus –, Schwachstellen in Container-Images und Anwendungscode aufzudecken und ihre Kubernetes-Konfigurationen auf Probleme zu überprüfen.
AKS-Container-Sicherheit
Microsoft Azure Kubernetes Service (AKS) bietet wie GKE umfangreiche Sicherheitsfunktionen, etwa die Integration mit Azure Policy sowie regelmäßig schnelle Updates und Patches. Allerdings müssen Cluster-Komponenten halbmanuell auf neuere Versionen aktualisiert werden. Außerdem müssen beim Erstellen des Clusters Netzwerkrichtlinien aktiviert werden. Wie bei GKE kann Snyk Ihre Kubernetes-Konfigurationen und Container scannen und die automatische Überwachung aktivieren, während Sie AKS-Ressourcen bereitstellen.
EKS-Container-Sicherheit
Amazon Elastic Kubernetes Service (Amazon EKS) verfügt standardmäßig über leistungsstarke Sicherheitsfunktionen und basiert auf dem Modell der geteilten Verantwortung von AWS. Dieses legt fest, wer für die verschiedenen Aspekte der Container-Sicherheit verantwortlich ist. Üblicherweise ist AWS für die Sicherheit „der“ Cloud verantwortlich, während Sie als Kunde für die Sicherheit „in“ der Cloud zuständig sind. Wie bei den anderen oben genannten Kubernetes-Optionen lässt sich Snyk problemlos in Amazon EKS und Amazon Elastic Container Registry (Amazon ECR) integrieren, um Ihre Kubernetes-Konfigurationen und Container zu scannen und die automatisierte Überwachung bei der Bereitstellung in Amazon EKS zu aktivieren.
Container mit Snyk Container absichern
Bei Millionen bekannter Container-Schwachstellen kann es Entwickler überfordern, Schwachstellen zu finden, zu priorisieren und zu beheben. Snyk Container bringt Klarheit in herkömmliche Schwachstellenberichte: Die Lösung erkennt und behebt Schwachstellen in Anwendungen und Containern gemeinsam – auch wenn Sie keinen Zugriff auf den ursprünglichen Quellcode haben, der in Ihren Containern ausgeführt wird.
Snyk Container scannt kontinuierlich nach neuen Schwachstellen, priorisiert Korrekturen anhand des Kontexts und der Ausnutzbarkeit, deckt Probleme in Open-Source-Abhängigkeiten auf und ordnet Schwachstellen Dockerfile-Befehlen zu, damit Entwickler Korrekturen einfacher einführen können. Mit Snyk Container wurden 2021 mehr als 130 Millionen Container-Tests durchgeführt. Nutzer von Snyk Container behoben 56 Millionen Schwachstellen.
Gemeinsam mit Snyk Infrastructure as Code sichert Snyk Container Container-Konfigurationen ab und lässt sich in zahlreiche Kubernetes-Plattformen wie AKS und GKE, Container-Registries wie Docker Hub, GCR und Quay sowie Container-Basisbetriebssysteme wie Amazon Linux und Ubuntu integrieren – und vieles mehr. Integrierte Schwachstellen-Scans helfen Entwicklern, geeignete minimale Basis-Images zu finden und zu verwenden, und automatisieren den Aktualisierungsprozess, um Schwachstellen schnell zu beseitigen.
Wie der Rest der Snyk-Plattform basiert auch Snyk Container auf einem Entwickler-zuerst-Ansatz und unterstützt die DevSecOps-Kultur. Die Lösung lässt sich in die IDE integrieren, scannt Pull Requests vor dem Merge, gibt Hinweise zur Behebung und führt automatisierte Tests in CI/CD-Pipelines durch. Sobald Container ausgeführt werden, überwacht sie kontinuierlich Deployments auf die Gefährdung durch bekannte oder neu veröffentlichte Schwachstellen. Benachrichtigungen werden über Slack, Jira, E-Mail oder andere Kanäle versendet, damit DevSecOps-Teams Schwachstellen schnell erkennen und beheben können.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.
Wie die Partnerschaft von Snyk und Sysdig Container-Runtime-Sicherheit ermöglicht
Das frühe Feedback von Snyk Container zu Images kann 70 % oder mehr der Schwachstellen beseitigen – doch möglicherweise bleiben 30 % der Runtime-Schwachstellen unberücksichtigt. In Tausenden von Containern und zahlreichen Clustern können sich so Hunderte von Schwachstellen summieren. Diese Schwachstellen zu finden und zu beheben, kann eine Herausforderung sein. Es ist schwierig festzustellen, welche Pakete in einem laufenden Container verwendet werden und welche Schwachstellen diese zur Laufzeit ausgeführten Pakete betreffen. Die Sicherheits- und Betriebsteams, die für die Verwaltung laufender Umgebungen zuständig sind, müssen Schwachstellen aufdecken, bevor sie die Entwicklungsteams mit der Behebung beauftragen können. Da Entwicklern zudem Systemkenntnisse fehlen, können ältere Schwachstellen-Tools Monate benötigen, um Probleme zu finden und zu beheben.
Snyk ist eine Partnerschaft mit Sysdig eingegangen, um Probleme in Laufzeitumgebungen zu beheben und mehr Kontext zu den dort auftretenden Problemen bereitzustellen. Diese Partnerschaft schafft eine Sicherheitslösung, die den gesamten DevOps-Prozess abdeckt. Die Kombination der Plattformen von Snyk und Sysdig sichert alles ab – vom Code in der Entwicklungsumgebung bis hin zur Infrastruktur, auf der der Cluster läuft.
Lesen Sie diesen Ankündigungsbeitrag, um mehr darüber zu erfahren, wie die Partnerschaft von Snyk und Sysdig Container-Sicherheit auf die Laufzeitumgebung ausweitet.
Zusammenfassung zur Container-Sicherheit
Container-Sicherheit ist ein weitreichendes Thema. Selbst wenn Sie sich auf die Sicherheit von Basis-Images beschränken, müssen Sie zahlreiche Herausforderungen berücksichtigen. Bei der Absicherung Ihrer Images sollten Sie einige wichtige Punkte beachten:
Verwenden Sie Basis-Images eines vertrauenswürdigen Anbieters und überprüfen Sie deren Authentizität mithilfe digitaler Signaturen.
Entscheiden Sie sich für minimale Basis-Images, die nur die grundlegenden Betriebssystempakete und Ihr bevorzugtes Framework enthalten, und bauen Sie darauf auf.
Prüfen Sie Images frühzeitig und regelmäßig auf Schwachstellen.
Scannen Sie während des gesamten Software-Lebenszyklus: auf dem Desktop, in CI, gespeicherte Images in Registries und laufende Container in Ihren Clustern.
Wählen Sie Scan-Tools, die über einfache, tabellenartige Schwachstellenberichte hinausgehen. Sie sollten Empfehlungen zur Risikominderung und für Basis-Images geben, Entwicklern Informationen zur Behebung von Problemen bereitstellen und Ihnen die nötige Flexibilität bieten, um Ihre Sicherheitsprüfungen festzulegen.
Wenn Sie Ihre Container-Images über ihren gesamten Lebenszyklus hinweg absichern möchten, automatisiert Snyk Container die Container-Sicherheit mit einem Entwickler-zuerst-Ansatz. So erhalten Sie die richtige Balance zwischen Sicherheit und Produktivität und können sicherere Images und laufende Container erstellen.
Glossar zur Container-Sicherheit
Container-Scanning: Das Scannen von Paketen und Abhängigkeiten in einem Container-Image, um Schwachstellen in Containern zu finden
Container-Monitoring: Das Erfassen von Kennzahlen und die Überwachung des Zustands containerisierter Anwendungen und Architekturen
Kubernetes: Ein Open-Source-System, das ursprünglich bei Google entwickelt wurde, um containerisierte Anwendungen über einen Cluster hinweg zu orchestrieren.
K8s: Eine Abkürzung für Kubernetes.
Docker: Die weltweit beliebteste Container-Plattform. Docker machte die Tools und Prozesse rund um die Erstellung und Ausführung von Containern allgemein zugänglich und ermöglicht Entwicklern die einfache Nutzung dieser Technologien.
Dockerfile: Eine Textdatei mit den Konfigurationen, die zum Erstellen eines Docker-Images benötigt werden.
Google Kubernetes Engine (GKE): GKE ist der verwaltete Dienst von Google zum Ausführen von Kubernetes-Workloads auf Google Cloud.
AKS: Der verwaltete Kubernetes-Dienst von Microsoft Azure. Er startete als allgemeinerer Azure Container Service und wurde zu AKS, als Kubernetes zur dominierenden Plattform für die Container-Orchestrierung wurde.
AWS EKS: Der verwaltete Kubernetes-Dienst von Amazon Web Services zum Ausführen von Kubernetes-Workloads auf AWS. AWS EKS kann eigenständig oder mit anderen Diensten wie AWS Fargate verwendet werden. AWS Fargate abstrahiert im Wesentlichen die gesamte Kubernetes-Infrastruktur, sodass sich Nutzer ausschließlich auf ihre eigenen Kubernetes-Pods konzentrieren können.
Container-Image: Eine statische Datei mit einer Reihe von Anweisungen zum Erstellen eines laufenden Containers
Container-Registry: Ein Repository für Container-Images und ein Verwaltungstool, mit dem sich Container-Images einfach speichern und teilen lassen.
Container-Runtime: Software, die Container auf einem Host-Betriebssystem erstellt, ausführt und verwaltet.
Shift-left: Eine Kultur und ein Set von Tools, die Sicherheit in Entwickler-Workflows integrieren
DevSecOps: DevSecOps steht für Entwicklung, Sicherheit und Betrieb und ist ein Ansatz, der Sicherheit im Softwarebereitstellungszyklus automatisiert.
FAQ zur Container-Sicherheit
Sind Container sicher?
Das können sie sein, standardmäßig sind sie jedoch selten ausreichend geschützt. Die Prozesse und Tools, die früher für herkömmliche Infrastrukturen eingesetzt wurden, reichen möglicherweise nicht aus, um eine starke Container-Sicherheit zu gewährleisten. Container haben die Landschaft verteilter Systeme verändert – deshalb müssen neue Methoden eingesetzt werden, um sie zu schützen. Es gibt ein breites Spektrum an Container-Sicherheitslösungen, die eingesetzt werden können und sollten, um Container-Workloads bestmöglich zu schützen.
Wie behebe ich Sicherheitslücken in Containern?
Das Beheben von Sicherheitslücken in Containern erfolgt in vier Schritten. Kümmern Sie sich zunächst um die Sicherheitslücken in Ihrem Code und Ihren Abhängigkeiten. Wählen Sie dann die kleinstmöglichen Basis-Images für Ihren Bedarf aus – beginnen Sie mit einer schlanken Variante und ergänzen Sie sie bei Bedarf. Prüfen Sie anschließend die zusätzlichen Tools und Pakete, die Sie hinzufügen. Je näher Container an den Produktionseinsatz rücken, desto weniger Extras sollten sie enthalten – idealerweise gar keine. Stellen Sie schließlich sicher, dass der Container mit so wenigen Berechtigungen wie möglich ausgeführt wird.
Wie sichern Sie ein Docker-Container-Image?
Um ein Docker-Container-Image abzusichern, sollten Sie sicherstellen, dass für den korrekten Betrieb keine Sicherheits-Anti-Patterns wie die Ausführung als Root erforderlich sind. Die Dokumentation von Docker bietet einen guten Einstieg und geht insbesondere auf Vertrauenswürdigkeit ein. Vertrauenskontrollen lassen sich auch in privaten Registries implementieren. Wenn Sie sicherstellen, dass Basis-Images nur ein Minimum an Paketen und Abhängigkeiten enthalten, und Scan-Tools zur Überwachung auf Schwachstellen einsetzen, können Sie Docker-Images zusätzlich absichern.
Was ist Container-Scanning?
Container-Scanning bezeichnet den Einsatz von Tools und Prozessen, um Container auf potenzielle Sicherheitslücken zu überprüfen. Es ist ein grundlegender Schritt, um containerisierte Pakete abzusichern. Scanning-Tools können unter anderem Code, transitive Abhängigkeiten, die Container-Konfiguration und die Container-Runtime-Konfiguration überprüfen.
Container-Sicherheit mit Fokus auf Entwickler
Snyk findet und behebt automatisch Schwachstellen in Container-Images und Kubernetes-Workloads.