Was ist

Kubernetes-Sicherheit

?

Risiken und Herausforderungen

Anwendungen durchlaufen Entwicklungs-, Bereitstellungs- und Laufzeitzyklen, und Kubernetes bietet in jeder Phase des Anwendungslebenszyklus intrinsische Sicherheitsvorteile. Es kann jedoch immer noch viele Herausforderungen mit sich bringen.

Größere Angriffsfläche

Ihr System wird wahrscheinlich unzählige Container verwenden oder erstellen, und Container sind überall. Die Verwendung von Containern bietet Ihnen zwar die Möglichkeit, Microservice-Architekturen zu nutzen und mit höherer Geschwindigkeit und Portabilität zu arbeiten, aber ihre Verwendung kann auch zu Sicherheitslücken führen, die Ihr System Sicherheitslücken aussetzen.

Es wird immer schwieriger, den Überblick über den Systembetrieb und die Sicherheit zu behalten, während Sie immer mehr Container bereitstellen. Darüber hinaus gibt es auch die Aufgabe, einzelne Probleme zu untersuchen, darauf zu reagieren oder falsch konfigurierte Container neu zu konfigurieren.

Missbrauchte Register und Bilder

Wie sicher sind die Images, die Sie erstellen, und die Register, in denen Sie sie speichern? Scannt ihr sie regelmäßig? Wenn Sie dies nicht tun, kann sich dies nachteilig auf Ihre Anwendungs- und Systemsicherheit in Ihren Netzwerken auswirken — nicht nur in der Kubernetes-Umgebung.

Netzwerkeffekte

Da Container mit anderen Containern und anderen Netzwerkendpunkten kommunizieren, ist ein Verstoß in Sicherheit des Containers kann sich über Ihr gesamtes Netzwerk ausbreiten, je nachdem, welchen Systemzugriff der angegriffene Container auf den Rest des Netzwerks hat.

Um diese und andere Herausforderungen, mit denen Sie möglicherweise konfrontiert sind, erfolgreich zu bewältigen, müssen Sie Sicherheit in Ihre Erstellungs-, Bereitstellungs- und Ausführungszyklen integrieren. Auf einer sehr hohen Ebene müssen Ihre Images frei von gefährlichen Sicherheitslücken sein, die Bereitstellungen müssen den bewährten Sicherheitsmethoden entsprechen und Ihre Container-Workloads müssen vor Laufzeitbedrohungen geschützt sein.

Bewährte Methoden für Container

In den folgenden Abschnitten beschreiben wir einige der Best Practices für Kubernetes, die Sie in allen drei Phasen des Container-Lebenszyklus befolgen sollten, detaillierter.

Erstellungsphase

In erster Linie müssen Sie Ihre Container-Images sichern. Dazu müssen Sie zunächst sichere Images erstellen und dann nach Sicherheitslücken suchen.

Es hat sich bewährt, möglichst wenige Basis-Images zu verwenden und die Verwendung von Images mit Shells oder Betriebssystem-Paketmanagern zu vermeiden — diese können zu unbekannten Sicherheitslücken in Ihrem System führen. Vermeiden Sie außerdem das Hinzufügen unnötiger Komponenten und verwenden Sie nur aktuelle Images. Sie müssen sicherstellen, dass alle Tools, Anwendungen und alle Bilder auf dem neuesten Stand sind.

Regelmäßiges Scannen ist ein wichtiger Bestandteil der Kubernetes-Sicherheit. Verwenden Sie daher unbedingt einen Scanner, der Image-Schwachstellen sowie Schwachstellen in Betriebssystempaketen und Runtime-Umgebungen von Drittanbietern erkennen kann. Diese Scans und Sicherheitsprüfungen sollten als Teil Ihrer CI/CD-Pipeline (Continuous Integration/Continuous Deployment) integriert und automatisiert werden. Mit dem Validating Admission Controller in Kubernetes können Sie beispielsweise die Erstellung einer Bereitstellung ablehnen, wenn Images vor der Bereitstellung nicht gescannt wurden oder wenn die Images älter als 90 Tage sind.

