Wer heute in der Cloud unterwegs ist, kommt an Docker Containern und Docker Security nicht vorbei. Weltkonzerne verlassen sich auf Infrastruktur-Technologie und bei DevOps-Teams gewinnt sie seit Jahren an Beliebtheit. Wie sicher ist Docker tatsächlich? Welche Risiken gehen mit dieser Technik einher? Und wie lassen sich diese entschärfen?
Was sind Docker Container?
Was Virtual Machines (VMs) für Hardware leisten, ermöglichen Container für Software. Docker ist die am weitesten verbreitete Software für die Cloud-Container-Technologie. Als neue Art der Virtualisierung ermöglichen Container das schlanke Isolieren, Verpacken und Ausliefern von Anwendungen unabhängig von anderen Prozessen. Die Technologie macht Programme mobil und portabel und eignet sich damit bestens für die agile Softwareentwicklung. Mit ihr können DevOps-Teams Softwareeinheiten effizient verschieben – zum Beispiel von der Entwicklungs- in die Testumgebung oder vom Staging in das Deployment.
Während VMs auch das Betriebssystem beinhalten und deshalb vergleichsweise schwer sind, enthalten Docker Container nur die Grundlagen. Den Rest ziehen sie aus dem Hostsystem – in der Regel aus Linux und dessen Kernel-Features Cgroups und Namespaces. Darüber hinaus kapselt ein Docker Container alles, was eine Anwendung zum Ausführen braucht. Dazu gehören neben dem Anwendungscode und installierten Paketen auch Systemtools, Bibliotheken und andere Abhängigkeiten. Gebündelt und verteilt werden die Prozesse in einem schlanken Betriebssystemabbild, das als Blueprint dient – dem Docker Image. Für zahlreiche Anwendungen sind vorgefertigte Images auf öffentlichen Plattformen wie hub.docker.com zum Download erhältlich. Unter anderem deshalb ist ein Konzept für die Container beziehungsweise Docker Security unverzichtbar.
Die Vorteile von Docker Containern: klein, leicht & effizient
Docker Container punkten vor allem mit ihrer leichtgewichtigen Natur. DevOps-Teams können daraus nützliche Vorteile ziehen, die dem gesamten Unternehmen zugutekommen:
Ressourcenersparnis: Container sind kompakter und kleiner als beispielsweise VMs, weil die OS-Installation und aufwändige Konfigurationen entfallen. Die teils notwendige Konfiguration passt meistens in eine kleine Textdatei. Die Mehrheit der Container basiert auf wenigen Codezeilen. Das senkt – zumindest bei einer soliden Docker Security – letztlich auch die Kosten.
Schnellere Bereitstellung: Über Images sind Container binnen Sekunden einsatzfähig. Mit speziellen Orchestrierungsdiensten lassen sie sich zügig in verschiedenen Cloud-Umgebungen bereitstellen. Dadurch können Unternehmen auf Markttrends flexibler reagieren und ihre Time-to-Market verkürzen.
Hohe Skalierbarkeit: Mit ihrer dynamischen Umgebung und ihrem schlanken Aufbau sind Container hoch skalierbar. Durch das Starten mehrerer Container mit demselben Docker Image lassen sie sich schnell replizieren.
Flexible Modifikation: Die Isolation von Containern bringt gleichzeitig mehr Spielraum und Flexibilität mit sich. Das erlaubt Entwickler*Innen, bestimmte Bereiche zu optimieren, ohne die gesamte Anwendung zu beeinflussen oder zu gefährden.
Höhere Sicherheit: Docker Container sind von Haus aus relativ sicher. Prozesse in anderen Containern oder auf dem Hostsystem sind standardmäßig weder sichtbar noch beeinflussbar. Auch die Sockets oder Schnittstellen anderer Container sind isoliert. Darüber hinaus ist es im Rahmen von CI-Pipelines möglich, die in Containern enthaltenen Software-Komponenten automatisch zu untersuchen und verhaltensbasierte Richtlinien cluster- und versionsübergreifend durchzusetzen.
Die wachsende Beliebtheit von Containern spiegeln auch verschiedene Studien wider: Laut CNCF 2020 Survey ist die Nutzung von Containern in der Produktion seit 2016 um 300 Prozent gestiegen. Damit wird gleichzeitig die Docker Security zu einem Thema für Unternehmen, denn: Wie so oft, rückt die Technik mit ihrer Verbreitung automatisch ins Visier von Cyberkriminellen.
Docker und Kubernetes – eine erfolgreiche Partnerschaft
Docker kommt selten allein: Um die Container in der Produktion effizient zu verwalten, sind spezielle Tools nötig. Eines der bekanntesten Orchestrierungswerkzeuge ist die Open-Source-Plattform Kubernetes (kurz k8s). Das Tool automatisiert das Bereitstellen, Verwalten, Skalieren, Überwachen und Vernetzen von containerisierten Workloads und Services. Durch das Hosten von Kubernetes-Clustern lassen sich Container auf verschiedenen Rechnern und Umgebungen ausführen, wobei ein Cluster mehrere Compute-Nodes beinhalten kann. Auf den Nodes können wiederum mehrere Pods betrieben werden. Ein Pod entspricht in der Regel einer Anwendung und umfasst normalerweise mehrere Container. Überwacht werden die Pods von einem Kubernetes-Agent – dem kubelet.
Orchestrierungstools wie Kubernetes leisten zum Beispiel die automatisierte Ressourcenanpassung, das Überwachen und Neustarten ausgefallener Container, das Konfigurationsmanagement und das Orchestrieren zusätzlicher Speicherressourcen wie AWS EBS. Für die Docker Security ist Kubernetes nicht ausreichend.
Wie sicher sind Docker Container?
Eine Hilfe in der Entwicklung, eine Herausforderung für die Security: Die Flüchtigkeit von Docker erschwert es gleichzeitig, anomales Verhalten zu erkennen. Angreifer*Innen haben längst verschiedene Schlupflöcher ausfindig gemacht, von denen viele durch fahrlässige Anwendung entstehen und die Docker Security ernsthaft gefährden.
Die 5 häufigsten Risiken in der Docker Security:
- Fehlkonfigurationen: Falsche Konfigurationen zum Betreiben containerbasierter Anwendungen sind die Hauptursache vieler Sicherheitslücken. Typische Folgen sind zu großzügige Zugriffsrechte, Root-Zugriff auf Geräte und kompromittierte Container-Anmeldeinformationen.
- Kompromittierte Container-Images: Mit dem Herunterladen von Basis-Images aus öffentlichen Repositories gehen häufig auch unzureichende Standardeinstellungen und andere Sicherheitsrisiken einher. Über eine Schwachstelle im Image-Quellcode können sich Bedrohungen auf andere Container ausbreiten.
- Kurzlebige Workloads: Container-Ressourcen sind ständig in Bewegung, mit ihrem Herunterfahren verschwinden je nach Konfiguration die zugehörigen Protokolle. Damit verlieren auch forensische Analysen und Sicherheitskontrollen auf Basis von Perimetern und IP-Adressen ihre Wirkung.
- Kubernetes-Pods: Die Pods verbinden sich über eindeutige IP-Adressen, die Cyberkriminelle beispielsweise als Einfallstor für Angriffe aus externen Netzwerken missbrauchen können.
- Tool-Mängel: Vielen Tools fehlt neben dedizierten Funktionen zum Steigern der Docker Security auch der Kontext, um Sicherheitsrisiken wie containerspezifische Fehlkonfigurationen zu erkennen und zu beheben.
10 Tipps für eine höhere Docker Security
Sie kennen nun die wichtigsten Vorteile und Sicherheitsrisiken. An welchen Stellschrauben können Sie drehen, um die Docker Security zu erhöhen? Die folgenden Best Practices geben einen Überblick:
- Halten Sie das Host-Betriebssystem und die Docker-Engine jederzeit auf dem neuesten Stand.
- Betreiben Sie Container mit schreibgeschützten Dateisystemen, um das Verändern der Konfiguration oder Einschleusen von Malware zu verhindern.
- Definieren Sie Grenzen für die Nutzung von Container-Ressourcen wie Speicher und CPU, um das Schadensausmaß im Worst Case einzudämmen.
- Trennen Sie Container-Netzwerke voneinander. Für mehr Kontrolle und damit eine höhere Docker Security sorgen benutzerdefinierte Bridge-Netzwerke mit automatischer DNS-Auflösung.
- Verwenden Sie minimale Basis-Images mit möglichst wenigen Tools und Systembibliotheken, um die Angriffsfläche klein zu halten. Und vor allem: Scannen und überprüfen Sie die Images – insbesondere aus öffentlichen Repositories – vor dem Einsatz auf Schwachstellen.
- Vermeiden Sie Container mit privilegiertem Zugriffsrecht und führen Sie Anwendungen mit eigens erstelltem Benutzer mit minimalen Berechtigungen aus.
- Stellen Sie geteilte Geräte oder Block-Devices in Docker-Containern nur mit entsprechenden Vorsichtsmaßnahmen zur Verfügung. Dazu zählen dedizierte User, angepasste Capabilities und restriktive Zugriffskontrolllisten (ACLs).
- Verwenden Sie eine sichere, private Container-Registry hinter Ihrem eigenen VPN. Eine rollenbasierte Zugriffskontrolle erhöht die Docker Security zusätzlich.
- Blockieren Sie Remote-Verbindungen zu Ihrem Daemon-Socket und nutzen Sie im Bedarfsfall den verschlüsselten HTTPS-Socket von Docker.
- Überwachen Sie alles und schaffen Sie Observability von Docker-Hosts und Container-Engines über Master-Knoten bis hin zu Netzwerken und Workloads. Eine zentrale Übersicht über alle wichtigen Metriken gewinnen Sie zum Beispiel mit der Lösung Lacework. Das Tool überwacht und schützt Ihre Container-Infrastruktur, setzt Compliance-Richtlinien durch und erkennt Gefahren rechtzeitig mithilfe von KI. Damit haben Sie Ihre Container-Aktivitäten immer im Blick und alles unter Kontrolle.
Fazit: Docker Security als ganzheitlichen Ansatz sehen
Die Simplizität von Docker Containern birgt einen klaren Nutzen für die agile Softwareentwicklung. Gleichzeitig erschwert sie aber auch den Schutz vor Eindringlingen. Docker Security erfordert einen ganzheitlichen Ansatz, der alle Komponenten vom Host bis zum Netzwerk schützt. Dabei helfen Tools wie Lacework, die speziell für containerbasierte Anwendungen entwickelt sind und mit den vorhandenen Lösungen Hand in Hand zusammenarbeiten.