Bildung
Kubernetes
Überprüfung der Einhaltung der Sicherheitsvorschriften
In diesem Artikel:

In diesem Artikel wird die neue Automatisierungsintelligenz von Runecast Analyzer für Kubernetes vorgestellt:

  • Was ist Kubernetes (auch bekannt als K8s)?
  • Warum ist sie so beliebt?
  • K8s Bewährte Verfahren für Betrieb und Sicherheit
  • Wie man die Herausforderungen von Kubernetes meistert

Die neueste Erweiterung von Runecast Analyzer (Version 4.5) dehnt unsere aktuellen Best Practices und Sicherheitsprüfungen für VMware und AWS auf einen neuen Bereich aus: Kubernetes (K8s)-Infrastruktur.

Obwohl dieser neue Evolutionsschritt in der Virtualisierungsbranche erhebliche Vorteile bietet, ist Kubernetes natürlich unsicher und erfordert eine sorgfältige Abstimmung, um die Cluster-Ressourcen und Workloads zu sichern. Daher war es unser erster Gedanke, automatische Prüfungen für Kubernetes-Best-Practices und CIS-Sicherheitsstandards in Runecast Analyzer hinzuzufügen.

Kein Systemadministrator wurde mit der Kubernetes-Erfahrung geboren, daher sind wir froh, dass wir dabei helfen können, diese Herausforderungen auf automatisierte Weise zu bewältigen und den Kubernetes-Cluster so zu härten, dass er in der Produktion eingesetzt werden kann.

Was ist Kubernetes (auch bekannt als K8s)?

Die einfache Definition, wie sie auf der Website Kubernetes.io definiert ist:

"Kubernetes ist eine portable, erweiterbare Open-Source-Plattform für die Verwaltung von Container-Workloads und -Diensten, die sowohl eine deklarative Konfiguration als auch eine Automatisierung ermöglicht. Sie hat ein großes, schnell wachsendes Ökosystem. Kubernetes-Dienste, -Support und -Tools sind weithin verfügbar.
Der Name Kubernetes stammt aus dem Griechischen und bedeutet Steuermann oder Lotse. Google hat das Kubernetes-Projekt im Jahr 2014 als Open-Source-Projekt veröffentlicht. Kubernetes kombiniert die über 15-jährige Erfahrung von Google beim Betrieb von Produktions-Workloads in großem Maßstab mit den besten Ideen und Praktiken der Community. 

Google hat eine lange Tradition im Umgang mit Containern. Haben Sie schon einmal in GMail versucht, eine Nachricht zu öffnen, aber Sie müssen die Seite aktualisieren, um sie zu öffnen? Das ist ein neuer Container, der sich dreht, um Ihre Arbeitslast zu bewältigen. Google hat bereits 2003/2004 ein Cluster-Managementsystem namens Borg entwickelt, mit dem die maximale Auslastung der von Google betriebenen Server erreicht werden konnte. Auf dieser Engine lief schließlich die Google Cloud Platform, und als Google dann sein IaaS-Angebot Google Compute Engine auf den Markt brachte, stellte es fest, dass die Kunden viele VMs mit sehr niedrigen Auslastungsraten betrieben.