Denken Sie daran, dass die beste Sicherheitspolitik eine gründliche Verteidigung ist. So kann eine Sicherheitslücke in einem Bereich, z. B. in einem Container, einem Cluster, der Cloud oder in Ihrem Code, behoben werden, bevor sie sich auf die Produktion auswirkt und bevor sie andere Teile Ihres Netzwerks erreichen kann.

Bereitstellungsphase

Sie müssen Ihre Kubernetes-Infrastruktur sicher konfigurieren, bevor Workloads bereitgestellt werden. Sie müssen wissen, was Sie wie bereitstellen, und von dort aus können Sie potenzielle Sicherheitsbedrohungen oder Verstöße erkennen und darauf reagieren.

Um genau zu wissen, was Sie bereitstellen, müssen Sie Folgendes verstehen:

  • Komponenten
  • Bekannte Sicherheitslücken
  • Pods, die bereitgestellt werden
  • Alle beteiligten Cluster, Namespaces und Knoten
  • Ob es privilegiert laufen wird
  • Mit welchen Bereitstellungen wird es kommunizieren

Sie müssen auch wissen, auf welche Daten es zugreifen kann und ob die Bereitstellung bereits Sicherheits- oder Richtlinienanforderungen erfüllt oder gegen diese verstößt.

Von dort aus können Sie Empfehlungen für die Bereitstellungsphase implementieren. Dazu gehören die Verwendung von Namespaces zur Isolierung sensibler Workloads zur Eindämmung potenzieller Angriffe, die Begrenzung der Auswirkungen von Fehlern oder böswilligen Aktionen autorisierter Benutzer und die Steuerung des Datenverkehrs zwischen Pods und Clustern über Netzwerksegmentierung um unbefugte seitliche Bewegungen zwischen Behältern zu verhindern.

In der Regel müssen Sie immer die Zugriffsrechte aller und aller Personen in Ihrem System überprüfen, einschließlich der Zugriffsberechtigungen Ihrer Container. Geben Sie Ihren Containern nur die Rechte und Fähigkeiten, die sie benötigen, um die erforderlichen Funktionen auszuführen.

Stellen Sie außerdem niemals Code aus einer unbekannten Quelle bereit, was in Kubernetes bedeutet, dass Sie nur Images aus bekannten Registern oder solchen mit autorisiertem Zugriff verwenden. Relevante Geschäftsressourcen wie Entwickler und Programmierer sollten wissen, wie man Bereitstellungen mit dem richtigen Namen oder Alias kennzeichnet, damit die entsprechenden Teams die Sicherheitsprobleme lösen können, für die sie verantwortlich sind, falls sie auftreten.

Laufzeitphase

Sie können die Sicherheitsprobleme von Kubernetes bewältigen, indem Sie sich einen Überblick über die Laufzeitumgebung verschaffen und Laufzeitbedrohungen erkennen und dann darauf reagieren, sobald sie auftreten.

Dazu gehören die Überwachung der Prozessaktivität, der Netzwerkkommunikation zwischen verschiedenen Containern und containerisierten Diensten sowie der Kommunikation zwischen Containern, containerisierten Diensten und Drittanbietern, Clients oder externen Servern.

Durch den Vergleich der beobachteten Aktivität mit der erwarteten Aktivität können Sie verdächtige Aktivitäten identifizieren und dann stoppen. Indem Sie die Suche nach Sicherheitslücken auf laufende Bereitstellungen ausdehnen, können Sie Laufzeitschwachstellen ausfindig machen, die zuvor nicht aufgetreten sind. Viele in Kubernetes integrierte Steuerelemente, wie z. B. schreibgeschützte Root-Dateisysteme, können Angriffe verhindern, für die eine Softwareinstallation erforderlich ist. Sie sollten den Netzwerkverkehr überwachen, um unnötige oder ungesicherte Kommunikation zu vermeiden.

Integrierte Funktionen

