Mit diesen Tipps zur Container Security erreichen Sie mehr Sicherheit und Stabilität bei Ihren Containern.
Container-Technologien haben sich in den letzten Jahren in der Anwendungsentwicklung durchgesetzt. Denn IT-Container beschleunigen und vereinfachen die Entwicklung und den Rollout von Anwendungen erheblich. Zudem werden Rechen- und Speicherressourcen deutlich sparsamer genutzt. Auch macht der Einsatz von Containern die Anwendung plattformunabhängig. Dies sowie eine einfache Portabilität macht Container vor allem für den Einsatz in Multi-Cloud-Umgebungen sehr interessant.
Container Security nicht vergessen
Bei aller Beliebtheit von Containern und den nachweislichen Vorteilen: Auch bei dieser Technologie gilt es, nicht die Sicherheitsaspekte zu vernachlässigen. Denn die wachsende Beliebtheit von Containern macht sie auch vermehrt als Angriffsziel interessant. Der nächste logische Schritt im Rahmen der DevOps-Bemühungen von Unternehmen sollte deshalb in Richtung DevSecOps gehen. Hierbei wird die verbesserte Integration von Entwicklung (Dev) und Betrieb (Ops) mit dem Sicherheitsteam (Sec) angestrebt.
Wenn Unternehmen Container im Business-Kontext nutzen, müssen diese auch den gesetzlichen und internen Sicherheitsvorgaben entsprechen. In vielen Unternehmen haben sich die Produktionsumgebungen in den letzten Jahren durch den Einsatz der Container-Technologie gewandelt. In der Folge gilt es daher, auch die Sicherheitsstrategie zu aktualisieren. Und das bedeutet sowohl die Container-Entwicklungsumgebungen als auch die dahinterliegende Infrastruktur zu schützen. Die folgenden Tipps können dabei helfen.
7 Tipps für mehr Container Security
Tipp #1: Host-Systeme kontinuierlich aktualisieren
Tipp #2: Nur vertrauenswürdige Images verwenden
Unternehmen sollten Container Images nur aus verlässlichen Quellen installieren. Im Idealfall verwenden sie nur Container Images aus internen Repositories oder sicheren Image Repositories. Ansonsten ist es ratsam, sich auf Image Repositories von zertifizierten Drittanbietern zu beschränken. Das verringert die Gefahr, fehlerhafte oder gar absichtlich manipulierte Versionen aus anderen Libraries zu nutzen.
Tipp #3: Regelmäßige Image Vulnerability Scans
Tipp #4: Wissen, welche Container von Schwachstellen betroffen sind
Mit der Einführung von Containern steigt auch die Menge an Open Source Code, den Entwickler in die Software einbringen. So basieren inzwischen viele Container-Ökosysteme auf Open Source Code. Das bedeutet, dass Entwickler entsprechend stark auf Module oder Code Snippets aus Open-Source-Projekten angewiesen sind. Auch hier werden fast täglich neue Sicherheitslücken entdeckt.
Daher ist es wichtig, betroffene Container möglichst schnell nicht nur in Images, sondern auch in laufenden Umgebungen finden zu können. Besonders wichtig ist es in der Produktion, Container schnell identifizieren zu können, die von Sicherheitslücken betroffen sind. Nur so können die Teams unmittelbar reagieren und eingreifen. Es genügt dabei nicht, nur rasch herauszufinden, welche Container Sicherheitslücken aufweisen. Die Teams müssen auch in der Lage sein, schnell festzustellen, ob die entsprechende Sicherheitslücke bereits ausgenutzt wurde.
Tipp #5: Container nicht privilegiert laufen lassen
Container funktionieren über Root-Rechte. So benötigt der Docker-Daemon Root-Rechte, wenn Anwendungen und Container mit Docker verwendet werden. Anwender haben darüber einen privilegierten Zugriff auf das System. Eindeutige Richtlinien (Namespaces) in der Interaktion zwischen Containern und Host minimieren das Sicherheitsrisiko. Denn sie vergeben nur die Rechte, die für die Rolle notwendig sind. Kernel-Sicherheitsfunktionen unter Linux – wie Seccomp, CGroups oder SELinux – schränken den Container-Zugriff über das Host-Betriebssystem ein.
Doch selbst wenn die Verwendung von Docker auf vertrauenswürdige Benutzer beschränkt ist, können potenzielle Schwachstellen durch den Docker-Daemon ausgenutzt werden. Auch Anwendungen, die auf dem REST-Modell (Representational State Transfer) basieren, können Hackern mögliche Schwachstellen offenlegen. Das Sicherheitsrisiko bestimmt sich also letztlich daraus, wie sauber die Software im Container ist und ob sie bösartigen Code enthält.
Tipp #6: Container-Ressourcen limitieren
Es ist wichtig, Ressourcen einzuschränken, auf die Container zugreifen. Am besten ist es daher, Ressourcen wie CPU oder Memory vorab zu konfigurieren. Das vermeidet nicht nur den „Noisy Neighbour“-Effekt. Es verhindert auch Denial of Service (DoS) oder Forkbombs. Darüber hinaus ist es ratsam, die Kommunikation über das Internet zu limitieren, um DDoS-Angriffe (Distributed Denial of Service) zu vermeiden. Mit dem Management-Tool Kubernetes ist es zudem möglich, eine maximale Ressourcenmenge pro Container zu definieren und zuzuweisen.
Nicht zu vergessen sind Container-Anwendungsdienste, die ein externer Kubernetes-Cluster bereitstellt. Sie erhöhen das Sicherheitsrisiko und bieten möglichen Angreifern ein „Window to exploit“. Um potenzielle Angriffsvektoren zu minimieren, ist es deshalb wichtig, unnötige Kommunikationspfade zu deaktivieren.
Tipp #7: Docker Volumes für persistente Daten nutzen
Container Security: Last but not least
Wie bei Cloud Security im Allgemeinen gilt auch bei Container Security das grundsätzliche Prinzip: Für eine effektive Sicherheit ist es nötig, die Angriffsfläche für Hacker zu minimieren. Dazu ist es besonders in Cloud-Umgebungen wichtig zu wissen, welche Netzwerk-Kommunikationspfade genutzt werden. Alle Pfade, die nicht aktiv genutzt werden, sollten identifiziert und geschlossen werden. Das minimiert die Angriffsfläche nachhaltig.