Was ist Container Security? – Lacework

Was ist Container Security?

Lacework-Editorial

June 23, 2021

Was ist Container Security?

Container sowie die zu ihrem Schutz erforderliche Security zählen heute zu den wichtigsten Aspekten der modernen Softwareentwicklung. Seit der Einführung von Docker und Kubernetes im Jahr 2013 und aufgrund der in der Folge stetig gewachsenen Beliebtheit dieser Entwicklungsplattformen verändern Container die Art und Weise, wie Unternehmen Anwendungen erstellen, bereitstellen und verbessern, die sie sowohl intern als auch für kundenseitige Zwecke verwenden. 

Laut einer Umfrage unter leitenden IT-Führungskräften, die von Capital One durchgeführt wurde, planen derzeit 86 Prozent der Unternehmen den Einsatz von Containern, um in den nächsten zwei Jahren zumindest einen Teil der Anwendungen in ihren Cloud-, Multicloud- und lokalen Umgebungen zu erstellen. Der IT-Analysedienstleister Gartner prognostiziert, dass bis 2023 mehr als 70 Prozent aller Unternehmen mindestens drei Container-Anwendungen betreiben werden, um ihre digitale Transformation voranzutreiben. Container erfreuen sich nicht nur zunehmender Beliebtheit, sondern werden für moderne Unternehmen in der Tat zu notwendigen Elementen.

Zu den Vorteilen von Containern gehört, dass sie modernen Entwicklungsteams ein neues Maß an Geschwindigkeit und Effizienz bieten. Sie sind für die agile Bereitstellung konzipiert und flexibel genug, um in lokalen und virtualisierten Infrastrukturen ausgeführt zu werden. Container erfordern nicht die Aufsicht und manuelle Wartung, die große, monolithische Anwendungen normalerweise benötigen. Stattdessen nutzen Container automatisierte, kontinuierliche Integrations- und Bereitstellungspipelines, um sicherzustellen, dass der Code angemessen getestet und vorbereitet und dann in die Produktion überführt wird. 

While the benefits of containers are clearly changing how IT teams operate, they also present new security challenges that must be addressed as part of every organization’s application development and delivery processes. Containers may be enabling a faster way of doing business, but container security needs to be integrated into development and deployment processes to ensure speed doesn’t overtake risk as a priority.

Container Security – Definition

Container Security ist der Ansatz und die Methodik für die Definition von Security- und Compliance-Richtlinien sowie der Einsatz von Security-Tools, um sicherzustellen, dass die Container und Container-Anwendungen in Ihrer Umgebung sicher arbeiten. Sie umfasst alle Ressourcen in Cloud-, Hybrid- oder lokalen Umgebungen – Infrastruktur, Software-Lieferkette, Laufzeit, Anwendungen –, die zu Container-Abläufen beitragen oder davon profitieren. 

Container-Architekturen sind dynamisch und unterstützen die automatisierte Bereitstellung von Anwendungen – das ist es, was Container so wertvoll macht. Allerdings sind dies auch die Attribute, die in Container-Umgebungen neue Bedrohungsvektoren darstellen. DevOps- und SecOps-Teams müssen sich einiger spezifischer Probleme bewusst sein, die zu Sichtbarkeitslücken und potenziellen Bedrohungen führen können, wenn sie nicht angegangen werden.

Es ist hilfreich, sich zunächst bewusst zu machen, dass sich die Container Security häufig in einem bekannten Rahmen bewegt. Dies gilt besonders für folgende Kategorien: 

  • Code: Zugang zu Erstellung/Aktualisierung von Container-Software, Code, Bereitstellung
  • Host: Security für Betriebssysteme einschließlich Patches und Betriebssysteme
  • Labels: Container-Labels, die sicherstellen, dass Dienste und Replikation über den Netzwerkknoten hinweg ordnungsgemäß ablaufen

