Die häufigsten Kubernetes-Sicherheitsprobleme und wie Sie sie mindern können

Veröffentlicht: 2021-03-30

Kubernetes und Container versprechen drei Dinge:

  • Schnellere Anwendungsentwicklung und -freigabe.
  • Schnellere Fehlerbehebungen.
  • Erhöhte Feature-Geschwindigkeit.

Dies geht jedoch oft auf Kosten einer kompromittierten Sicherheit, und das ist in keiner Webentwicklungstechnologie akzeptabel.

Um den Stand der Kubernetes-Sicherheit zu erkennen, hier zwei Faktoren aus einer Ende 2020 von StackRox durchgeführten Umfrage:

  • 90 % der Umfrageteilnehmer gaben an, in den letzten 12 Monaten einen Sicherheitsvorfall im Zusammenhang mit Containern und Kubernetes erlebt zu haben.
  • 44 % der Teilnehmer mussten ihre Anwendungsfreigabe aufgrund von Sicherheitsbedenken in Bezug auf Kubernetes verschieben.

Was sind die häufigsten Gründe für diese Sicherheitsbedenken?

Die häufigsten Sicherheitsprobleme im Zusammenhang mit Kubernetes
1. Fehlkonfigurationen

Umfragen haben ergeben, dass Gefährdungen durch Fehlkonfigurationen das häufigste Risiko für die Sicherheit von Container- und Kubernetes-Umgebungen sind.

Bei der Verwendung von Kubernetes zur Erstellung containerisierter Apps ist das Konfigurationsmanagement das größte Risiko für Sicherheitsexperten.

Dies liegt vor allem daran, dass der Markt voll von Vulnerability-Scanning-Tools ist, das Konfigurationsmanagement jedoch immer noch weitgehend auf menschliche Überlegungen angewiesen ist.

Im Folgenden finden Sie einige Ratschläge zum Konfigurieren einiger gängiger Komponenten einer containerisierten App, um sicherzustellen, dass die Sicherheit nicht beeinträchtigt wird.

Bilder:

Vermeiden Sie die Verwendung von Software, die nicht unbedingt erforderlich ist. Dazu gehören Paketmanager, Netzwerktools und Clients wie Curl oder Unix-Shells.

Denken Sie daran, dass die Verwendung jeglicher Software das Sicherheitsrisiko erhöht. Verwenden Sie außerdem nur Bilder aus vertrauenswürdigen Quellen.

Geheimnisse:

Vermeiden Sie es, Geheimnisse in die Bilder einzubacken oder sie anderweitig unnötig preiszugeben.

Verwenden Sie als sichere Methode vertrauenswürdige Secret-Management-Tools, um sicherzustellen, dass die Bereitstellungen die Secrets nur bereitstellen, wenn und wenn sie benötigt werden.

Namensräume:

Verwenden Sie Namensräume großzügig. Sie fungieren als Grenze für Kubernetes und Netzwerkrichtlinien. Die Verwendung von Namensräumen kann die Auswirkungen eines Angriffs begrenzen und Fehler und Angriffe eindämmen, damit sie sich nicht ausbreiten und noch mehr Zerstörung anrichten können.

Laufzeitberechtigungen:

Es gibt nur eine Regel für Privilegien: Lassen Sie die geringste Anzahl von ihnen zu, um die Software so sicher wie möglich zu machen.

Netzwerkrichtlinien

Gemäß den Standardeinstellungen können Pods in Kubernetes unabhängig voneinander miteinander sprechen. Es empfiehlt sich jedoch, Netzwerkrichtlinien zu implementieren, um die Interaktion von Pods einzuschränken. Dadurch kann verhindert werden, dass sich eine Bedrohung über den Container und die gesamte App ausbreitet.

Dauerspeicher

Sie müssen einen angemessenen Einblick in die Konfiguration und Verwendung von persistentem Speicher haben. Dies liegt daran, dass dies der einzige persistente Vektor in einem ansonsten kurzlebigen Container-Setup ist.

Kontrollebene

Wenn Sie die Kubernetes-Cluster selbst verwalten, ist es sehr wichtig, die Steuerungsebene zu konfigurieren. Dies liegt daran, dass einige Cluster globale Entscheidungen treffen können und wenn ein Cluster infiziert ist, kann dies das gesamte Ökosystem gefährden.

Der beste Ansatz, um diese und verschiedene andere konfigurationsbezogene Sicherheitsprobleme zu mindern, besteht darin, eine Kombination aus manuellen und automatisierten Maßnahmen zu verwenden, um sicherzustellen, dass die Konfiguration so erfolgt, dass die Sicherheit von Kubernetes und folglich der Software, zu der sie gehören, gewährleistet ist von.

