Suchen

IT-Sicherheit und Container Ein Leitfaden für mehr Containersicherheit

Autor / Redakteur: Cindy Blake und Vanessa Wegner / Peter Schmitz

Container sind eine angesagte Methode zur Entwicklung und Bereitstellung von Applikationen, denn sie nutzen die dafür nötigen Ressourcen sehr effizient. Herkömmliche Sicherheitsarchitekturen können allerdings mit der steigenden Zahl an eingeführten Containerlösungen kaum mehr Schritt halten.

Firmen zum Thema

Der Einsatz von Containerlösungen wird weiter zunehmen und damit auch die dringende Notwendigkeit, diese effizient gegen Angreifer abzusichern.
Der Einsatz von Containerlösungen wird weiter zunehmen und damit auch die dringende Notwendigkeit, diese effizient gegen Angreifer abzusichern.
(Bild: gemeinfrei / Pixabay )

Die Containervirtualisierung ist bei Unternehmen eine sehr beliebte Methode zur Entwicklung und Bereitstellung von Applikationen. So verwundern die Ergebnisse einer Umfrage von Forrester nicht, nach der 58 Prozent der Entwickler davon berichten, dass ihre Unternehmen derzeit Container verwenden oder deren Einsatz in den nächsten zwölf Monaten planen. Viele geben aber auch zu, dass das Thema Sicherheit bisher der Hauptgrund sei, weshalb Container eben nicht eingeführt wurden. Denn wie jedes neue Tool in einem Technologieportfolio, bieten auch Container neue Angriffsflächen, die ein Unternehmen gefährden können. Um dem entgegenzuwirken, müssen Container über ihren ganzen Lebenszyklus hinweg geschützt werden.

Was ist Containersicherheit?

Die Containersicherheit unterscheidet sich von herkömmlichen Sicherheitsmethoden durch die erhöhte Komplexität und Dynamik von Containerumgebungen. Einfach gesagt, es gibt viele zusätzliche Punkte zu berücksichtigen. Die Containersicherheit umfasst alles - von den Anwendungen, die sie enthalten bis hin zur Infrastruktur, auf der sie ausgeführt werden. Entscheidend jedoch ist die Sicherheit und Qualität der Basis-Images, um sicherzustellen, dass alle abgeleiteten Images von einer vertrauenswürdigen Quelle stammen. RedHat empfiehlt beispielsweise, die Sicherheit bereits in die Container-Pipeline zu integrieren, indem vertrauenswürdige Images gesammelt, der Zugriff mit Hilfe einer privaten Registry verwaltet, Sicherheitstests integriert, die Bereitstellung automatisiert sowie die Infrastruktur kontinuierlich geschützt werden.

Herausforderungen an die Containersicherheit

Container scheinen sich wie kleine virtuelle Maschinen (VMs) zu verhalten, tatsächlich ist das aber nicht der Fall. Daher ist eine andere Sicherheitsstrategie erforderlich. Der Datenverkehr zwischen Apps in einem Container ist nicht den Sicherheitsmaßnahmen des darunterliegenden Netzes unterworfen, sollte jedoch hinsichtlich bösartigen Datenverkehrs zwischen Apps und ihren Images überwacht werden. Der Orchestrator lässt sich zwar zum Festlegen von Sicherheitsrichtlinien für Prozesse und Ressourcen verwenden, eine vollständige Sicherheitsstrategie erfordert jedoch deutlich mehr Maßnahmen.

Jede Architekturebene eines Containers hat ihre eigenen Sicherheitsanforderungen

Container-Images definieren, was in jedem Container ausgeführt wird. Entwickler sollten sicherstellen, dass Images keine Sicherheitslücken aufweisen: Gleichzeitig sollten sie vermeiden, das fremde Images zum Einsatz kommen, um die Angriffsfläche der Containerumgebung zu minimieren. Außerdem können Tools zur Validierung von Images hilfreich sein, damit vertrauenswürdige Images nicht pauschal abgewiesen werden. Images können auch nach ihrer Erstellung gescannt werden, um abhängige Images zu erkennen, die ihrerseits ebenfalls Schwachstellen aufweisen könnten.