Sind Container anfälliger als andere Teile des IT-Stacks? Nicht unbedingt, aber Container verfügen über spezielle Attribute, die bei fehlerhafter Verwaltung zu blinden Flecken und ernsthaften Problemen in Sachen Security führen können, die wiederum erhebliche Datengefährdung und Einbrüche in interne Umgebungen nach sich ziehen. Für die Gewährleistung der Container Security müssen daher fünf Schlüsselbereiche beachtet werden:

  • Entwicklungsprozesse: Jede Art von bösartigem oder fehlerhaft verfasstem Code kann beim Übergang von der Entwicklung zur Bereitstellung ein Security-Risiko darstellen. Die Entwicklung von Containern läuft schnell ab, und ohne angemessene Security-Prüfungen können Code-Fehler unbemerkt bleiben
  • Bildregister: Container werden aus Bildern erstellt, die in öffentlichen oder privaten Repositories gespeichert sind. Diese sind oft von anderen Bildern abhängig, und eine einzige Schwachstelle in einem von ihnen könnte sich auf Tausende von Containern ausbreiten
  • Laufzeit: Sobald ein Container in die Laufzeitumgebung freigegeben wird, können alle Arten von Security-Risiken entstehen. Unternehmen müssen Richtlinien festlegen, die das Verhalten von Containern während der Laufzeit regeln, eine Anomalie-Erkennung verwenden und mit schnellen Abhilfemaßnahmen Security-Warnungen angehen
  • Orchestrierung: Eine der wichtigsten Komponenten der Container Security ist die Orchestrierungsumgebung Kubernetes. Eine automatisierte Orchestrierung fügt eine zusätzliche Komplexitätsebene hinzu. Dadurch können Fehlkonfigurationen auftreten, die den Zugriff vereinfachen und somit eine größere Angriffsfläche bieten
  • Kurzlebigkeit: Die kurzlebige Natur der Container führt zu weniger effektiven Security-Kontrollen und erschwert forensische Untersuchungen. Netzwerk- und IP-Adressen werden häufig wiederverwendet, wodurch die Rückverfolgbarkeit beeinträchtigt sein kann. Wenn Container als Reaktion auf einen Security-Vorfall zurückgesetzt werden, können Protokolle und andere Nachweise verloren gehen.

Containerangriffe wie der, von dem Docker Mitte 2020 betroffen war, zielen auf diese spezifischen Aspekte von Containerumgebungen. Dieser Angriff wurde beispielsweise von einer Gruppe durchgeführt, die speziell nach unsicheren Containern mit unzulänglichen Authentifizierungsrichtlinien suchte. Nachdem sie sich Zugang verschafft hatten, installierten sie ein verstecktes Mining-Programm, das sich auf bis zu 6.000 Bilder ausbreitete.

Was ist ein Container?

Um die Herausforderungen der Container Security angemessen einordnen zu können, ist es wichtig, einige allgemeine Grundlagen über Container zu kennen. Vereinfacht gesagt ist ein Container ein verpackter Code in Form eines einzelnen, schreibgeschützten Bilds, bestehend aus einem Betriebssystem (OS), einer Anwendung, Support und Konfigurationsdateien. Bilder sind statische, unveränderliche Dateien, die einen ausführbaren Code enthalten, der es ihnen ermöglicht, einen isolierten Prozess auf der IT-Infrastruktur auszuführen.

Container sind leicht und mobil, und ihre einfache Bereitstellung macht sie besonders für diejenigen Unternehmen attraktiv, die Anwendungen schnell bereitstellen möchten und bei ihrer Arbeit nach kontinuierlicher Innovation streben. 

In Bezug auf ihr Format können Container alles sein, von einem sehr einfachen Microservice bis hin zu einem komplexen Framework aus Anwendungen, Datenbanken, integrierten Assets und anderen IT-Ressourcen. Die Fähigkeit von Containern, viele verschiedene Formen anzunehmen, macht einen Teil ihres Reizes aus. 

