von Trend Micro
Neben den vielen Vorteilen, die Container Entwicklern bieten, beinhaltet das Konzept auch hohe Sicherheitsrisiken. Das liegt vor allem an der Komplexität der Infrastruktur bei diesem Ansatz. Der Prozess der Sicherung von Containern sollte – ebenso wie andere Tests und Qualitätskontrollen auch – in den Entwicklungsprozess integriert und automatisiert werden. So lässt sich die Anzahl der manuellen Berührungspunkte minimieren und den Sicherungsprozess in die Wartung und den Betrieb der zugrunde liegenden Infrastruktur mit einbeziehen. Trend Micro zeigte im ersten Teil Schritte auf, um den Container-Host selbst sowie den Verkehr zwischen den Containern mit stabiler Security zu versorgen. In diesem zweiten Teil geht es um Sicherheit für die Anwendung, den Container-Management-Stack und die Build-Pipeline.
Container in der Produktion ändern sich permanent. Sie verarbeiten Daten für die Anwendung, generieren Logdateien, speichern Dateien im Cache usw. Hier sind Echtzeit-Antimalware-Mechanismen gefragt, die sich mit den Inhalten auseinandersetzen können. Auch für diese Aufgaben bietet sich ein IPS an – als virtual Patching, um auf Netzwerkebene vor bekannten Sicherheitslücken zu schützen. Wenn eine Sicherheitslücke remote exponiert wird, kann die IPS-Engine Versuche des Missbrauchs der Lücke erkennen und schützt die Anwendung. Damit gewinnen die Sicherheitsadmins Zeit, um die Ursache in der nächsten Version dieses Containers zu beheben, anstatt einen Notfall-Fix anzubringen.
Montoring der Anwendung
Alle bislang beschriebenen Maßnahmen gelten außerhalb der Anwendung. Dies bietet einige Vorteile, wie z.B. eine einfache Bereitstellung, birgt aber auch Herausforderungen. Einige Aspekte der Anwendung sind nur aus dem Anwendungscode heraus sichtbar.
Bei der Bereitstellung der Anwendung in einem Container kann ein Runtime Application Self-Protection (RASP)-Sicherheitsmechanismus helfen, denn er fügt eine weitere Verteidigungsschicht hinzu. Diese Kontrollmechanismen werden innerhalb des Anwendungscodes ausgeführt und fangen oft Schlüsselaufrufe innerhalb des Codes ab. Neben Sicherheitsfunktionen wie Structured Query Language (SQL)-Monitoring, Abhängigkeitsprüfung, URL-Verifizierung etc. kann RASP auch eine der größten Herausforderungen der Sicherheit lösen: die Ursachenermittlung.
Durch die Position innerhalb des Anwendungscodes unterstützt die Funktionalität dabei, die Punkte zwischen einem Sicherheitsproblem und der Codezeile, die es verursacht hat, zu verbinden. Dies bedeutet einem enormen Zugewinn für die Sicherheit.
Sicherheit für den Container-Management-Stack
Der Management-Stack, der die Container koordiniert, wird aus Sicht der Sicherheit häufig außer Acht gelassen. Unternehmen, die sich mit der Bereitstellung von Containern ernsthaft auseinandersetzen, werden zwangsläufig zwei kritische Infrastrukturen haben, um den Prozess zu steuern: eine Datenschutz-Container Registry und Kubernetes® (zur Orchestrierung der Containerbereitstellung).
Eine Container-Registry ist ein zentraler Ort zum Suchen, Speichern und Verteilen von Containern. Registries vereinfachen die gemeinsame Nutzung von Containern und helfen Teams, auf der Arbeit des anderen aufzubauen. Um sicherzustellen, dass jeder Container den Entwicklungs- und Sicherheitsrichtlinien entspricht, bedarf es eines automatisierten Scanners. Durch das Scannen jedes Containers auf bekannte Schwachstellen, Malware und exponierte vertrauliche Informationen, bevor sie in die Produktion überführt werden, werden mögliche nachgelagerte Probleme reduziert.
Auch ist es wichtig sicherzustellen, dass die Registry selbst gut geschützt ist. Sie sollte auf einem gehärteten System oder einem vertrauenswürdigen Cloud-Service ausgeführt werden. Auch in einem Serviceszenario müssen die Verantwortlichen aufgrund der gemeinsam getragenen Verantwortung einen starken rollenbasierten Ansatz für den Zugriff auf die Registry implementieren.
Die Orchestrierungssoftware Kubernetes bietet eine ganze Reihe von Vorteilen, mit deren Hilfe Unternehmen das Beste aus ihrer Umgebung herausholen können. Aus Sicherheitssicht beinhaltet Kubernetes auch die Möglichkeit, eine Reihe von Betriebs- und Sicherheitskontrollen aufzusetzen. Die Implementierung von Pod (Ressourcen auf Clusterebene) und Netzwerksicherheitsrichtlinien ermöglicht es, verschiedene Optionen durchzusetzen, um die Risikotoleranz zu gewährleisten.
Die Kombination einer Container Registry mit Kubernetes ermöglicht es, automatisch eine Reihe von Qualitäts- und Sicherheitsstandards für die Container vor und während ihrer Bereitstellung aufzusetzen.
Erstellen der Anwendung auf einer sicheren Grundlage
Beim Erstellen einer Anwendung starten die Entwickler meist mit einem vorhandenen Container, wie etwa Low-Level Ubuntu oder CentOS, im Stack etwas höher angesiedelt mit node oder nginx oder auf einer an das Unternehmen angepassten Grundlage. Das bedeutet aber, dass die Entwicklung auf etwas aufsetzt, das unter Umständen ein Risiko für die Daten darstellt.
Dasselbe gilt auch für die Bereitstellung eines Containers aus einer Registry. Gefragt ist hier ein Workflow, der sicherstellt, dass der als Building Block genutzte Container zuverlässig und vor den bekannten Bedrohungen geschützt ist. Image Scanning ist der beste Workflow, denn diese Art von Tool scannt die Inhalte eines Containers auf Ungereimtheiten, bevor der Container als Building Block für die Anwendung genutzt wird. Auch führen die Tools eine letzte Überprüfung durch, bevor der Container für die Produktion bereitgestellt wird.
Ein guter Scanner sucht nach Malware, bekannten Sicherheitslücken und allen vertraulichen Informationen – etwa API-Schlüssel und -Token. Damit handelt es sich um einen wichtigen Schritt hin zu einer sicheren Grundlage. Darüber hinaus wird ein gut aufgesetzter Scan-Prozess zum natürlichen Teil des Codiervorgangs. Er läuft automatisch ab und findet frühzeitig im Entwicklungsprozess alle potenziellen Probleme.
Die Integrität der Build-Pipeline gewährleisten
Angreifer haben mittlerweile ihre Attacken auf frühere Stadien der Continuous Integration/Continuous Delivery (CI/CD) Pipeline verschoben. Gelingt es, den Build-Server, das Code-Repository oder die Entwickler-Workstations erfolgreich zu kompromittieren, können sich die Angreifer deutlich länger in der Umgebung aufhalten. Dies liegt daran, dass die meisten sicheren Programme diese kritischen Ressourcen nicht aktiv überwachen. Deshalb müssen in einem ersten Schritt diese Systeme mit umfassenden Sicherheitsmechanismen ausgestattet sein und im auf aktuellem Stand gehalten werden.
Im zweiten Schritt muss eine strenge Zugriffskontroll-Strategie für die gesamte Pipeline aufgesetzt werden – vom Code Repository bis hin zum Container Repository. Dazu gehört das Durchsetzen des Prinzips der geringsten Privilegien und regelmäßige Audits.
Bild 3. Die Build-Pipeline wird zunehmend zum Ziel von Angriffen
Lösungen
Als Hilfe für die Umsetzung der Strategie können Unternehmen die Trend Micro-Lösungen Deep Security und Deep Security Smart Check in Erwägung ziehen. Die Tools können Unternehmen dabei unterstützen, diese Strategie ohne zusätzlichen Betriebsaufwand umzusetzen. Mithilfe funktionsstarker APIs integrieren sich die Tools in den vorhandenen Stack, ohne dass die Teams ihre Arbeitsweise ändern müssen.
Der gesamtheitliche Sicherheitsansatz für Container stellt zudem sicher, dass die Bedürfnisse aller Teams im Unternehmen berücksichtigt werden. Das Aufsetzen vertrauenswürdiger Sicherheitskontrollen und automatisierter Prozesse von Anfang an berücksichtigt die Fragen der Teams und überbrückt die Lücken zwischen ihnen.
Weitere Einzelheiten bietet das Whitepaper „Six Steps to Comprehensive Container Security“.