2. Schwachstellen

In den letzten Jahren wurden in Kubernetes und anderen Containern eine Reihe verschiedener Schwachstellen gefunden und ausgenutzt.

Zu den häufigsten Exploits von Sicherheitslücken gehören:

  • Krypto-Mining.
  • Malware-Installation.
  • Privilegieneskalation.
  • Host-Zugriff.

Der effektive Ansatz zur Verwaltung von Schwachstellen muss über den gesamten Lebenszyklus des Containers fortgeführt werden und sollte Folgendes beinhalten:

  • Identifizieren und Beheben von Schwachstellen in Images, einschließlich derer im installierten Betriebssystem.
  • Erkennen und Beheben aller Schwachstellen in den Laufzeitbibliotheken der von Ihnen verwendeten Programmiersprachen.
  • Maßnahmen ergreifen, um zu verhindern, dass Images mit riskanten Schwachstellen in die für die Produktion zugängliche Containerregistrierung gelangen.
  • Ergreifen von Maßnahmen zur Eindämmung von Bedrohungen mit einem Sicherheitsrisiko über einem bestimmten Grad.
  • Verwendung von Zugangscontrollern von Drittanbietern in Kubernetes-Clustern, um zu verhindern, dass anfällige Containerkomponenten geplant werden.
3. Laufzeitbedrohungen

Sobald Sie alle Probleme in der Kubernetes-Sicherheit gemindert haben, hat die Laufzeitphase ihre eigenen einzigartigen Sicherheitsbedrohungen.

Selbst wenn Sie die Sicherheit betont und die Risiken auf jede erdenkliche Weise minimiert haben, kann es zur Laufzeit verschiedene Bedrohungen durch Angreifer geben.

Hier sind einige Dinge, die Sie tun können, um diese Bedrohungen zu mindern:

Überwachung der Laufzeitaktivität:

Beginnen Sie den Überwachungsprozess mit den meisten Containeraktivitäten, die für die Sicherheit am relevantesten sind. Dazu gehören Prozessaktivitäten, Netzwerkkommunikation innerhalb und zwischen containerisierten Diensten sowie die Kommunikation zu und von externen Servern und Clients.

Nutzen Sie die deklarativen Daten

Nutzen Sie die Informationen zur Build- und Bereitstellungszeit, um den Unterschied zwischen der beobachteten und der erwarteten Aktivität auszuwerten, um festzustellen, ob verdächtige Aktivitäten vorliegen.

Beschränken Sie die Netzwerkkommunikation

Die Laufzeit ist die Zeit, in der Sie den Unterschied zwischen der Art des zulässigen Netzwerkverkehrs und dem für den Betrieb des Systems erforderlichen Netzwerkverkehr erkennen können. Dies ist die Gelegenheit, die genutzt werden kann, um unnötige Kommunikation zu entfernen, die eine Bedrohung für die Sicherheit von Kubernetes darstellen könnte.

Beobachten Sie die Prozesse genau

Beobachten Sie die Anwendung für einen bestimmten Zeitraum, um alle Prozesse zu kennen, die für das ordnungsgemäße Funktionieren der Anwendung ausgeführt werden. Erstellen Sie eine Liste aller wesentlichen Prozesse und überprüfen Sie die Anwendung stichprobenartig, um festzustellen, ob ein Prozess ausgeführt wird, der nicht der übliche ist.

4. Nicht bestandenes Compliance-Audit

Eines der wichtigsten Dinge, die die Sicherheit von Kubernetes und Containern gewährleisten, ist Compliance. Wenn die Sicherheit im Softwareentwicklungslebenszyklus nicht ausreichend betont wird, kann dies zu einem fehlgeschlagenen Compliance-Audit führen.

Es gibt zahlreiche Compliance-Standards, die für Kubernetes und Containersicherheit verwendet werden können.

PCI-DSS, HIPAA und SOC 2 sind branchenspezifische Compliance-Standards.

Einer der größten Fehler in dieser Hinsicht besteht darin, Compliance-Audits nicht von Anfang an in den SDLC einzubeziehen oder nur zur Laufzeit zu berücksichtigen. So stellen Sie sicher, dass alles in der Software konform ist:

  • Machen Sie Compliance von Anfang an zu einem Teil des SDLC.
  • Verwenden Sie die Industriestandards, um die Komponenten der Software konform zu machen.