Die Struktur eines Containers macht es Entwicklern leichter, ihre Anforderungen auf Abruf zu verwalten und zu skalieren, sodass sie über die nötige Kapazität verfügen, um mehr zu liefern, wenn die Nachfrage steigt, und im gegenteiligen Fall den Betrieb zu reduzieren. Container helfen Unternehmen dabei, die elastischen Vorteile von Cloud-Umgebungen zu optimieren. Ihre Architektur ähnelt typischerweise dem Client-Server-Modell, bei dem der Client die Erstellung des Containers initiiert und der Code auf der Serverebene interagiert. Mit diesem Modell können Entwickler aus älteren Entwicklungsmodellen bequem in einer „containerisierten“ Umgebung arbeiten. 

Wichtige Container-Technologien

Entwicklungs- und Bereitstellungsstrategien orientieren sich an einem Ökosystem von Container-Technologien. Es ist wichtig zu wissen, welche Rolle diese Technologien auf dem Weg von der Entwicklung bis zur Bereitstellung spielen und wie sie sich auf die Arbeit in der Continuous-Integration- bzw. Continuous-Delivery-Pipeline (CI/CD) auswirken. Dazu gehören:

  • Docker war die erste Container-Technologie und ist derzeit die beliebteste. Viele halten sie für die einzig wahre Container-Plattform.
  • Kubernetes ist eine Open-Source-Plattform für die Container-Orchestrierung, die die Bereitstellung, Skalierung und Verwaltung von Anwendungen automatisiert. Sie wurde ursprünglich von Google entwickelt
  • AWS Elastic Container Service (ECS) ist ein Service für die Container-Orchestrierung. Er führt Container auf einer virtuellen Maschine der Elastic Compute Cloud (EC2) von Amazon aus, auf der Docker vorinstalliert ist. Er installiert Container und verwaltet Skalierung und Überwachung
  • Google Container Engine (GKE) ist eine verwaltete Umgebung für die Bereitstellung, Verwaltung und Skalierung von Container-Anwendungen in Umgebungen der Google Cloud Platform (GCP)
  • Azure Container Service (ACS) is a container deployment and management service that supports most open-source tools and technologies for container development and orchestration in Microsoft Azure environments
  • Envoy und Istio sind zwei ineinandergreifende Open-Source-Servicetechnologien, die Sicherheit und Beobachtbarkeit in Container-Umgebungen bieten. Sie wurden entwickelt, um den Verkehr innerhalb eines Container-Clusters zu verschlüsseln und gleichzeitig das Verhalten innerhalb des Clusters zu beobachten

Lokale vs. Cloud Container Security

Selbst für Unternehmen, die die digitale Transformation und die Cloud-Nutzung angenommen haben, stellt sich immer noch die Frage, wo sie ihre Container-Umgebung erstellen sollen – lokal oder in der Cloud. Im Großen und Ganzen stellt sich diese Frage wie bei jeder Anwendung oder Software-Ressource: Habe ich in einer Umgebung mehr Kontrolle und bessere Security-Möglichkeiten als in der anderen? Manches davon hängt von organisatorischen Überlegungen ab, wie z. B. der Kompetenz der Mitarbeiter und den Beziehungen zu Anbietern, aber wenn es um Security geht, gibt es Faktoren, die berücksichtigt werden müssen.

Mit lokalen Containern haben Teams in der Regel mehr Kontrolle über die Konfiguration ihrer Containerumgebung. Dies bietet ihnen mehr Flexibilität für Dinge wie Speicher und alle Arten von mit der Laufzeit verbundenem Networking. Außerdem können die Compliance-Anforderungen angepasst und schnell aktualisiert werden, um spezifische organisatorische Anforderungen zu erfüllen (dies ist typischerweise der Fall, wenn ein Kunde spezielle Governance-Bedürfnisse hat). Allerdings müssen Skalierungsprobleme manuell gelöst werden, was den Faktor Agilität einschränkt und üblicherweise ein höheres Maß an Security-Überwachung erfordert.