Die Sicherheit von Kubernetes während der Bau-, Bereitstellungs- und Laufzeitphase ist zwar wichtig, Sicherheitsprobleme sollten jedoch ganzheitlich angegangen werden. Das bedeutet, dass Sie mit der Infrastruktursicherheit beginnen und dann Ihr Netzwerk nach oben oder unten skalieren müssen, indem Sie zuerst eine umfassendere und dann eine detailliertere Cluster-/Container-/Code-Ansicht Ihrer Systeme erstellen.

Aktualisieren Sie Kubernetes nach Möglichkeit immer auf die neueste Version und sichern Sie etcd, einen Schlüsselwertspeicher, der von Kubernetes für den Datenzugriff verwendet wird. Stellen Sie sicher, dass alle Client-Verbindungen nur über TLS bereitgestellt werden, und binden Sie die Sicherheit so früh wie möglich in den Container-Lebenszyklus ein. Machen Sie sich außerdem mit den nativen Steuerelementen von Kubernetes vertraut.

Im Folgenden finden Sie Beispiele für integrierte Kubernetes-Funktionen, mit denen Sie Ihre Container-Orchestrierung beschleunigen können:

  • Öffnen Sie den Policy Agent (OPA): OPA vereinheitlicht die Durchsetzung von Richtlinien mithilfe einer deklarativen Hochsprache, mit der Sie Richtlinien als Code angeben können. Auf diese Weise wird Ihre Software von der Last der politischen Entscheidungsfindung entlastet. Verwenden Sie OPA, um beliebige benutzerdefinierte Richtlinien für Kubernetes-Objekte durchzusetzen, ohne Ihren Kubernetes-API-Server neu kompilieren oder neu konfigurieren zu müssen.
  • Pod-Sicherheitsrichtlinie (PSP): Definieren Sie mit PSP die Bedingungen, unter denen bestimmte Pods ausgeführt werden müssen, damit sie in das System aufgenommen werden. PSP-Sicherheitseinstellungen, die mithilfe von Sicherheitskontexten angewendet werden, ermöglichen es Ihnen auch, Rechte- und Zugriffskontrollen für bestimmte Pods zu definieren.
  • Rollenbasierte Zugriffskontrolle (RBAC): Das RBAC verwaltet Autorisierungsentscheidungen. Auf diese Weise können Administratoren Zugriffsrichtlinien mithilfe von Rollenbindungen und Berechtigungen für bestimmte Benutzer oder Benutzergruppen dynamisch konfigurieren.
  • Netzwerkrichtlinie: Kommunikationsrichtlinien, die regeln, wie Gruppen von Pods miteinander und mit anderen Netzwerkendpunkten kommunizieren können.

Es kann einige Zeit dauern, bis Sie wissen, wann, wo und wie Sie diese und andere integrierte Tools verwenden, um Kubernetes richtig zu nutzen. Das Gleiche gilt für die richtige Verteidigung, die Identifizierung und Behebung von Sicherheitslücken, wenn sie auftreten, die Absicherung Ihrer Cluster, die Gewährleistung der Pod-Sicherheit und die Reduzierung Ihrer Angriffsflächeund Verwaltung des Netzwerkverkehrs. Die Gewährleistung der Kubernetes-Sicherheit ist jedoch von entscheidender Bedeutung, wenn Sie von der Skalierbarkeit, Replizierbarkeit, vereinfachten Verwaltung und schnellen Bereitstellung von Containern profitieren möchten, für die Kubernetes entwickelt wurde.

Fazit

Wenn Sie Ihre ersten Ausflüge in Kubernetes unternehmen, kann Ihnen ein Kubernetes-Spezialist eines Drittanbieters helfen, schnell mit der Cluster-Orchestrierung loszulegen, basierend auf den Arten von Anwendungen, die Ihr Unternehmen erstellt, und den Arten von Bereitstellungen, die Sie benötigen.

Erfahre mehr

Entdecke wie Zero-Trust-Segmentierung sichert Container-Bereitstellungen, einschließlich Kubernetes- und RedHat OpenShift-Plattformen.

Gehen Sie von einem Verstoß aus.
Auswirkungen minimieren.
Erhöhen Sie die Widerstandsfähigkeit.

Sind Sie bereit, mehr über Zero-Trust-Segmentierung zu erfahren?