Jump to section

Was ist Container-Sicherheit?

URL kopieren

Red Hat ausgezeichnet als Leader im 2023 Gartner® Magic Quadrant™

Red Hat wurde im Gartner 2023 Magic Quadrant für Container Management hinsichtlich der Ausführungsfähigkeit und bezüglich der umfassenden Vision bestplatziert.

Container-Sicherheit umfasst das Definieren und Einhalten von Build-, Deployment- und Runtime-Praktiken, die einen Linux-Container schützen – von der Container-Infrastruktur bis hin zu den von ihm unterstützten Anwendungen.

Immer mehr Unternehmen steigen auf Microservice-Designmuster und Container-Technologien wie Docker und Kubernetes um. Das stellt Sicherheitsteams zunehmend vor die Herausforderung, Container-Sicherheitslösungen zu entwickeln, die diese Infrastrukturveränderungen erleichtern. Container-Sicherheit muss von vornherein integriert werden und kontinuierlich sein. Außerdem sollte sie den allgemeinen Sicherheitsstatus eines Unternehmens unterstützen. 

Der Container-Orchestrator (und zwar Kubernetes) spielt eine wichtige Rolle bei der Container-Sicherheit und bietet Zugriff auf umfangreiche kontextbezogene Daten für eine bessere Transparenz und Compliance, kontextbasiertem Risikoprofiling, Netzwerken und Runtime-Erkennung. Eine effektive Container-Sicherheit baut auf Kubernetes-Konstrukten auf, dazu zählen etwa Deployments, Pods, und Netzwerkrichtlinien. Beispielsweise sind die Kubernetes-Netzwerkrichtlinien ein integriertes Sicherheitsfeature, mit dem Sie Pod-to-Pod-Kommunikation kontrollieren und den Angriffsradius eines Hackers minimieren können.

Dabei geht es vor allem um Folgendes:

  • Sicherung von Container Pipeline und Anwendung
  • Schutz von Container-Deployment-Umgebung(en) und Infrastruktur
  • Containerisierte Workloads zur Runtime schützen

Finden Sie heraus, wie Unternehmen Container-Sicherheitsinitiativen implementieren.

In der herkömmlichen Softwareentwicklung ist eine Sicherheitsüberprüfung eine Reiher letzter Tests am Ende der Entwicklung. Aber moderne, cloudnative Entwicklungsworkflows bieten eine viel größere Angriffsfläche, wodurch Sicherheit zu einem komplexeren Problem wird. In cloudnativen Umgebungen, in denen Container das Standardformat für die Anwendungsbereitstellung sind, wird der Code häufig aktualisiert und von mehreren Repositories aufgenommen. Menschliche Fehler, wie etwa Fehlkonfigurationen, können an vielen Punkten des Entwicklungszyklus zu unautorisierten Zugriffen führen. Sicherheitsschwachstellen können nahezu überall entstehen. Deshalb muss Sicherheit ein kontinuierlicher Prozess sein.

So wie das Container-Deployment mit Automatisierung und unter Verwendung von Orchestrierungs-Tools wie Kubernetes durchgeführt wird, so muss auch Sicherheit automatisiert werden. Mithilfe von DevSecOps-Prinzipien, einem Konzept, das erschaffen wurde, um einen Fokus auf die Sicherheit in DevOps zu legen, kann Code während des Entwicklungszyklus kontinuierlich untersucht und überprüft werden. Dadurch können Schwachstellen früh und schnell entdeckt und geschlossen werden und es wird vermieden, dass sie solange unentdeckt bleiben bis sie schließlich zu zeitaufwendigen Überraschungen geworden sind. Da Container unveränderlich sind, bedeutet Container-Sicherheit, Code im Entwicklungsstadium und nicht während der Ausführung zu patchen. Dadurch können Schwachstellen nicht wieder auftreten, wenn Container zerstört und neu aufgebaut werden.

Das Scannen von Container Images auf Malware und andere Sicherheitsschwachstellen ist ein wichtiger Schritt und sollte eine von mehreren Sicherheitsschichten darstellen. Organisationen sollten die Sicherheit ihrer gesamten Software-Lieferkette bedenken. Dazu zählen die Entwicklung und Bereitstellung containerisierter Software inklusive Abhängigkeiten und Runtime-Umgebungen. 