Cloud-Umgebungen verfügen dagegen über all die Dinge, die moderne Unternehmen offenbar am meisten schätzen – Flexibilität, Agilität, Geschwindigkeit, Skalierbarkeit und Automatisierung. Wenn Sie einen Public-Cloud-Service verwenden, geben Sie allerdings einen Teil der Kontrolle auf und müssen die Tools verwenden, die in Ihrem Service integriert sind (oder integriert werden können). Das bedeutet, dass Ihr Container-Stack in Wirklichkeit nur eine Umgebung ist, die für Sie festgelegt wurde.

Viele Unternehmen führen Workloads sowohl in lokalen als auch in Cloud-Umgebungen aus, wodurch sie die Kontrolle über einige Faktoren behalten und gleichzeitig trotzdem die erforderliche Geschwindigkeit erreichen können.

Wie integriert man Security in die Container-Pipeline?

Die Container-Orchestrierung versorgt die CI/CD-Pipelines, durch die Unternehmen die Agilität und Geschwindigkeit bekommen, die sie von Containern erwarten. Wenn Entwickler eine „containerisierte“ Anwendung in eine Testumgebung verschieben, greift die CI/CD-Pipeline ein, um sicherzustellen, dass der Container richtig getestet und vorbereitet ist, bevor er genehmigt und für die Produktion freigegeben wird. Die Orchestrierung kann komplex sein, und der Fokus auf die Bereitstellung kann manchmal verhindern, dass DevOps-Teams auch die potenziellen Risiken im Auge behalten. 

Schauen wir uns das Thema Komplexität genauer an. Entwickler können Container-Anwendungen als Microservices erstellen, um sehr spezifische Aufgaben zu erledigen. So könnte ein Microservice beispielsweise Suchanfragen erfüllen und ein anderer in einer Datenbank Datensätze mit Kundeninformationen aktualisieren. Diese Dienste können aus einem oder mehreren identischen Containern bestehen und sind mobil, isoliert und in sich geschlossen. Wenn es ein Problem mit einem Microservice gibt, kann ein Entwickler schnell Korrekturen vornehmen und das alte Container-Bild durch ein neues ersetzen, ohne sich Sorgen zu machen, dass andere Microservices gestört werden. Container-Anwendungen, die als Microservices ausgeführt werden, sind in vielen Fällen einfacher dynamisch zu testen, zu verteilen und bereitzustellen als ihre monolithischen Gegenstücke. 

Die Natur eines Containers erhöht die Wahrscheinlichkeit potenzieller Risiken. So kann beispielsweise eine einzige Schwachstelle in einem Bild zu einer Vielzahl von anfälligen Containern führen. Außerdem kann sich ein Angreifer die Kontrolle über die gesamte Containerflotte verschaffen, wenn es ihm gelingt, in ein Orchestrierungssystem einzudringen. Viele der Security-Risiken im Zusammenhang mit Container-Anwendungen und den unterstützenden Services und Infrastrukturen können durch die Anwendung alter Prinzipien und bewährter Techniken in Kombination mit neuen und aktualisierten Tools entdeckt und abgeschwächt oder ganz behoben werden.