Im Gegensatz zu VMs können mehrere Container auf demselben Kernel eines Betriebssystems (OS) laufen, wodurch ein Angriff von beiden Seiten erfolgen kann. Ein anfälliges Host-Betriebssystem gefährdet seine Container, und ein anfälliger Container kann einen Angriffspfad zum Host-Betriebssystem öffnen. Sicherheitsexperten empfehlen, die Namespace-Isolation zu erzwingen, um die Interaktion zwischen Container- und Host-OS-Kernel zu begrenzen. Gleichzeitig sollte die Automatisierung von Patches sichergestellt sein, um sie an die Patch-Releases der Hersteller anzupassen.

Auch das Betriebssystem und sein Kernel sollten so einfach wie möglich aufgebaut sein und keine unnötigen Komponenten enthalten (etwa Apps, Treiber und Libraries, die eigentlich nicht benötigt werden), um als Orchestrator agieren zu können. Durch Container-Orchestrierung werden Container koordiniert und verwaltet, so dass sich containerisierte Anwendungen skalieren lassen und Tausende von Benutzern unterstützen können. Dabei besteht die Möglichkeit, auch eigene, sofort einsatzbereite Sicherheitsfunktionen einzusetzen. Beispielsweise hebt Twistlock die "Pod-Security Policies " von Kubernetes hervor, mit denen sich Regeln festlegen lassen, die Kubernetes automatisch über alle Pods innerhalb des Clusters durchsetzen kann. Diese Art von Grundfunktion ist nützlich, aber auch nur ein erster Schritt auf dem Weg zu robusteren Richtlinien.

Zugriffskontrollen und Ablage vertraulicher Daten

Container können über mehrere Systeme und Cloud-Anbieter verteilt sein, was deren Zugriffsverwaltung umso wichtiger macht. Streng vertrauliche Informationen, zu denen API-Schlüssel, Anmeldeinformationen und Tokens gehören, sollten strikt verwaltet werden, um sicherzustellen, dass der Containerzugriff auf privilegierte Nutzerdaten beschränkt ist. Der Benutzerzugriff lässt sich auch durch eine rollenbasierte Zugriffskontrolle definieren, so dass der Zugriff auf eine bedarfsgerechte Basis beschränkt bleibt.

Laufzeitsicherheit

Nach der Bereitstellung sind die Containeraktivitäten zu überwachen, und die Teams müssen in der Lage sein, Sicherheitsrisiken zu erkennen und darauf zu reagieren. So empfiehlt Nordcloud, verdächtige Verhaltensweisen wie Netzwerk- und API-Aufrufe sowie ungewöhnliche Anmeldeversuche zu überwachen. Die Teams sollten über vordefinierte Schutzmaßnahmen für Pods verfügen und in der Lage sein, den Container in einem anderen Netzwerk zu isolieren, neu starten oder stoppen zu können, bis die Bedrohung identifiziert ist.

Cloud Native erfordert mehr Verantwortung

Cloud-Anbieter übernehmen auch einen Teil der Arbeit, indem sie die zugrundeliegende Hardware und die Basisnetzwerke sichern, die für die Bereitstellung von Cloud-Diensten verwendet werden. Die Anwender teilen sich jedoch weiterhin diese Verantwortung und übernehmen auch die Verantwortung für den Anwendungszugriff, für die Konfiguration und das Patching von Apps sowie das Patching und den Zugriff auf das System.

Die NIST-Richtlinien für Containersicherheit

2017 veröffentlichte das U.S. Department of Commerce seinen Leitfaden für Application Container Security. Hier die wichtigsten Empfehlungen:

Anpassung der Betriebskultur und der technischen Prozesse des Unternehmens an die neue Art der Entwicklung, Ausführung und Unterstützung von Anwendungen, die durch Container ermöglicht werden.

Die Einführung von Containern kann die bestehende Kultur und bestehende Entwicklungsmethoden beeinträchtigen. Aktuelle Praktiken sind möglicherweise nicht direkt in einer containerisierten Umgebung anwendbar, dennoch sollte das Team entsprechend ermutigt, geschult und trainiert werden.

Verwendung von Container-spezifischen Host-Betriebssystemen anstelle von Allzweck-Betriebssystemen, um Angriffsflächen zu reduzieren.

Ein Container-spezifisches Host-Betriebssystem ist ein minimalistisches Betriebssystem, ein Kernel, der nur Container ausführen soll. Die Verwendung dieser Betriebssystem-Kernel führt zu einer erheblichen Reduzierung von Angriffsflächen, so dass Container und die darin laufenden Anwendungen ebenfalls weniger gefährdet sind.

Gruppierung der Container mit dem gleichen Zweck, der gleichen Empfindlichkeit und Bedrohungslage auf einem einzelnen Host-Betriebssystemkern, um eine zusätzliche, detaillierte Verteidigung zu ermöglichen.

Die Segmentierung von Containern bietet zusätzliche Sicherheitstiefe, denn sie macht es Angreifern schwerer, eine potenzielle Gefährdung auf andere Gruppen auszudehnen, Außerdem erhöht dies die Wahrscheinlichkeit, dass Gefährdungen effizient erkannt und eingedämmt werden können.

Einsatz von Container-spezifischen Tools und Prozessen für das Schwachstellen-Management von Images.

Traditionelle Tools arbeiten häufig unter Voraussetzungen, die mit einem containerisierten Modell nicht übereinstimmen. Diese sind darüber hinaus oft nicht in der Lage, Schwachstellen innerhalb von Containern zu erkennen. Unternehmen sollten deshalb geeignete Tools und Prozesse einsetzen, um die Einhaltung sicherer Best Practices für die Konfiguration von Images zu überprüfen und durchzusetzen. Dazu gehören auch zentralisierte Berichte, die Überwachung jedes einzelnen Images und die Ablehnung nicht konformer Images.

Einsatz von hardwarebasierten Gegenmaßnahmen, um die Basis für Trusted Computing zu schaffen.

Aufbau der Sicherheitsarchitektur auf einer Hardware Root, wie sie z.B. das Trusted Platform Model (TPM) bietet, um die Sicherheit auf allen Ebenen einer Containerumgebung zu erhöhen.

Container-fähige Tools zum Schutz der Laufzeit.

Bereitstellung und Verwendung einer dedizierten Lösung für die Container-Sicherheit, die in der Lage ist, die Containerumgebung zu überwachen und darin sehr präzise anomale und bösartige Aktivitäten zu erkennen.

Integration von Sicherheit, um die DevOps zu beschleunigen

Der Einsatz von Containerlösungen wird weiter zunehmen, ergo auch die Notwendigkeit, diese zu sichern. Die effizienteste Methode zur Gewährleistung der Sicherheit in großem Maßstab, besteht darin, Sicherheitsfunktionen und -verfahren in jede Phase der Entwicklung und Bereitstellung zu integrieren. Mit zunehmender Reife der Technologien werden die Anbieter neue Sicherheitsfunktionen und -anforderungen einführen und möglicherweise veraltete Funktionen überarbeiten. Es ist wichtig, auf Release-Aktualisierungen zu achten, Sicherheitsänderungen zur Kenntnis zu nehmen und die Container-Sicherheitslage ständig zu aktualisieren, um Schäden zu vermeiden.

Über die Autorinnen: Cindy Blake ist Senior Security Evangelist und Vanessa Wegner ist Content Manager Security bei GitLab.

(ID:46375645)