Was wäre, wenn sie das, was sie mit Borg gelernt haben, nutzen könnten, um den Kunden einen ähnlichen Dienst anzubieten? Docker gab es zu diesem Zeitpunkt bereits, aber es hatte kein kohärentes Verwaltungssystem. Aus dieser Idee wurde das Projekt 7 geboren. Wenn Sie herausfinden, dass dies eine Anspielung auf Seven of Nine war, wird Ihnen klar, dass bei Google einige eingefleischte Star Trek-Fans arbeiten. Sie nahmen all ihre Bemühungen und Erkenntnisse aus der Entwicklung von Borg und seinem Nachfolger Omega, gaben ihm eine einfach zu bedienende Benutzeroberfläche und hatten einen Prototyp, den sie bereit waren zu teilen. Dieser Prototyp wurde unter dem Namen Kubernetes als Open Source veröffentlicht. Wenn Sie sich das Kubernetes-Logo ansehen, werden Sie feststellen, dass das Rad sieben Seiten hat, eine Anspielung auf seine Ursprünge im Projekt 7. (Quelle: https://cloud.google.com/blog/products/gcp/from-google-to-the-world-the-kubernetes-origin-story)

Warum ist Kubernetes so beliebt?

Während es zahlreiche Projekte gab, die auf die Orchestrierung von Containern abzielten (Docker Swarm und Apache Mesos waren beide frühe Vorreiter), hat sich die Branche seit langem auf Kubernetes festgelegt. Es ist der führende Open-Source-Orchestrator für die Ausführung und Skalierung von Container-basierten Arbeitslasten.

Sie eignet sich perfekt für skalierbare Cloud-native Anwendungsumgebungen und die Verwaltung von Container-basierten Workloads, egal wo sie ausgeführt werden.

Auch dies wird in Kubernetes recht gut erklärt:

Die Bereitstellung von Containern wurde aufgrund ihrer Agilität und der klaren Ressourcenisolierung und -nutzung populär. Container sind ähnlich wie virtuelle Maschinen (VMs), aber sie haben entspannte Isolationseigenschaften, um das Betriebssystem unter den Anwendungen zu teilen. Daher gelten Container als leichtgewichtig. Ähnlich wie VMs hat ein Container sein eigenes Dateisystem, seine eigene CPU, seinen eigenen Speicher, seinen eigenen Prozessraum usw. Und da sie von der zugrundeliegenden Infrastruktur entkoppelt sind, sind sie über Clouds hinweg portabel.

Einige zusätzliche Vorteile, die Container bieten:

  • Agile Anwendungsentwicklung und -bereitstellung
  • Trennung von Entwicklung und Ops
  • Konsistenz der Umgebung in Entwicklung, Test und Produktion: Läuft auf einem Laptop genauso wie in der Cloud
  • Übertragbarkeit von Cloud- und Betriebssystemen
  • Ressourcenisolierung: vorhersehbare Anwendungsleistung
  • Ressourcennutzung: hohe Effizienz und Dichte
  • Ermöglicht die Verwendung von Kubernetes RBAC mit dem Least Privilege-Konzept
  • Und vieles mehr...

Kubernetes-Betrieb & Sicherheit Best Practices

Für Hacker ist es relativ einfach, Kubernetes-Cluster zu identifizieren und zu nutzen, indem sie bestimmte Ports beobachten und auf einen unsicheren Kubernetes-API-Dienst stoßen.

Schwachstellen in der Kubelet-API (die von Kubernetes verwendet wird) oder im kube-apiserver könnten es Hackern sogar ermöglichen, Code in Ihren Containern auszuführen, was zu einem gefährdeten Cluster führen kann. (Siehe zum Beispiel https://github.com/kayrus/kubelet-exploit oder https://nvd.nist.gov/vuln/detail/CVE-2019-11253)

Laut Online-Quellen sind dies einige der häufigsten Kubernetes-Empfehlungen, die IT-Administratoren befolgen sollten:

  1. Minimale Basisbilder verwenden
  2. Fügen Sie keine unnötigen Komponenten hinzu
  3. Nur aktuelle Bilder verwenden
  4. Verwenden Sie einen Image Scanner, um bekannte Schwachstellen zu identifizieren.
  5. Integrieren Sie Sicherheit in Ihre CI/CD-Pipeline
  6. Kennzeichnung nicht behebbarer Schwachstellen
  7. Implementierung von Tiefenverteidigung
  8. Verwendung von Namespaces zur Isolierung sensibler Workloads
  9. Verwendung von Kubernetes-Netzwerkrichtlinien zur Kontrolle des Datenverkehrs zwischen Pods und Clustern
  10. Verhinderung eines allzu freizügigen Zugangs zu Geheimnissen
  11. Nicht zulassen:
  • Root-Benutzer
  • Privilegierte Container
  • Hinzufügen neuer Fähigkeiten
  • Änderungen an den Kernel-Parametern
  • Verwendung von Bind-Mounts (hostPath-Volumes)
  • Zugriff auf den Docker-Socket bind mount
  • Nutzung des Hostnetzes und der Ports

12. Erfordern:

  • Root-Dateisystem mit Lesezugriff
  • Pod-Ressourcenanforderungen und -begrenzungen
  • LivenessProbe und readinessProbe

Und die Liste wird immer länger, immer komplexer - und damit für IT-Administratoren schwierig (wenn nicht gar unmöglich), proaktiv den Überblick zu behalten.

Selbst mit Experten an der Hand und nach erfolgreicher Härtung einer Kubernetes-Umgebung für den Produktionseinsatz besteht die größere Herausforderung in der Aufrechterhaltung einer sicheren Umgebung im Laufe der Zeit. Dafür gibt es die folgenden Gründe:

  1. Die Zahl der zu befolgenden bewährten Sicherheitsverfahren ist bereits beträchtlich und nimmt ständig zu. Daher wird eine manuelle Bewertung schnell unwirtschaftlich, selbst für kleinere Umgebungen. 
  2. Die anwendbaren Best Practices für die Sicherheit ändern sich schnell, da sich die Landschaft der Schwachstellen für das gesamte System ständig ändert, und zwar aus folgenden Gründen 
  • Änderungen an der Konfiguration des Kubernetes-Clusters 
  • Änderungen in Kubernetes selbst (Behebung und Einführung von Fehlern und Sicherheitslücken)
  • Entdeckung neuer Schwachstellen in verschiedenen Aspekten der Umwelt

Kubernetes-Sicherheitsmodell: "Die 4 Cs der Cloud Native Security"

Das 4C-Modell der Cloud-Native-Sicherheit von Kubernetes besagt, dass "jede Schicht des Cloud-Native-Sicherheitsmodells auf der nächsthöheren Schicht aufbaut. Die Code-Schicht profitiert von starken Basis-Sicherheitsschichten (Cloud, Cluster, Container). Man kann sich nicht gegen mangelhafte Sicherheitsstandards in den Basisschichten absichern, indem man die Sicherheit auf der Code-Ebene behandelt.

Quelle: https://kubernetes.io/docs/concepts/security/overview/

Runecast Analyzer unterstützt Sie bei den Sicherheits- und Best-Practice-Prüfungen auf Cloud- und Cluster-Ebene (sowohl Komponenten als auch Anwendungen), um Ihre Umgebung jederzeit sicher und revisionssicher zu halten.

Wie man die Herausforderungen von Kubernetes meistert

Die unterschiedlichen Sicherheitsaspekte auf Knoten-, Cluster- und Workload-Ebene in einer containerisierten Umgebung schließen herkömmliche Sicherheitsmetriken aus.

Andere Sicherheitsprobleme sind: 

  • Teams über mehrere Standorte und Regionen verteilt
  • Unterschiedliche Infrastrukturen, kein einheitlicher Ansatz für alle
  • Container sind nur ein Aspekt des Infrastrukturbetriebs
  • Unternehmensspezifische Sicherheitsanforderungen (zusätzlich zu den Industriestandards)

Die Einhaltung verschiedener Sicherheitsstandards ist für die meisten Unternehmen nach wie vor von entscheidender Bedeutung, insbesondere bei der Umstellung auf containerisierte Umgebungen.

Auditoren werden noch sorgfältiger und vorsichtiger sein, wenn sie mit containerisierten Umgebungen zu tun haben, und daher wird die Verwendung vertrauenswürdiger Tools noch mehr zu einem Muss, wenn es um die Vorbereitung von Audits geht.
Bedenken Sie auch, dass sich die Dinge als (extrem) aktiv entwickeltes Open-Source-Softwareprojekt in einem ständigen Wandel befinden. Was heute eine bewährte Praxis ist, kann im nächsten Monat eine schreckliche Idee sein. Daher ist es wichtig, den Zustand der Umgebung im Laufe der Zeit zu sehen und zu erkennen, wann man von diesen bewährten Praktiken abweicht.

Der Übergang einer Kubernetes-Umgebung von einem Entwicklungs- zu einem Produktionszustand ist ohne die Hilfe erfahrener Kubernetes-Experten kaum möglich. Und seien wir mal ehrlich, niemand hat "12+ Jahre Erfahrung mit Kubernetes" zu diesem Zeitpunkt.

Quelle: https://www.reddit.com/r/mildlyinfuriating/comments/hm4u15/requirement_for_a_job/

Runecast Analyzer bietet eine automatisierte Kubernetes-Konfigurationsanalyse auf Knoten-, Cluster- und Workload-Ebene und deckt die gängigen Best Practices für den Cluster-Betrieb und die Sicherheit von Kubernetes sowie den CIS-Benchmark für Kubernetes (Sicherheitsstandard) ab.

Team Runecast

Daher kann Ihre Team von automatisierten Überprüfungen der Einhaltung von Best Practices und Sicherheitsstandards profitieren, ohne reaktive und zeitaufwändige manuelle Bemühungen (die nicht einmal unbedingt effektiv sind).

Runecast wird die Anzahl der Compliance-Standards für Kubernetes kontinuierlich erhöhen, da die Containerisierung von Teilen der Infrastruktur in den kommenden Jahren zu einem der wichtigsten Faktoren für Kosteneinsparungen und Reaktionsfähigkeit werden wird.

Mit der Version 4.5 von Runecast Analyzer haben wir auch neue benutzerdefinierte Profile eingeführt - mehr über diese Funktion erfahren Sie hier.

Lassen Sie Runecast Analyzer Ihre Kubernetes-Erfahrung entmystifizieren, indem er Ihnen bei der operativen Transparenz hilft. Sie können die neuen Funktionen in unserer Online-Demooder in Ihrer Umgebung im Rahmen der 14-tägigen kostenlosen Trial. Im Moment funktioniert die Lizenzierung für Kubernetes Insights genauso wie für den normalen Runecast Analyzer Lizenzierung & Preisgestaltung (kann zu einem späteren Zeitpunkt geändert werden).

Treffen Sie hier andere Runecaster:

Registrieren Sie sich für das Kubernetes-Webinar

Wie lassen sich die Herausforderungen von Kubernetes meistern? Erfahren Sie, wie Sie Analysen für Kubernetes Best Practices und Sicherheit automatisieren können. Besuchen Sie uns am Dienstag, den 13. Oktober 2020.

Jetzt anmelden