Der Prozess der Integration von Security in Ihre Container-Pipeline sollte in folgenden Schritten ablaufen:

  1. Konfigurationsrisiken identifizieren: Der erste Schritt in jedem Security-Prozess für Container-Pipelines sollte darin bestehen, eine Methode zu entwickeln, die es erlaubt, schnell zu erkennen, an welchen Stellen Fehlkonfigurationen zu Risiken für die Umgebung führen könnten. Die CIS Benchmark ist ein guter Leitfaden für Anwendungen, die Docker und Kubernetes verwenden
  2. Vertrauenswürdige Bilder verwenden: Eine Schwachstelle in einem einzigen Bild kann Auswirkungen auf Ihre gesamte Umgebung haben. Um dies zu vermeiden, vergewissern Sie sich, dass Sie die Bilder, die Sie verwenden, kennen – und ihnen VERTRAUEN 
  3. Zugang reduzieren: Der Zugang zu Containern und Bildern sollte nur denjenigen gewährt werden, die ihn unbedingt benötigen. Prüfen Sie die Zugangsrechte regelmäßig
  4. Admin-Dashboards sichern: Verwenden Sie Zwei-Faktor-Authentifizierung und Audit-Zugang für alle Orchestrierungs- und Cloud-Admin-Dashboards. Stellen Sie sicher, dass Sie wissen, welche Cloud-Tools und -Ressourcen mit Ihrer Umgebung in Berührung kommen
  5. Protokolle wirksam verwalten: Verwenden Sie Protokollsysteme, die einen zwischen Containern, Benutzern und Anwendungen abgestimmten Aktivitätszeitrahmen einhalten, lange nachdem ein Container nicht mehr aktiv ist.

Häufige Angriffsvektoren für Container

Ähnlich wie die Cloud haben auch Container Vorteile, die gleichzeitig dazu beitragen können, dass sie ein zusätzliches Risikopotenzial haben. Von folgenden Angriffsvektoren sind Container üblicherweise betroffen:

  • Anfälliger Code: Container können leicht und unwissentlich Anwendungen verpacken, die Fehler oder andere Schwachstellen enthalten. Um dies zu vermeiden, müssen alle Bilder kontinuierlich gescannt werden, um diese Fehler zu identifizieren.
  • Schlechte Bildkonfiguration: Ein Container kann versehentlich mit Root-Rechten konfiguriert werden, die sich auf viel zu viele Benutzer erstrecken. Jede schlechte Konfiguration kann zu Sicherheitslücken führen, die erst entdeckt werden, wenn es zu spät ist.
  • Host Vulnerability: Container laufen auf Host-Rechnern, und dort können veraltete Orchestrierungskomponenten Schwachstellen aufweisen. Teams sollten darauf achten, die Anzahl der Komponenten auf jedem Host zu reduzieren. 
  • Hacking von Zugangsdaten: Die Verwendung von Zugangsdaten ist verpflichtend, und diese müssen mit zusätzlichen Maßnahmen wie Zwei-Faktor-Authentifizierung unterstützt werden, ansonsten können sie anfällig für Diebstahl sein.
  • Angriffe auf die Lieferkette: Container, die in Registern gespeichert sind, werden nur während ihrer regulären Laufzeit verwendet. Wenn das Register angegriffen wurde, sind die Container mit hoher Wahrscheinlichkeit ebenfalls betroffen.

Die wichtigsten Vorteile von Container Security

Teams, die die Container Security wirksam umsetzen, werden feststellen, dass sie in der Lage sind, schnell zu handeln, ohne den guten Zustand und die Integrität ihrer Umgebungen zu opfern. Zu den wichtigsten Vorteilen zählen:

  • Gleichbleibende Geschwindigkeit: Wenn Container Security in die Anwendungsentwicklung und -bereitstellung integriert ist, werden DevOps-Teams nicht verlangsamt und die Sicherheit der Umgebung wird nicht beeinträchtigt.
  • Reduzierte Angriffsfläche: Mit Containern müssen Sie nur den Host und die Anwendung absichern, nicht aber tatsächliche physische Server, Integrationen und andere Elemente, die normalerweise die Angriffsfläche vergrößern.
  • Mehr Transparenz: Sie können leicht sehen, was sich in einem Bild befindet, während das Anzeigen in virtuellen Maschinen üblicherweise viel komplexer ist. Dies ermöglicht eine schnellere Identifizierung von Security-Problemen in Containern.
  • Schnellere Aktualisierung: Mit Containern können Sie sicherstellen, dass Ihre Anwendung auf dem neuesten Stand ist, indem Sie die neuesten Bilder aus einem beliebigen von Ihnen verwendeten Register abrufen.