Hier sind konkrete Strategien für die containerisierte Entwicklung, welche die Sicherheit der Lieferkette berücksichtigen:

  • Vertrauenswürdige Inhalte und ein unternehmensfähiges Repository für Inhalte bieten vorgehärtete Images mit erweiterten Sicherheits- und Zugangskontrollen.
  • Ein Zero-Trust-Ansatz weist wichtigen Ressourcen die geringstmögliche Zugangsberechtigung zu.
  • Bei Policy-as-Code werden Sicherheitskontrollen direkt in die CI/CD-Pipeline eingebettet.
  • Signaturen und Verifizierungen sorgen für Vertrauen, indem sie sicherstellen, dass Container Images nicht verändert wurden.
  • GitOps-Praktiken helfen bei der Verwaltung der Sicherheitskonfigurationen von Anwendungen und Containern.

Sammlung von Images

Container werden aus Schichten von Dateien erstellt, die Container Images genannt werden. 

Mit einem Tool wie Buildah können Sie OCI- und Docker-kompatible Images von Grund auf neu oder mit einem vorhandenen Container Image als Vorlage erstellen.

Container Images sind das Standardformat für die Anwendungsbereitstellung in cloudnativen Umgebungen, aber selbst cloudnative Unternehmen nutzen verschiedene Cloud-Anbieter für ihre Workloads. Die ideale Lösung für Container-Sicherheit sollte die verschiedensten Architekturen unterstützen, unabhängig davon, ob Ihre Infrastruktur auf privater Hardware, einem geteilten Rechenzentrum oder einer Public Cloud wie AWS (Amazon Web Services), Microsoft Azure oder Google Cloud Platform ausgeführt wird.

Das Basis-Image oder Golden Image ist in Bezug auf die Sicherheit das wichtigste, denn es wird als Ausgangspunkt für die Erstellung abgeleiteter Images verwendet. Der erste Schritt bei der Container-Sicherheit ist die Suche nach vertrauenswürdigen Quellen für Basis-Images. Stellen Sie sicher, dass das Image von einem bekannten Unternehmen oder einer Open Source-Gruppe stammt und in einer seriösen Registry gehostet wird. Außerdem sollte der Quellcode für die unterschiedlichen Komponenten im Image verfügbar sein.

Aber auch bei Verwendung vertrauenswürdiger Images entstehen durch das Hinzufügen von Anwendungen und Durchführen von Konfigurationsänderungen neue Variablen. Wenn Sie beim Erstellen Ihrer Apps externe Inhalte nutzen, sollten Sie dabei die Praktiken des proaktiven Schwachstellenmanagements berücksichtigen:

  • Verwenden Sie einen separaten oder in der Registry integrierten Scanner, um alle Images in regelmäßigem Abstand zu scannen. Suchen Sie nach einem Scanner, der seine Scans auf Basis spezifischer Sprachen, Pakete und Image Layers durchführt.
  • Identifizieren Sie geänderte Container Images, die gegen Richtlinien oder dokumentierte Best Practices verstoßen – sogenannte Container-Fehlkonfigurationen –, um die Wahrscheinlichkeit und Auswirkungen potenzieller Sicherheitsgefährdungen zu mindern.

Antizipieren und Beheben von Schwachstellen

Container sind sehr beliebt, weil sie eine benutzerfreundliche Entwicklung, Paketierung und Unterstützung von Anwendungen oder Services und ihrer Abhängigkeiten über den gesamten Lifecycle hinweg sowie für verschiedene Workflows und Deployment-Ziele ermöglichen. Trotz alledem gibt es bei der Container-Sicherheit auch einige Herausforderungen zu beachten. Durch den Einsatz von Containern können Sie eine umfassendere Sicherheit auf Workload-Ebene implementieren. Dabei wird aber auch neue Infrastruktur-Komponente mit unbekannten Angriffsflächen hinzugefügt. Die richtige Container-Sicherheitslösung sollte dazu beitragen, die Infrastruktur und den Orchestrator des Clusters sowie die davon ausgeführten containerisierten Anwendungen zu schützen.

So lassen sich in einem Unternehmen statische Sicherheitsrichtlinien und Checklisten für Container nicht skalieren:

  • Für die Lieferkette werden zusätzliche Sicherheitsrichtlinien benötigt.
  • Sicherheitsteams sehen sich vor die Notwendigkeit gestellt, ihre Anforderungen in Bezug auf die Vernetzung und Governance von containerisierten Umgebungen ausgleichen zu müssen.
  • Tools, die während der Build-, Wartungs- und Servicephasen verwendet werden, sollten unterschiedliche Berechtigungsrichtlinien haben.

