Was ist Kubernetes-Sicherheit?

Kubernetes-Sicherheit basiert auf den 4 C der cloudnativen Sicherheit: Cloud, Cluster, Container und Code:

  • Cloud (oder Rechenzentrum/Co-Location-Einrichtung des Unternehmens): Die zugrunde liegende physische Infrastruktur ist das Fundament der Kubernetes-Sicherheit. Unabhängig davon, ob der Cluster im eigenen Rechenzentrum oder bei einem Cloud-Anbieter erstellt wird, müssen grundlegende Best Practices für Cloud-Anbieter (oder physische Sicherheit) beachtet werden.
  • Cluster: Der Schutz eines Kubernetes-Clusters umfasst sowohl konfigurierbare Komponenten wie die Kubernetes-API als auch die Sicherheit aller Anwendungen, die Teil des Clusters sind. Da die meisten cloudnativen Anwendungen im Kontext von Microservices und APIs entwickelt werden, sind sie nur so sicher wie das schwächste Glied in der Kette der Services, aus denen die Anwendung besteht.
  • Container: Die Best Practices für das Container-Design umfassen Folgendes: Beginnen mit der kleinstmöglichen Codebasis (ohne nicht erforderliche Bibliotheken oder Funktionen), Vermeiden von unnötigen Berechtigungen für Anwender im Container und Sicherstellen, dass Container bereits bei der Erstellung auf Schwachstellen überprüft werden.
  • Code: Code ist in allen Kubernetes-Umgebungen die Hauptangriffsfläche. Mit einfachen Richtlinien wie der Verschlüsselung von TCP mit TLS-Handshakes, der Nichtfreigabe ungenutzter Ports sowie regelmäßiger Überprüfungen und Tests können Sicherheitsprobleme in einer Produktionsumgebung vermieden werden.

Kubernetes in 5 Minuten

Statusbericht zu Kubernetes 2021

Warum ist Kubernetes-Sicherheit während des gesamten Container-Lebenszyklus wichtig?

Aufgrund der verteilten, dynamischen Natur eines Kubernetes-Clusters ist Kubernetes-Sicherheit während des gesamten Container-Lebenszyklus wichtig. Für jede der drei Phasen eines Anwendungslebenszyklus – Erstellung, Bereitstellung und Laufzeit – sind unterschiedliche Sicherheitsansätze erforderlich. Kubernetes bietet inhärente Sicherheitsvorteile. Beispielsweise werden Anwendungs-Container in der Regel nicht gepatcht oder aktualisiert. Stattdessen werden Container-Images vollständig durch neue Versionen ersetzt. Dies ermöglicht eine strenge Versionskontrolle und schnelle Rollbacks, wenn eine Schwachstelle in neuem Code entdeckt wird.

Einzelne Pods sind jedoch vergänglich und kurzlebig, sodass Anwendungen und API-Verbindungen zu anderen Anwendungen und Services einem ständigen Wandel unterliegen. Diese dynamische Laufzeitumgebung stellt IT-Sicherheitsexperten vor Herausforderungen.

Was sind die größten Kubernetes-Sicherheitsschwachstellen in einem Anwendungslebenszyklus und wie werden sie behoben?

Kubernetes-Sicherheitstools müssen die folgenden Anforderungen erfüllen:

  • Reduzieren des Zeitaufwands, um sicherzustellen, dass Code nicht kompromittiert ist
  • Bereitstellen digitaler Signaturen für die Vertrauenswürdigkeit von Code
  • Einblick und Transparenz nicht nur in Hinblick auf den Code, sondern auch bei Konfigurationsproblemen
  • Verhindern von Ingress (eingehende Verbindung) oder Egress (ausgehende Verbindung) von Informationen von und zu unsicheren Services

Was sind die größten Kubernetes-Sicherheitsschwachstellen während der Erstellung?

  • Code aus nicht vertrauenswürdigen Registrys: Nicht vertrauenswürdiger Code kann Malware oder Hintertüren enthalten, über die Angreifer ungewollt Zugriff erlangen.
  • Aufgeblähte Basis-Images: Bei Container-Anwendungen ist weniger mehr. Daher sollten Entwickler unnötige Pakete, Bibliotheken und Shells entfernen, die kompromittiert werden könnten.

