Container Security ist der Prozess der Implementierung von Sicherheitstools und -richtlinien, um sicherzustellen, dass alles in Ihrem Container wie vorgesehen abläuft. Dazu gehört der Schutz der Infrastruktur, der Software-Lieferkette, der Laufzeitumgebung und aller dazwischenliegenden Bereiche.
Container Security bietet viele Vorteile:
Sie verändert die Anwendungsbereitstellung, indem sie Geschwindigkeit, Ressourceneffizienz und Skalierbarkeit verbessert. Sie kann auch Anwendungen und ihre Abhängigkeiten verkapseln, was die Bereitstellung beschleunigt und die Effizienz der Nutzung von Systemressourcen verbessert.
Sie lässt sich leicht nach oben oder unten skalieren und eignet sich daher ideal für dynamische Workloads. Einer der wichtigsten Vorteile von Containern ist ihre Portabilität in verschiedenen Umgebungen und Plattformen. Dadurch können Anwendungen konsistent ausgeführt werden, unabhängig davon, wo sie bereitgestellt werden, vor Ort, in der Cloud oder in hybriden Umgebungen.
Durch die Aufrechterhaltung einheitlicher Umgebungen beseitigt Containersicherheit das Problem „sie funktioniert auf meiner Maschine“, was zu effizientesten Übergängen und zuverlässigeren Bereitstellungen führt.
Warum ist Container Security wichtig?
Die Container-Sicherheit ist ein kontinuierlicher Prozess. Sie sollte in Ihren Entwicklungsprozess integriert und automatisiert sein, damit Sie möglichst wenig manuell eingreifen müssen. Außerdem sollte sie auch die Wartung und den Betrieb der zugrunde liegenden Infrastruktur einschließen. Das bedeutet, dass Sie die Container-Images in der Build Pipeline und die Host-, Plattform- und Anwendungsebenen in der Runtime schützen müssen. Wenn Sie Sicherheit als Teil des kontinuierlichen Lieferzyklus implementieren, kann Ihr Unternehmen Risiken minimieren und die Schwachstellen auf einer immer größer werdenden Angriffsoberfläche reduzieren.
Kernthemen beim Schutz von Containern sind:
Die Maßnahmen für Cybersicherheit sollen gewährleisten, dass alles, was Sie entwickeln, kontinuierlich wie vorgesehen funktioniert – und zwar ausschließlich wie vorgesehen.
So sichern Sie einen Behälter
Der Schutz des Hosts beginnt mit der Auswahl des verwendeten Betriebssystems. Wann immer möglich, sollten Sie ein verteiltes Betriebssystem verwenden, das für die Ausführung von Containern optimiert ist. Wenn Sie Standard-Distributionen von Linux® oder Microsoft® Windows® verwenden, sollten Sie Services, die nicht notwendig sind, deaktivieren oder entfernen und das Betriebssystem allgemein härten. Ergänzen Sie anschließend eine Ebene mit Sicherheits- und Überwachungstools, um sicherzustellen, dass Ihr Host funktioniert wie erwartet. Tools wie eine Applikationskontrolle oder ein Intrusion Prevention System (IPS) sind in diesem Fall sehr hilfreich.
Wenn Ihr Container in der Produktion eingesetzt wird, muss er mit anderen Containern und Ressourcen interagieren. Dieser interne Datenverkehr muss überwacht und geschützt werden, indem Sie den gesamten Netzwerkdatenverkehr aus Ihren Containern über ein IPS leiten. Das verändert die Art und Weise, wie Sie Sicherheitskontrollen verwenden. Statt eine kleine Zahl sehr großer herkömmlicher IPS-Engines im Perimeter einzusetzen, implementieren Sie das IPS auf jedem einzelnen Host. Das ermöglicht Ihnen, den gesamten Verkehr wirksam zu überwachen, ohne die Leistung wesentlich zu beeinträchtigen.
Wenn Ihr Container in der Produktion eingesetzt wird, verarbeitet er fortwährend Daten für Ihre Anwendung, generiert Protokolldateien, speichert Dateien im Cache usw. Sicherheitskontrollen können mit gewährleisten, dass es sich dabei um gewöhnliche und nicht um bösartige Aktivitäten handelt. Die Anti-Malware-Kontrollen, die in Echtzeit auf den Inhalt des Containers ausgeführt werden, sind für den Erfolg entscheidend.
Auch hier spielt ein IPS eine wichtige Rolle, und zwar in Form eines Nutzungsmusters, das unter der Bezeichnung „virtuelles Patching“ bekannt ist. Wird remote eine Sicherheitslücke erkannt, kann die IPS-Engine Versuche erkennen, diese auszunutzen, und Pakete ausgeben, die Ihre Anwendung schützen. Dies verschafft Ihnen die Zeit, die Sie brauchen, um die Ursache in der nächsten Version dieses Containers zu beheben, statt eine Notlösung zu forcieren.
Folgende Lösungen verwenden viele Unternehmen für ihre Container: Docker®, Kubernetes®, Amazon Web Services™ (AWS) und Microsoft®.
Bevor Sie mit dem Schutz Ihrer Container beginnen, sollten Sie die großen Namen in diesem Bereich kennen. Docker, ein führender Anbieter auf dem Markt für Container-Lösungen, bietet eine Container-Plattform für die Entwicklung, Verwaltung und Sicherung von Anwendungen. Docker ermöglicht es Kunden, herkömmliche Anwendungen und die aktuellsten Microservices überall bereitzustellen. Wie bei jeder anderen Container-Plattform müssen Sie für einen angemessenen Schutz sorgen. Erfahren Sie mehr über Container-Sicherheit für Docker.
Kubernetes ist der nächste wichtige Anbieter, den Sie kennen sollten. Kubernetes bietet eine portier- und erweiterbare Open-Source-Plattform für die Verarbeitung von Container-Workloads und -Services. Auch wenn Kubernetes Sicherheitsfunktionen bereitstellt, brauchen Sie eine dedizierte Sicherheitslösung, die Sie schützt; Kubernetes-Cluster werden immer häufiger angegriffen. Erfahren Sie mehr über die Sicherheitslösungen für Kubernetes.
Werfen wir als Nächstes einen Blick auf Amazon Web Services (AWS). AWS versteht, dass Container notwendig sind. Sie versetzen Entwickler in die Lage, Anwendungen schneller und konsistenter bereitzustellen. Aus diesem Grund bietet AWS den Amazon Elastic Container Service (Amazon ECS) an, einen skalierbaren, leistungsstarken Containerverwaltungsdienst, der Docker-Container unterstützt. Dadurch entfällt die Notwendigkeit, die eigenen virtuellen Maschinen und die eigene Container-Umgebung zu verwalten, und Sie können containerisierte Anwendungen von AWS ganz einfach ausführen und skalieren. Aber wie bei allen großen Anbietern ist auch bei AWS Sicherheit für die Nutzung sämtlicher Vorteile des Services erforderlich. Erfahren Sie mehr über Container-Sicherheit für AWS.
Zu guter Letzt folgen Microsoft® Azure™ Container Instances (ACI). Diese Lösung ermöglicht Entwicklern, Container in der Microsoft® Azure™ Public Cloud bereitzustellen, ohne eine zugrunde liegende Infrastruktur betreiben oder verwalten zu müssen. Sie können im Portal von Microsoft® Azure™ einfach einen neuen Container einrichten. Anschließend liefert und skaliert Microsoft automatisch die zugrunde liegenden Computer-Ressourcen. Azure Container Instances bieten hohe Geschwindigkeit und Agilität. Sie müssen jedoch geschützt werden, damit Sie alle Vorteile nutzen können.
Nachdem Sie die großen Anbieter kennen, sollten Sie sich im nächsten Schritt ansehen, wie Sie für entsprechende Sicherheit sorgen. Sie können auch den Links oben folgen, um sich Details zum Schutz der einzelnen Lösungen anzeigen zu lassen. Erfahren Sie mehr über die Sicherheitslösungen für Microsoft Azure Container Instances.
Der Schutz des Hosts beginnt mit der Auswahl des verwendeten Betriebssystems. Wann immer möglich, sollten Sie ein verteiltes Betriebssystem verwenden, das für die Ausführung von Containern optimiert ist. Wenn Sie Standard-Distributionen von Linux® oder Microsoft® Windows® verwenden, sollten Sie Services, die nicht notwendig sind, deaktivieren oder entfernen und das Betriebssystem allgemein härten. Ergänzen Sie anschließend eine Ebene mit Sicherheits- und Überwachungstools, um sicherzustellen, dass Ihr Host funktioniert wie erwartet. Tools wie eine Applikationskontrolle oder ein Intrusion Prevention System (IPS) sind in diesem Fall sehr hilfreich.
Wenn Ihr Container in der Produktion eingesetzt wird, muss er mit anderen Containern und Ressourcen interagieren. Dieser interne Datenverkehr muss überwacht und geschützt werden, indem Sie den gesamten Netzwerkdatenverkehr aus Ihren Containern über ein IPS leiten. Das verändert die Art und Weise, wie Sie Sicherheitskontrollen verwenden. Statt eine kleine Zahl sehr großer herkömmlicher IPS-Engines im Perimeter einzusetzen, implementieren Sie das IPS auf jedem einzelnen Host. Das ermöglicht Ihnen, den gesamten Verkehr wirksam zu überwachen, ohne die Leistung wesentlich zu beeinträchtigen.
Wenn Ihr Container in der Produktion eingesetzt wird, verarbeitet er fortwährend Daten für Ihre Anwendung, generiert Protokolldateien, speichert Dateien im Cache usw. Sicherheitskontrollen können mit gewährleisten, dass es sich dabei um gewöhnliche und nicht um bösartige Aktivitäten handelt. Die Anti-Malware-Kontrollen, die in Echtzeit auf den Inhalt des Containers ausgeführt werden, sind für den Erfolg entscheidend.
Auch hier spielt ein IPS eine wichtige Rolle, und zwar in Form eines Nutzungsmusters, das unter der Bezeichnung „virtuelles Patching“ bekannt ist. Wird remote eine Sicherheitslücke erkannt, kann die IPS-Engine Versuche erkennen, diese auszunutzen, und Pakete ausgeben, die Ihre Anwendung schützen. Dies verschafft Ihnen die Zeit, die Sie brauchen, um die Ursache in der nächsten Version dieses Containers zu beheben, statt eine Notlösung zu forcieren.
Wenn Sie Ihre Anwendung in einem Container bereitstellen, kann eine Sicherheitskontrolle nützlich sein, mit der sich Ihre Anwendung zur Laufzeit selbst schützt (Runtime Application Self-Protection, RASP). Diese Sicherheitskontrollen laufen innerhalb Ihres Anwendungscodes, fangen häufig Schlüsselaufrufe innerhalb des Codes ab oder halten sie fest. Neben Sicherheitsfunktionen wie SQL-Überwachung, Prüfung und Beseitigung von Abhängigkeiten, URL-Verifizierung und anderen Kontrollmaßnahmen kann RASP auch eine der größten Herausforderungen im Bereich Sicherheit bewältigen: die Ermittlung der Ursache.
Da sie innerhalb des Anwendungscodes positioniert sind, können diese Sicherheitskontrollen helfen, die Verbindung zwischen einem Sicherheitsproblem und der Codezeile herzustellen, die das Sicherheitsproblem verursacht. Dieser Grad an Intelligenz ist nur schwer zu übertreffen und verbessert Ihre Sicherheitslage deutlich.
Hinsichtlich der Sicherheit wird der Management-Stack, der die Koordination Ihrer Container unterstützt, häufig übersehen. Jede Organisation, die es mit dem Einsatz von Containern ernst meint, braucht letzten Endes zwei kritische Infrastrukturkomponenten, die bei der Verwaltung des Prozesses helfen: eine Container-Registry für Datenschutz, wie Amazon ECS, und Kubernetes, um den Einsatz von Containern zu orchestrieren.
Die Kombination aus Container-Registry und Kubernetes ermöglicht Ihnen, vor – und während – der erneuten Bereitstellung in Ihrer Umgebung automatisch festgelegte Qualitäts- und Sicherheitsstandards durchzusetzen.
Registrys vereinfachen die gemeinsame Nutzung von Containern und helfen den Teams, auf den Ergebnissen anderer aufzubauen. Um sicherzustellen, dass jeder einzelne Container Ihre Entwicklungs- und Sicherheitsstandards erfüllt, benötigen Sie jedoch einen automatisierten Scanner. Wenn Sie die einzelnen Container auf bekannte Sicherheitslücken, Malware und exponierte Geheimnisse scannen, bevor sie in der Registry verfügbar sind, können Sie nachgelagerte Probleme reduzieren.
Zusätzlich sollten Sie sicherstellen, dass die Registry gut geschützt ist. Sie sollte auf einem gehärteten System oder einem sehr seriösen Cloud-Service betrieben werden. Auch wenn Sie auf ein Service-Szenario setzen, müssen Sie das Modell der geteilten Verantwortung verstehen und einen starken rollenbasierten Ansatz für den Zugriff auf die Registry implementieren.
Wenn Kubernetes in Ihrer Umgebung eingesetzt wird, erzielen Sie eine Vielzahl an Vorteilen für die Orchestrierung. Ihre Teams können Ihre Umgebung dadurch optimal nutzen. Kubernetes ermöglicht Ihnen außerdem, eine Reihe von Kontrollen für den Betrieb und für die Sicherheit zu implementieren, z. B. Richtlinien für Pods (Ressourcen auf Cluster-Ebene) und für Netzwerksicherheit. Auf diese Weise können Sie verschiedene Optionen durchsetzen, um Ihre Grenzwerte für Risikotoleranz einzuhalten.
Sie sollten einen Workflow für das Scannen von Container-Images einrichten, um sicherzustellen, dass die Container, die Sie als Komponenten verwenden, zuverlässig und vor häufigen Bedrohungen geschützt sind. Im Rahmen dieses Workflows scannen Tools die Inhalte eines Containers und suchen nach Problemen, bevor der betreffende Container als Element für Ihre Anwendung verwendet wird. Vor der Bereitstellung des Containers in der Produktion werden außerdem abschließende Prüfungen durchgeführt.
Bei korrekter Implementierung wird das Scannen zu einem natürlichen Bestandteil des Kodierungsprozesses. Es ist ein vollautomatisierter Prozess, der schnell und einfach Probleme erkennt, während Sie Ihre Anwendung und deren Container entwickeln.
Angreifer verlagern zurzeit ihre Angriffe auf frühere Phasen Ihrer Pipeline für kontinuierliche Integration und Bereitstellung (CI/CD). Wenn ein Angriff auf Ihren Build-Server, Ihr Code-Repository oder Ihre Entwickler-Workstations erfolgreich ist, kann sich der jeweilige Angreifer deutlich länger in Ihrer Umgebung aufhalten. Daher benötigen Sie eine Reihe starker Sicherheitskontrollen, die kontinuierlich aktualisiert werden.
Sie müssen für die gesamte Pipeline eine robuste Strategie für die Zugriffskontrolle implementieren, vom Code-Repository und der Verzweigungsstrategie bis hin zum Container-Repository. Bauen Sie dabei auf den Grundsatz der minimal benötigten Berechtigung – das heißt, Sie dürfen den Zugriff nur in dem Ausmaß erteilen, der für die Ausführung der jeweiligen Aufgaben erforderlich ist. Dieser Zugriff muss regelmäßig überprüft werden.
Der Schutz Ihrer Container erfordert ein umfassendes Sicherheitsmodell. Sie müssen sicherstellen, dass Sie die Bedürfnisse aller Teams in Ihrem Unternehmen berücksichtigen. Vergewissern Sie sich, dass Ihr Ansatz automatisiert und so an Ihre DevOps-Prozesse angepasst werden kann, dass Sie außerdem Fristen einhalten und Anwendungen schnell bereitstellen können, während Sie die einzelnen Gruppen schützen. Das Team für Sicherheit darf nicht länger außen vor gelassen werden oder in letzter Minute auftauchen und Änderungen Ihres Workflows fordern. Wenn Sie von Anfang an zuverlässige Sicherheitskontrollen und automatisierte Prozesse integrieren, zerstreuen Sie Sicherheitsbedenken und können die Lücken zwischen den verschiedenen Teams leichter schließen.
Schützen Sie Anwender und wichtige Abläufe in Ihrer gesamten Umgebung.
Weiterführende Forschung
Weiterführende Artikel