Arpad Nagy-Bagoly - stock.adobe.
Worauf es bei der Containersicherheit ankommt
Um eine sichere Containerumgebung in Kubernetes zu schaffen, müssen Unternehmen einiges beachten, um allen Anforderungen gerecht zu werden.
Container setzen sich immer mehr durch als neue Art der Bereitstellung und Verwaltung von Anwendungen, bringen aus Sicherheitsperspektive aber auch spezielle Anforderungen mit sich. Insgesamt bietet die Containerisierung sogar einige Vorteile für die Sicherheit. Entscheidend ist es dennoch, die nicht zu unterschätzende Komplexität und mögliche Sicherheitslücken von Containern zu berücksichtigen. Darauf basierend lassen sich geeignete Maßnahmen ergreifen, um tatsächlich effektive Sicherheit zu gewährleisten.
Die Vorteile von Containern liegen konzeptbedingt in der Isolation, Portabilität, Überwachung und Automatisierung. Container und speziell die Open-Source-Managementplattform Kubernetes mit typischerweise stark verteilten Umgebungen und großen Clustern können aber auch Sicherheitsrisiken bergen. Das beginnt mit Updates, denn Kubernetes hat einen schnellen Release-Zyklus. Regelmäßige Updates sind wichtig, um die Container auf einem hohen Sicherheitsstandard zu halten. Cluster, die auf einer End-of-Life-Version laufen, gilt es unbedingt zu vermeiden. Eine schlechte Netzwerkkonfiguration kann zudem Kubernetes-Umgebungen für unbefugten Zugriff anfällig machen. Bereits einzelne Nodes mit einem veralteten Betriebssystem oder ein gezielter Denial-of-Service-Angriff können mehrere oder gar alle eingesetzten Maschinen gefährden.
Das sie immer wieder hoch- und heruntergefahren werden, ist die Überwachung von Containern nicht gerade einfach. Firewalls, in herkömmlichen IT-Umgebungen der Standard, sind nicht geeignet für Container-Domains. Es fehlt zudem die Möglichkeit, Container effektiv zu isolieren. Das öffnet Angreifern Wege, um sensible Daten, Prozesse oder Zugriffsprivilegien zu kompromittieren. Die gängigsten Sicherheitsprobleme bei der Bereitstellung einer Kubernetes-Instanz sind jedoch ohne großen Aufwand vermeidbar.
Was ein Kubernetes-Sicherheits-Tool leisten muss
Proaktives Schwachstellen-Management kann das Risiko von Sicherheitsverletzungen deutlich reduzieren. Ein möglicher Angriffspfad in der Produktionsumgebung ist der Code selbst. Um diesen zu schützen, bewähren sich Richtlinien wie TCP-Verschlüsselung mittels TLS-Handshakes, Einschränkung der Kubelet-Berechtigungen, die Sperrung ungenutzter Ports sowie regelmäßige Scans und Tests. Ein Kubernetes-Sicherheits-Tool muss gewährleisten, dass der Code frei von Kompromittierungen ist. Digitale Signaturen sorgen dafür, dass der Code vertrauenswürdig ist. Ein entsprechendes Tool sollte zudem Konfigurationsprobleme über den Code hinaus sichtbar machen. Teil des Sicherheitsmanagements ist es auch, ein- und ausgehende Datenverbindungen zu unsicheren Diensten zu unterbinden.
Ein Sicherheitsrisiko ist ebenso die Erstellung von Code aus nicht vertrauenswürdigen Registries, da dadurch Malware-Angriffe oder nicht autorisierte Zugriffe über Backdoors begünstigt werden. Daher ist es ratsam, die Angriffsfläche zu minimieren und potenzielle Angriffsvektoren einzuschränken. Das bedeutet auch, bei der Entwicklung auf unnötige Pakete, Bibliotheken und Shells zu verzichten, Berechtigungen auf das Nötigste einzuschränken und Geheimnisse nur für spezifische Aufgaben zu aktivieren. Anwendungen im Cluster sollten isoliert sein, Ressourcen und Teams durch Namespaces voneinander getrennt.
Durch Netzwerksegmentierung lässt sich die seitliche Bewegung innerhalb eines Clusters unterbinden. Das sollte vor der Produktion geschehen, da die Standardeinstellung des Kubernetes-Netzwerks die Kommunikation nicht einschränkt. Eingehende und ausgehende Verbindungen sollten durch Richtlinien exakt definiert und entsprechend geroutet werden. Ebenso gilt es, den Zugriff durch Namespaces und penibel konfigurierte rollenbasierte Zugriffskontrollen (RBAC) einzuschränken.
Die Kubernetes-API ist das Herzstück des gesamten Systems, über das sich alle internen und externen Clients mit Kubernetes verbinden und kommunizieren. Der Kubernetes-API-Server, Key Value Store und Controller können Schwachstellen aufweisen und stellen während der Laufzeit Angriffsflächen dar. Im Ernstfall geht es darum, kompromittierte Container schnell zu isolieren und durch saubere Container zu ersetzen, während der Angriff analysiert und gestoppt wird.
Vertrauen ist gut, Kontrolle ist besser
Generell ist es ratsam, die Kubernetes-Umgebung schlank zu halten sowie Betriebssysteme, Images und sämtliche externe Quellen umfassend auf Sicherheitslücken zu scannen. Bei externen Quellen gilt stets: Vertrauen ist gut, Kontrolle ist besser. Deswegen ist es auch nötig, die Privilegien auf ein Minimum zu beschränken und Anwendungsprozesse niemals als Root auszuführen. Ein schreibgeschütztes Root-Dateisystem verhindert Angriffe, die auf der Installation von Software oder Veränderungen am Dateisystem beruhen. Integrierte Image-Scans und Sicherheitstests in der CI/CD-Pipeline ergänzen das Sicherheitspaket.
„Ein schreibgeschütztes Root-Dateisystem verhindert Angriffe, die auf der Installation von Software oder Veränderungen am Dateisystem beruhen.“
Sebastian Scheele, Kubermatic
Administratoren müssen auch dafür sorgen, dass nur autorisierte, regelkonforme Images in die Umgebung gelangen, um das Risiko einzuschränken, dass Container mit anfälligem oder schädlichem Code ausgeführt werden. Images aus zweifelhaften Quellen sind riskant, daher sollten ausschließlich genehmigte Images in die CI/CD-Pipeline gelangen. Ergänzt wird das Risikomanagement durch integrierte Kontrollmechanismen in Kubernetes. So lässt sich unter anderem der Sicherheitskontext konfigurieren, um den Pod-Zugriff einzuschränken.
Entscheidend ist die laufende proaktive Überwachung, um die Prozessaktivitäten, alle Dienste und die Kommunikation nach außen im Blick zu haben. Sinnvoll ist hierbei der Einsatz einer umfassend automatisierten Plattform zur Bereitstellung und Verwaltung von Clustern. So gelingt es, eine Containerumgebung unter Kubernetes auf hohen Sicherheitsniveau zu betreiben.
Über den Autor:
Sebastian Scheele ist CEO und Mitgründer von Kubermatic.
Die Autoren sind für den Inhalt und die Richtigkeit ihrer Beiträge selbst verantwortlich. Die dargelegten Meinungen geben die Ansichten der Autoren wieder.