Was sind die größten Kubernetes-Sicherheitsschwachstellen während der Bereitstellung?

  • Gewähren von unnötigen Berechtigungen: Begrenzen Sie Berechtigungen nach Möglichkeit auf ein Minimum und mounten Sie nur die Secrets, die für eine Aufgabe erforderlich sind, um die Angriffsfläche zu verkleinern.
  • Anwendungen werden nicht im Cluster isoliert.: Trennen Sie Ressourcen und Teams mithilfe von Namespaces voneinander.
  • Laterale Ausbreitung im Cluster: Segmentieren Sie das Netzwerk mit Richtlinien, um die laterale Ausbreitung eines Angriffs innerhalb des Clusters zu verhindern.
  • Unbefugter Zugriff: Stellen Sie sicher, dass die rollenbasierte Zugriffskontrolle (Role-Based Access Control, RBAC) ordnungsgemäß konfiguriert ist, um den Zugriff einzuschränken.

Was sind die größten Kubernetes-Sicherheitsschwachstellen während der Laufzeit?

  • Angriffe auf die Infrastruktur: Während der Laufzeit bieten Kubernetes-Infrastrukturelemente wie API-Server, etcd und Controller jeweils eigene Angriffsflächen.
  • Komplexität: Der fortwährende Zustand eines Kubernetes-Clusters wird von vielen dynamischen Teilen bestimmt. Kompromittierte Container müssen schnell isoliert, gestoppt und durch fehlerfreie Container ersetzt werden, während die Quelle des Angriffs lokalisiert und beseitigt wird.

Allgemeine Checkliste für Kubernetes-Sicherheit

Als Best Practice wird empfohlen, mit minimalen Images ohne Distribution zu beginnen und nur die absolut notwendigen Images hinzuzufügen. Kleiner ist sicherer.

  • Verwenden Sie ein minimales Hostbetriebssystem, Mounts mit reinem Lesezugriff und SELinux-Optionen für noch mehr Kontrolle.
  • Scannen Sie Images umfassend auf Schwachstellen, einschließlich Betriebssystem-Images und externer Images jeglicher Art. Externe Quellen sind niemals vertrauenswürdig.
  • Nutzen Sie Namespaces und RBAC, um Cluster und Anwender logisch zu segmentieren. Nur erforderliche Elemente dürfen sichtbar sein.
  • Mit den Standardeinstellungen für das Kubernetes-Networking ist eine beliebige Kommunikation möglich. Daher sollte vor dem Produktionsstart eine Netzwerksegmentierung erfolgen. Definieren Sie sorgfältig Ingress- und Egress-Richtlinien, um sicherzustellen, dass Verbindungen ordnungsgemäß geroutet werden.
  • Beschränken Sie Berechtigungen auf ein Minimum und führen Sie Anwendungsprozesse niemals als Root aus. Mit einem schreibgeschützten Root-Dateisystem verhindern Sie Angriffe, die auf der Installation von Software oder der Änderung des Dateisystems basieren.
  • Integrieren Sie Sicherheitsfunktionen wie Image-Scans in die CI/CD-Pipeline. Besser noch: Führen Sie CIS-Benchmark-Sicherheitstests durch.
  • Schützen Sie den Cluster. Konfigurieren Sie RBAC, um den Zugriff auf den API-Server zu beschränken, und stellen Sie durch TLS-Verschlüsselung sicher, dass die gesamte etcd-Kommunikation geschützt ist. Sie können auch Kubelet-Berechtigungen sperren, indem Sie RBAC für Kubelets konfigurieren.
  • Profitieren Sie von integrierten Kontrollen in Kubernetes. Beschränken Sie z.B. den Pod-Zugriff, indem Sie einen Sicherheitskontext konfigurieren.
  • Proaktive Sicherheit sollte die Überwachung von Prozessaktivitäten, der Kommunikation zwischen Services und der Kommunikation außerhalb des Clusters umfassen.

Zugehörige Lösungen und Produkte

Enterprisefähige Kubernetes-Laufzeit

Optimieren Sie Abläufe in einer Multi-Cloud-Infrastruktur.

Kubernetes im Vergleich zu Docker

Welche Tools unterstützen das erfolgreiche Arbeiten mit Containern?

Docker-Container in Kubernetes

Sobald Sie sich mit dem Konzept von Containern und Kubernetes vertraut gemacht haben, sollten Sie sich mit deren Zusammenspiel auseinandersetzen