Schmerzpunkte des Container Security Managements

Während Container einerseits eine Vielzahl an Vorteilen bieten, gibt es auch Herausforderungen, die die Container Security kompliziert machen können. Dazu gehören:

  • Vielfältige Infrastruktur: Die meisten Umgebungen bestehen aus einer Vielzahl von Servern, Speichertools, Registern und anderen Elementen. Die Automatisierung und Koordination all dieser Dinge kann daher komplex sein.
  • Überprivilegierte Nutzer-Schwachstelle: Einige Container haben einen privilegierten Status, das heißt, sie haben fast die gleichen Berechtigungen wie ein Host. Wenn es einem Angreifer gelingt, in einen solchen Container einzudringen, ist jeder Teil der Umgebung, der mit dem Container in Berührung kommt, gefährdet.
  • XXL-Überwachung: Container werden schnell hochgefahren und dann wieder abgeschaltet, was es fast unmöglich macht, in diesem Maßstab alle laufenden Container-Prozesse jederzeit zu überwachen.
  • Überautorisierte Kommunikation: Aufgrund der potenziellen Anzahl der Container und deren kurzlebiger Natur wird es mit hoher Wahrscheinlichkeit schwer sein, Firewall-Regeln zu implementieren, die dem Prinzip der geringsten Rechte entsprechen. Sie sollten Containern daher nur die Kommunikation mit denjenigen Containern erlauben, die absolut notwendig sind, um Ihre Angriffsfläche zu minimieren.

Branchen, die sich auf Container Security verlassen

In manchen Fällen setzen stark regulierte Branchen Container ein, um die Einhaltung von Compliance-Vorgaben in ihren Anwendungen zu unterstützen. Ein Unternehmen, in dem die Anforderungen an Security und Compliance mit spezifischen Security-Tools für Container in Einklang stehen, kann die Vorteile von Containern besonders gut nutzen, um bei der Anwendungsbereitstellung ein hohes Maß an Agilität und Flexibilität zu erreichen.

Wie jede Anwendung benötigen auch Container-Anwendungen den Schutz einer kontinuierlichen Security und Transparenz, um Bedrohungen zu erkennen und abzuwenden. Aufgrund der Vielzahl an Komponenten, die miteinander kommunizieren, um die Anwendung so schnell wie möglich bereitzustellen, sind Container-Anwendungen von Natur aus komplex. Hinzu kommt die Notwendigkeit der Einhaltung von staatlichen, industriellen und internen Vorschriften, aufgrund derer Unternehmen in der Lage sein müssen, sich auf einen Ansatz zu verlassen, der die entsprechende Compliance gewährleistet. 

Anwendungsfälle für Container

Gesundheitswesen, Pharmaindustrie und Finanzdienstleistungen sind nur drei Beispiele für Branchen, die strenge Compliance-Standards erfüllen müssen. Der Einsatz von Containern und die Vorteile der Container Security ermöglichen es ihnen, ein hohes Serviceniveau aufrechtzuerhalten, ohne die Sicherheit ihrer Daten zu gefährden. 

Fazit

Containers and container applications give enterprises the ability to push code fast and efficiently, and put solutions in front of internal and external customers. When they are paired with effective security, they can give organizations a competitive advantage and reduce the complexities of application development and integration. Lacework delivers native container security support, reducing the attack surface, and detecting threats across containerized environments. We visualize your containerized applications in real-time, providing a clear understanding of communications, launches and other cloud runtime behaviors. Coupling container technology with security analysis and evolved security best practices will create the necessary threat detection, protection, and response controls essential to keeping containers and their applications safe and secure.

 

 

 

Image by Bailey Mahon on Unsplash