Ein effektives Container-Sicherheitsprogramm versucht, Schwachstellen in Echtzeit zu beheben und die Angriffsfläche zu reduzieren, bevor Images bereitgestellt werden und behält gleichzeitig Details zum Ursprung bei. Indem Sie Sicherheit in Ihre Container Pipeline integrieren und ihre Infrastruktur gut schützen, können Sie sicherstellen, dass Ihre Container zuverlässig, skalierbar und vertrauenswürdig sind.

Stellen Sie sich bei der Sammlung von Container Images deshalb folgende Fragen:

  • Sind diese Images signiert bzw. stammen Sie aus vertrauenswürdigen Quellen?
  • Woher stammt das Image und wie kann ich es neu erstellen?
  • Wann wurde ein bestimmtes Image zum letzten Mal gescannt?
  • Sind Runtime- und Betriebssystemschichten aktuell?
  • Wie schnell und häufig werden die Container aktualisiert?
  • Wird auf Sicherheitsrisiken überwacht, und wenn ja, wie?

Sobald Sie über Ihre Container Images verfügen, müssen Sie als nächstes den Zugriff auf bzw. die Unterstützung der Images verwalten, die von Ihrem Team verwendet werden. Will heißen, diejenigen schützen, die Sie herunterladen bzw. entwickeln. Mithilfe einer Private Registry können Sie den Zugriff über rollenbasierte Zuweisungen kontrollieren und gleichzeitig die Verwaltung von Inhalten durch Zuordnung von relevanten Metadaten zu Containern gewährleisten. Anhand dieser Metadaten können Sie bekannte Schwachstellen besser identifizieren und nachverfolgen. Mit der genannten privaten Container Registry können Sie dazu Richtlinien für gespeicherte Images automatisieren bzw. zuweisen und damit menschliche Fehler vermeiden, die zu Schwachstellen bei Container-Umgebungen führen können. Container-Registries mit unternehmensfähigen Sicherheitsfunktionen bieten außerdem integrierte Schwachstellenscanner.

Stellen Sie sich bei Entscheidungen in Bezug auf die Zugriffsverwaltung folgende Fragen:

  • Welche rollenbasierten Kontrollen können Sie für das Management von Container Images nutzen?
  • Stehen Tagging- oder Kennzeichnungsfunktionen zur Unterstützung der Image-Sortierung zur Verfügung? Können Sie Images separat als ausschließlich genehmigt für Entwicklungs-, Prüfungs- und schließlich Produktionsumgebungen kennzeichnen?
  • Bietet die Registry sichtbare Metadaten, mit denen Sie auf bekannte Schwachstellen überwachen können?
  • Lässt sie sich zur Zuweisung und Automatisierung von Richtlinien (beispielsweise Prüfung von Signaturen, Scans von Anwendungscode etc.) einsetzen?

Die letzte Phase der Pipeline ist das Deployment. Sobald Sie Ihre Builds fertiggestellt haben, müssen diese den Branchenstandards entsprechend verwaltet werden. Diese Standards werden unter anderem vom CIS (Center for Internet Security) und NIST (National Institute of Standards and Technology) festgelegt. Dabei müssen Sie lernen, wie Sie mit Richtlinien Builds automatisch auf Sicherheitsprobleme überprüfen können, besonders in Bezug auf neue Schwachstellen. Schwachstellen-Scans sind zwar nach wie vor wichtig, aber sie sind nur eine von vielen Sicherheitsinitiativen, die zum Schutz Ihrer Container-Umgebungen eingesetzt werden.

Da die Neuentwicklung von Containern einem Patching vorzuziehen ist, sollten bei der Integration von Sicherheitstests Richtlinien berücksichtigt werden, die automatische Rebuilds auslösen. Der erste Teil dieser Phase ist der Einsatz von Tools zur Komponentenanalyse, mit denen sich Probleme identifizieren lassen. Der zweite Teil besteht in der Entwicklung von Tools für ein automatisches richtlinienbasiertes Deployment.

