Kubernetes ist von Haus aus als Multi-Tenant-System konzipiert, in dem ein Cluster mehrere Benutzer mit gemeinsamen Ressourcen und Zugriffsrechten umfassen kann. Daher kann eine Kompromittierung einer einzelnen Clusterkomponente oder eines Dienstes zu Kompromittierungen des gesamten Frameworks führen. Aufgrund der grundlegenden Komplexität erfordert die Sicherung von Kubernetes-Implementierungen die gemeinsame Anwendung von Best Practices, Tools und Prinzipien zur Sicherheit. Darüber hinaus unterscheiden sich die Ansätze zur Sicherung eines Kubernetes-Ökosystems von denen eines herkömmlichen Frameworks.
In diesem Artikel besprechen wir die Grundlagen der Kubernetes-Sicherheit, Herausforderungen bei der Verwaltung umfassender Sicherheit und Best Practices zur Sicherung von Kubernetes-Workloads und Kubernetes-Speicher in der Cloud.
Grundlagen der Kubernetes-Cloud-Sicherheit
Obwohl Kubernetes Clusters integrierte Sicherheitsfunktionen bietet, reichen diese oft nicht aus. Als dynamisches Ökosystem, das aus mehreren Objekten und Bereitstellungsumgebungen besteht, erfordert die Sicherung von Kubernetes Clusters einen mehrgleisigen Ansatz. Dies liegt daran, dass eine einzelne Sicherheitsplattform als unzureichend gilt, um Bedrohungen auf allen Ebenen des Frameworks zu begegnen.
Die 4Cs der Cloud-Sicherheit für Kubernetes-Workloads
Cloud-native Sicherheit folgt einem Defense-in-Depth-Sicherheitsmodell, das Sicherheit über mehrere Ebenen (einschließlich Netzwerk, Cluster und Code) und Dimensionen (einschließlich Namespaces, Benutzernamen und Laufzeitklassennamen) des Technologie-Stacks eines Unternehmens hinweg implementiert. In einem Kubernetes-Ökosystem bezieht sich dies auf die folgenden vier Ebenen:
- Code-Sicherheit
- Auch als Standardanwendungssicherheit bekannt , bezeichnet dies den gemeinsamen Ansatz von Test-, Scan- und Audit-Verfahren zur Gewährleistung der Sicherheit des Quellcodes. Zu diesen Verfahren gehören unter anderem:
- Schwachstellen-Scanning – Konsequentes Testen des Quellcodes und der Abhängigkeiten von Drittanbietern, um sicherzustellen, dass sie frei von Sicherheitslücken sind
- Versionskontrolle – Erzwingt die Verfolgung von Codeänderungen und stellt gleichzeitig sicher, dass Container die neuesten Codeversionen mit Sicherheitspatches und Updates verwenden.
- Statische Codeanalyse – Hilft Teams, fehlerhafte Konfigurationen und Sicherheitsprobleme zu identifizieren, bevor diese in Containern bereitgestellt werden
- Containersicherheit
- Da Container den Anwendungsquellcode und die zugehörigen Abhängigkeiten paketieren, um Workloads auf einem Kubernetes Clusters auszuführen, können Konfigurationskonflikte und Schwachstellen in Container Runtime Engines (CREs) und Images die Sicherheit eines gesamten Clusters gefährden.
- Zu den Überlegungen zur Containersicherheit gehören:
- Prozessisolierung – Verwenden von Laufzeitklassen, um mehrere containerisierte Prozesse in separaten Konfigurationen zu ermöglichen
- Image-Signierung – Stellen Sie sicher, dass Images aus vertrauenswürdigen Quellen ausgeführt werden und sichere Inhalte hosten, indem Sie legitime Container-Images signieren
- Sicherheit der Betriebssystemabhängigkeiten – Scannen von Container-Images auf bekannte Schwachstellen, um sicherzustellen, dass die Pakete und Abhängigkeiten keine Sicherheitslücken enthalten
- Cluster-Sicherheit
- Kubernetes führt Anwendungen in Maschinengruppen (Knoten) aus, die als Cluster bezeichnet werden. Produktionsfähige Clusterknoten befinden sich oft in mehreren Umgebungen, manchmal in einer Mischung aus Cloud- und lokalen Bereitstellungen. In solchen verteilten Instanzen bleibt die Sicherung eines Clusters eine komplexe Angelegenheit, da sie auf der umfassenden Sicherheit der Clusterdienste, Netzwerke und Komponenten beruht.
- Zu den Überlegungen zur Clustersicherheit gehören:
- API-Sicherheit – Sichern des Zugriffs auf API-gesteuerte Kommunikation durch robuste Authentifizierung und rollenbasierte Zugriffskontrollen
- Geheimnisverwaltung – Erstellung von Geheimnissen unabhängig von den Pods, die sie nutzen, Speicherung in etcd und Durchsetzung der Verschlüsselung im Ruhezustand
- Steuerung der Workload-Kapazitäten zur Laufzeit – Verwendung von Richtlinien, Ressourcenkontingenten und Grenzwertbereichen zur Steuerung der Aktionen von Objekten innerhalb des Clusters
- Cloud-Sicherheit
- Dies bezieht sich auf die Sicherung der zugrunde liegenden Infrastruktur, die Kubernetes Clusters hostet. Obwohl die Cloud-Sicherheit teilweise vom Betreiber der Plattform übernommen wird, liegt es in der Verantwortung der Cluster-Administratoren, die jeweilige Plattformdokumentation zu konsultieren, um die Plattform hinsichtlich der Einhaltung gesetzlicher Vorschriften, bewährter Sicherheitsmethoden und automatisierter Bedrohungsabwehr zu konfigurieren.
- Best Practices der jeweiligen Cluster-Sicherheitsdokumentation finden Sie auch hier:
Cloud-Anbieter | Sicherheitsdokumentation |
Amazon Web Services | https://aws.amazon.com/security/ |
Google Cloud Platform | https://cloud.google.com/security/ |
IBM Cloud | https://www.ibm.com/cloud/security |
Microsoft Azure | https://docs.microsoft.com/en-us/azure/security/azure-security |
VMWare VSphere | https://www.vmware.com/security/hardening-guides.html |
So verwaltet Kubernetes die Clustersicherheit
Die Verwaltung der Clustersicherheit ist ein gemeinschaftliches Unterfangen, das auf geteilten Verantwortlichkeiten zwischen Entwicklern, Clusteradministratoren und Sicherheitsteams beruht. Kubernetes bietet außerdem mehrere integrierte Funktionen zur Vereinfachung der Workload-Sicherung. Dazu gehören:
Netzwerkrichtlinien
schützen den Clusterzugriff, indem sie Verkehrsregeln zwischen Clusterendpunkten und Pods definieren und durchsetzen. Diese Richtlinien legen fest, welche benannten Ports, Portnummern oder Protokolle zur Steuerung des Datenverkehrs verwendet werden können. Sie werden typischerweise mithilfe von Labels und Selektoren auf Pods angewendet.
Kubernetes-Geheimnisse
: Geheimnisse speichern Base64-Kodierungen sensibler Daten wie Passwörter, Token und Verschlüsselungsschlüssel, die in Container eingefügt werden können, ohne in Pod-Spezifikationen offengelegt zu werden. Kubernetes-Dienstkonten vereinfachen zudem die Zugriffsverwaltung, indem sie automatisch geheime Werte generieren, die für den sicheren Zugriff auf die Kubernetes-API verwendet werden.
Rollenbasierte Zugriffskontrollen (RBAC):
Durch RoleBinding zur Einschränkung von Berechtigungen innerhalb eines Namespaces und ClusterRoleBinding zur Definition von Zugriffsrechten für den gesamten Cluster bietet Kubernetes ein integriertes RBAC-Framework zur Definition von Sicherheitsberechtigungen auf Ressourcenebene. Rollenbasierte Zugriffskontrollen stellen sicher, dass Container und Clusterbenutzer nur auf die Ressourcen zugreifen können, die sie für ihre jeweiligen Funktionen benötigen.
API-Authentifizierung:
Um HTTP-Anfragen an den API-Server dem angefragten Ursprung zuzuordnen, unterstützt Kubernetes verschiedene Authentifizierungsmechanismen wie ABAC, RBAC und Webhooks. Der Authentifizierungsprozess wird typischerweise durch die Identifizierung der Anfragequelle anhand von Attributen wie Benutzername, Benutzer-ID (UID) und Benutzergruppen eingeleitet. Sobald die Quelle (Benutzerkonto oder Dienstkonto) identifiziert ist, verwendet Kubernetes Authentifizierungsproxys, Bearer-Token oder Client-Zertifikate, um dem anfordernden Dienst den Zugriff auf den API-Server zu ermöglichen.
TLS-basierter Ingress.
Der gesamte Datenverkehr eines Clusters wird standardmäßig mit einem TLS-Protokoll verschlüsselt. Das Kubernetes-Ingress-Objekt ermöglicht die Erstellung und Verteilung von TLS-Zertifikaten an alle Clusterressourcen. Der Ingress-Controller definiert außerdem HTTP(S)-Regeln, um den externen Zugriff auf Dienste sicher zu ermöglichen.
Herausforderungen bei der Sicherung von Kubernetes Clusters in der Cloud
Neben den unterschiedlichen Ansätzen zur Bereitstellung von Kubernetes Clusters können Unternehmen verschiedene Optionen zur Konfiguration der Komponentenparameter einer Bereitstellung wählen. In diesen Fällen ist die Umsetzung einer einheitlichen Sicherheitsrichtlinie für verschiedene Bereitstellungsvarianten meist unvollkommen. Darüber hinaus gibt es verschiedene Herausforderungen bei der Bereitstellung sicherer Cluster in der Cloud.
Unsichere Bilder und Bildregister
Images sind die Bausteine von Containern in einem Cloud-nativen Ökosystem. Obwohl das Herunterladen von Images aus öffentlichen Repositories ein beliebter Ansatz für eine schnelle Bereitstellung ist, stellt die Identifizierung von Schwachstellen und Konfigurationskonflikten innerhalb des Clusters eine häufige Herausforderung dar. Andererseits erhöht die Definition von Governance-Richtlinien für die Auswahl ausschließlich vertrauenswürdiger Register für sichere Images den Aufwand, da sie eine kontinuierliche Berücksichtigung der sich verändernden Bedrohungslandschaft und funktionsübergreifende Zusammenarbeit erfordert.
Mangelnde Sicherheitstransparenz
Die Sicherung einer Umgebung hängt maßgeblich von der konsolidierten Cluster-Beobachtbarkeit ab. Da Kubernetes Clusters typischerweise zahlreiche Container umfassen, die auf verschiedenen, hochverteilten Knoten geplant sind, ist die Gewährleistung einer umfassenden Transparenz eine universelle Herausforderung. Dies erschwert die Echtzeitverfolgung, -überwachung und -verwaltung von Workloads. Cluster in einer hybriden Umgebung nutzen unterschiedliche Beobachtungstools, was die Implementierung einer einheitlichen Überwachungs- und Protokollierungsplattform zusätzlich erschwert.
Compliance-Probleme
Da Kubernetes die Bereitstellung von Compliance-Standards nicht standardmäßig unterstützt, erhöht die Implementierung von Compliance-Kontrollen die Komplexität des Cluster-Managements zusätzlich. In den meisten Fällen erfordert die Einhaltung der Compliance die Übernahme sich ständig ändernder Branchenstandards, Sicherheitsbenchmarks und Richtlinien zur Datenaufbewahrung. Die Einhaltung gesetzlicher Vorschriften und Audits basiert zudem auf Protokollierung auf Komponentenebene und kontinuierlicher Überwachung, um Compliance-Prüfungen und die automatisierte Richtliniendurchsetzung zu unterstützen.
Unsichere Standardkontrollen
Kubernetes implementiert zwar verschiedene Funktionen zur Beschleunigung der Anwendungsbereitstellung, bietet jedoch standardmäßig keine sicheren Konfigurationen. Beispielsweise integriert Kubernetes keine standardmäßigen Netzwerkrichtlinien in Pods, was bedeutet, dass es zum Zeitpunkt der Bereitstellung keine Kommunikationsbeschränkungen zwischen Containern gibt. Aufgrund der unsicheren Standardeinstellungen und der zu freizügigen Konfigurationseinstellungen von Kubernetes müssen Cluster-Administratoren vor der Bereitstellung von Clustern in der Cloud eine gründliche Analyse der Konfigurationsfehler und inhärenten Schwachstellen durchführen.
Unsichere Daten im Ruhezustand
Kubernetes bietet keine nativen Funktionen zum Schutz von Daten im Ruhezustand oder während der Übertragung. Daher bleiben sensible Daten angreifbar, falls der Cluster bei einem Cyberangriff kompromittiert wird. Obwohl die Verschlüsselung von Daten als typische Lösung zur Verhinderung bösartiger Angriffe empfohlen wird, erfordern die Ansätze zur Verwaltung der Verschlüsselung oft komplexe Analysen und sind aufwändig. Die Sicherung persistenter Kubernetes-Volumes erfordert zudem wichtige Überlegungen zur Datenreplikation und -wiederherstellung, um sicherzustellen, dass Knotenausfälle nicht zu dauerhaftem Datenverlust führen.
Best Practices zum Sichern von Kubernetes Clusters in der Cloud
Ein Kubernetes-Ökosystem erfordert besondere Überlegungen, Tools und Best Practices für eine umfassende Sicherheitskonfiguration und -verwaltung.
Verwenden eines VPN zum Sichern Cloud-basierter Knoten
Es wird empfohlen, Cloud-basierte Clusterknoten in privaten Netzwerken zu betreiben und den offenen Zugriff auf das Internet zu beschränken. Dies kann durch die Verwendung eines virtuellen privaten Netzwerks (VPN) erreicht werden, das Clusterressourcen isoliert, indem der Secure Shell (SSH)-Zugriff auf Knoten eingeschränkt wird. Dadurch wird die Wahrscheinlichkeit verringert, dass externe Entitäten auf isolierte Clusterressourcen zugreifen.
Überwachen Sie den Netzwerkverkehr, um die Transparenz zu gewährleisten
Kubernetes-Workloads kommunizieren kontinuierlich und nutzen Clusternetzwerke intensiv. Die Überwachung des Netzwerkverkehrs und der Abgleich mit den geltenden Netzwerkrichtlinien helfen Clusteradministratoren, schädliche Aktivitäten zu erkennen. Netzwerkrichtlinien erzwingen außerdem die Bereitstellung einer Netzwerksegmentierung, um den Standardzugriff auf Knotenports und Container einzuschränken. Dadurch wird sichergestellt, dass ein kompromittierter Workload die Sicherheit benachbarter Workloads nicht beeinträchtigt.
Erzwingen Sie die Überwachungsprotokollierung für den gesamten Clusterverkehr
Es wird empfohlen, die Audit-Protokollierung für alle Cluster-Ereignisse zu aktivieren, um unerwünschte Anfragen an die API, insbesondere Zugriffsfehler, zu identifizieren. Bei der Dateiübergabe an den API-Server kann dies durch die Definition der zu protokollierenden Ereignisse mit dem Flag -audit-policy-file erreicht werden . Audit-Protokolleinträge helfen dabei, alle Fälle von verbotenem Datenverkehr zu identifizieren und diese mit weiteren Zugriffen auf Cluster-Ressourcen zu korrelieren. Obwohl die Protokollierung hauptsächlich einem reaktiven Ansatz zur Eindämmung von Echtzeitbedrohungen dient, unterstützen archivierte Protokolle eine umfassende Bedrohungsmodellierung und die Einhaltung gesetzlicher Vorschriften.
Sicherer Zugriff auf den Kubelet-Dienst
Jeder Knoten wird von einem Kubelet-Dienst unterstützt, der eine API bereitstellt, um unter anderem das Starten von Pods, Pod-Neustarts und die Metrikberichterstattung zu ermöglichen. Ist die API kompromittiert, können Hacker Schadcode im Cluster ausführen und so das gesamte Bereitstellungsframework kompromittieren. Um zu verhindern, dass der Kubelet-Dienst ausgenutzt wird, verwenden Sie Konfigurationen, die den Kubelet vor Angriffen schützen. Zu diesen Konfigurationen gehören beispielsweise:
- Anonymen Zugriff deaktivieren
- Erzwingen von Knotenbeschränkungen auf dem API-Server, um Kubelet-Berechtigungen einzuschränken
- Schließen aller schreibgeschützten Ports
- Deaktivieren von cAdvisor, um die unnötige Offenlegung von Informationen über Knoten zu vermeiden
Verwenden Sie Ressourcenkontingente und Grenzwertbereiche, um Containerberechtigungen zu steuern
Ressourcenkontingente und -limits dienen als Einschränkungen, um den durchschnittlichen Ressourcenverbrauch pro Container, Pod oder Namespace zu begrenzen. Mit diesen Limits können Kubernetes-Administratoren die Anzahl der von einem Prozess verbrauchten Ressourcen begrenzen und so das Risiko eines Denial-of-Service-Angriffs (DoS) eliminieren, der auftritt, wenn ein einzelner Container anderen Workloads den Zugriff auf benötigte Ressourcen verweigert.
Konfigurieren von Namespaces und Netzwerkrichtlinien zur Ressourcenisolierung
Namespaces ermöglichen eine logische Partitionierung, die es verschiedenen Einheiten ermöglicht, unabhängig voneinander über eine gemeinsame Cluster-Infrastruktur zu arbeiten. Um eine sichere Isolation zu gewährleisten, werden Namespaces empfohlen, um Clusterressourcen mit definierten Grenzwerten, Kontingenten und Verbindungsrichtlinien für Pods innerhalb jedes Namespaces zu segmentieren.
Verstärken Sie Richtlinien mit Zulassungscontrollern
Zulassungscontroller sind Kubernetes-Plugins, die als Gatekeeper fungieren, um eingehende Anfragen abzufangen und sie an Authentifizierungsanforderungen anzupassen oder abzulehnen. Zulassungscontroller erhöhen die Clustersicherheit, indem sie eine Sicherheitsbasis für den gesamten Cluster definieren und verstärken. Pod-Zulassungscontroller werden empfohlen, um die Ausführung privilegierter Container einzuschränken und sichere Zugriffsmodi für das Dateisystem zu definieren.
Verwenden Sie ein Drittanbietertool, um den Cluster zu sichern
Die manuelle Bewertung und Verwaltung von Sicherheitskontrollen in einem verteilten Kubernetes-Ökosystem ist in der Regel nicht möglich. Um den Betriebsaufwand zu reduzieren, sollten Clusteradministratoren Tools von Drittanbietern einsetzen, die das automatisierte Scannen von Clusterdiensten auf Schwachstellen unterstützen. Diese Tools unterstützen verschiedene Sicherheitsmaßnahmen, darunter:
- Implementierung robuster Authentifizierungskontrollen
- Einhaltung von Sicherheitsrahmen
- Whitelisting/Blacklisting verarbeiten
- Identifizieren exponierter Dienste
- Automatisierte Einschränkung böswilliger Anfragen
Persistente Volumes verschlüsseln
Das Binden von Containern mit Kubernetes PVCs anstelle von PVs ermöglicht es Benutzern nicht nur, gespeicherte Daten über mehrere Cluster hinweg anzufordern, sondern verhindert auch Datenverluste durch Volume-Bindungsfehler. Speichervolumes sollten zudem verschlüsselt und zugriffskontrolliert sein, um Angreifern den Zugriff auf sensible Daten im Ruhezustand zu verwehren. Es wird außerdem empfohlen, Netzwerksegmentierungsrichtlinien zu implementieren, die die Standard-Pod-Kommunikation außer Kraft setzen, um den Explosionsradius eines erfolgreichen Angriffs zu minimieren und die Datenexfiltration aus miteinander verbundenen Pods zu begrenzen.
Mehr lesen: Lassen Sie uns einen Blick auf Emma Watsons Dating-Geschichte werfen
Abschluss
Kubernetes ist aufgrund seiner Flexibilität und Skalierbarkeit weiterhin der Standard-Container-Orchestrator für die Bereitstellung und Orchestrierung containerisierter Anwendungen. Die Plattform bietet zwar integrierte Dienste zur Sicherheitsverwaltung, die Absicherung cloudbasierter Cluster ist jedoch ein komplexes Unterfangen.
Die Sicherung eines Kubernetes-Ökosystems beginnt meist mit einer sorgfältigen Analyse von Architekturfehlern und Plattformabhängigkeiten, der Gewährleistung der Pipeline-Integrität und der uneingeschränkten Verfügbarkeit der Kerndienste. Über die anfängliche Bewertung hinaus ist ein robuster Laufzeitschutz weiterhin von der gemeinsamen Einführung von Best Practices, Tools und Sicherheitskontrollen abhängig.
NetApp BlueXP Cloud Volumes ONTAP ist eine cloudbasierte Datenmanagementplattform, die Anwendern die Verwaltung persistenten Speichers ermöglicht und gleichzeitig die komplexen Anforderungen an Datensicherheit und -schutz auf Hypervisor-Ebene berücksichtigt. Die Plattform bietet zahlreiche Funktionen, darunter die Erstellung und Verwaltung von Volumes, Snapshots und Klonen sowie Unterstützung für Datenverschlüsselung, Deduplizierung und Komprimierung.
Erfahren Sie mehr über den Datenschutz für persistenten Speicher in Kubernetes-Workloads mit Cloud Volumes ONTAP und lesen Sie hier über unsere Erfolgsgeschichten zu Cloud Volumes ONTAP mit Kubernetes .