Stellen Sie sich bei der Integration von Sicherheitstests und der Automatisierung des Deployments folgende Fragen:

  • Enthalten meine Container bekannte Schwachstellen, die ich beheben sollte, bevor ich sie in einer Produktionsumgebung bereitstelle?
  • Sind meine Deployments korrekt konfiguriert? Gibt es Container mit Berechtigungen, die diese nicht haben sollten? Verwende ich ein schreibgeschütztes Root-Dateisystem?
  • Welchen Compliance-Status habe ich mit CIS-Benchmarks und NIST SP 800-190?
  • Isoliere ich sensible Workloads mit integrierten Funktionen wie etwa Netzwerkrichtlinien und Namespaces?
  • Verwende ich integrierte Sicherheits- und Härtungsfunktionen wie etwa SELinux, AppArmor und Seccomp-Profile?

Die Container-Sicherheit muss auch nach Tests und Deployment fortgeführt werden und betrifft auch die Ausführung containerisierter Anwendungen. Bedrohungserkennung, Netzwerksicherheit und Reaktionen auf Sicherheitsvorfälle gewinnen an Bedeutung.

Zur Runtime können Anwendungen unvorhersehbaren Bedrohungen ausgesetzt sein, da während der Entwicklung übersehene Schwachstellen und Fehlkonfigurationen ausgenutzt werden können. Runtime-Sicherheit sollte die Erkennung von sich abnormal verhaltenden Anwendungen beinhalten. Die Anomalieerkennung zur Runtime kann Privilegienerweiterung, Cryptomining, unerwartete Netzwerkflows, Containerausbrüche und andere unsichere Verhaltensweisen identifizieren.

Eine Netzwerksegmentierung ist eine weitere Maßnahme, mit der Ihre Angriffsfläche reduziert werden kann. In Kubernetes erlauben die standardmäßigen Netzwerkrichtlinien eine Kommunikation von Pods mit anderen Pods innerhalb eines Clusters. Wenn Sie Zero-Trust-Richtlinien durchsetzen, können Sie sicherstellen, dass ein einzelner infizierter Pod nicht andere Pods innerhalb dieses Clusters infiziert.

Schließlich können Strategien für die Reaktion auf Sicherheitsvorfälle Teams dabei unterstützen, angemessen auf Vorfälle zu reagieren. Reaktionen können unter anderem die Weiterleitung von Vorfällen an ein SIEM-Sytem (Security Information and Event Management) beinhalten. Dieses benachrichtigt den Owner der Anwendung, zeigt ihm detailliert auf, welches Deployment eine Fehlerbehebung benötigt und kann sogar Pods automatisch beenden und neu starten. Reaktionen sollten den erneuten Aufbau und das Deployment von betroffenen Containern verfolgen, anstatt ausgeführte Container zu patchen.

Eine weitere Schicht der Container-Sicherheit ist die vom Knoten oder Host-Betriebssystem (BS) des Containers bereitgestellte Isolierung. Dafür benötigen Sie ein Host-BS, das eine maximale Container-Isolierung bietet. Diese Maßnahme ist für den Schutz Ihrer Container-Deployment-Umgebung unerlässlich. Das Host-Betriebssystem in einer containerisierten Kubernetes-Umgebung wird unter den Containern geteilt und von einer Container-Runtime gemanagt, die mit Kubernetes interagiert, um Container, oder Pods von Containern, zu erstellen und zu verwalten. 

Das Host-Betriebssystem sollte vom Container isoliert werden, um zu verhindern, dass ein einzelner infizierter Container das Host-Betriebssystem und die anderen Container infiziert. Für eine resiliente Container-Plattform verwenden Sie Netzwerk-Namespaces zur Trennung von Anwendungen und Umgebungen bzw. verknüpfen Storage über sichere Mounts. Verwenden Sie keine Konfigurationen, die dazu führen, dass Ihre Container-Runtime den Hostnetzwerk-Namespace, IPC-Namespace oder UPC-Namespace teilt. Entscheiden Sie sich für ein containeroptimiertes Host-Betriebssystem, das vorgehärtet ist, und führen Sie Host-Schwachstellen-Scans.

Eine API-Management-Lösung sollte Funktionen wie Authentifizierung und Autorisierung, LDAP-Integration, Endpunkt-Zugriffskontrollen sowie Durchsatzbeschränkung bieten.

Stellen Sie sich in Bezug auf den Schutz Ihrer Container-Infrastruktur folgende Fragen:

  • Welche Container müssen aufeinander zugreifen können? Wie können sich Container gegenseitig ermitteln?
  • Wie sollen der Zugriff auf und das Management von gemeinsamen Ressourcen (beispielsweise Netzwerk und Storage) kontrolliert werden?
  • Wie überwachen Sie den Container-Zustand?
  • Wie lässt sich die Anwendungskapazität bedarfsabhängig skalieren?
  • Wie werden Host-Updates verwaltet? Müssen Ihre Container gleichzeitig aktualisiert werden?

Red Hat® OpenShift® umfasst Red Hat Enterprise Linux®. Mit dieser Lösung können Sie den Lifecycle Ihrer Container-Anwendungen automatisieren, Sicherheit in die Container Pipeline integrieren und den Übergang von einer DevOps- zu einer DevSecOps-Strategie schaffen. Über unseren Container Catalog erhalten Sie Zugriff auf eine Vielzahl an zertifizierten Images, Sprach-Runtimes, Datenbanken und Middleware-Anwendungen, die genau dort ausgeführt werden können, wo Red Hat Enterprise Linux ausgeführt wird. Images von Red Hat sind zwecks Gewährleistung von Herkunft und Integrität jederzeit signiert und verifiziert.

Wir überwachen unsere Container Images auf neue Schwachstellen (inklusive eines kontinuierlich aktualisierten und öffentlich sichtbaren Health Index) und veröffentlichen Sicherheits-Updates und Container Rebuilds, die in unsere Public Registry verschoben werden. Durch die Integration von Red Hat Advanced Cluster Security for Kubernetes  in DevOps- und Sicherheitstools können Sie Bedrohungen reduzieren und Sicherheitsrichtlinien durchsetzen, die das operative Risiko für Ihre Anwendungen minimieren.

Red Hat Service Interconnect ermöglicht den Zugriff und die Kommunikation von Containern untereinander und minimiert gleichzeitig das zusätzliche Risiko für die Sicherheit Ihres Unternehmens oder die Nutzerdaten.

Die Sicherheitspartner  von Red Hat können unsere Container-Sicherheitsfunktionen mit zertifizierten Integrationen erweitern und verbessern. Red Hat OpenShift verfügt über in die Plattform integrierte Sicherheit, die unsere Sicherheitspartnerlösungen ergänzt, um Anwendungen und Container während des gesamten DevOps-Lifecycles zu schützen.

Dazu werden Sie auch folgende Funktionen zu schätzen wissen:

  • Web-Scale-Orchestrierung und -Management von Containern
  • Umfassende Webkonsole mit Features für die Zusammenarbeit mehrerer Nutzenden
  • CLI- und IDE-Schnittstellen
  • Integration mit CI
  • Build-Automatisierung und Source-to-Image
  • Deployment-Automatisierung
  • Support für Remote Storage Volumes
  • Vereinfachte Installation und Administration
  • Umfangreiche Sammlung von Programmiersprachen, Frameworks und Services
Container thumbnail image

KuppingerCole-Bericht – Leadership Compass: Container Security

Verschaffen Sie sich einen umfassenden Überblick über den Container- und Kubernetes-Sicherheitsmarkt, damit Sie die richtige Lösung für die Container-Sicherheit ermitteln und auswählen können.

Weiterlesen

ARTIKEL

Vergleich zwischen Containern und VMs

Linux-Container und virtuelle Maschinen (VMs) sind paketierte Computing-Umgebungen, die verschiedene IT-Komponenten vereinen und vom Rest des Systems isolieren.

ARTIKEL

Was ist Container-Orchestrierung?

Mithilfe der Container-Orchestrierung werden Deployment, Management, Skalierung und Vernetzung von Containern automatisiert.

ARTIKEL

Was ist ein Linux-Container?

Ein Linux-Container besteht aus Prozessen, die vom System isoliert sind und auf einem eigenen Image ausgeführt werden, das alle benötigten Dateien zur Unterstützung der Prozesse bereitstellt.

Mehr über Container erfahren

Produkte

Eine Plattform, die es Ihnen ermöglicht, Unternehmensanwendungen schnell und effizient über die von Ihnen gewünschte Infrastruktur bereitzustellen.

Ressourcen

Analystenbericht

Red Hat wurde von Forrester unter den Multicloud-Plattformen für die Container-Entwicklung zum Marktführer ernannt

Datenblatt

Red Hat OpenShift Container Platform

Training

Kostenloser Trainingskurs

Running Containers with Red Hat Technical Overview

Kostenloser Trainingskurs

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Kostenloser Trainingskurs

Developing Cloud-Native Applications with Microservices Architectures