single.php
< Beitrag von Frank Oltmanns-Mack

Container on Azure 4: Kubernetes-Sicherheit

Nachdem ich in den letzten Blog-Beiträgen die Grundlagen von Docker, Kubernetes und dessen Architektur erläutert habe, beleuchtet dieser Beitrag die Sicherheit einer Kubernetes-Umgebung. Dabei gebe ich Hinweise auf eine Reihe von Best Practices und zeige auf, wie und wodurch der Einsatz von Microsoft Azure die Kubernetes-Sicherheit wesentlich steigert.

Kubernetes-Sicherheit durch CIS-Benchmark

Das Center for Internet Security (CIS) ist eine gemeinnützige Institution, die sich die Schaffung von Cyber Security auf die Fahne geschrieben hat. Um die Cyber Security zu stärken, veröffentlicht das CIS sogenannte CIS Benchmarks für verschiedene Technologien, so auch einen Security Benchmark für Kubernetes. Der CIS Kubernetes-Benchmark erfragt über Befehle Informationen für verschiedene Bereiche, wie  z. B. Master, Nodes, Configurationen, und gibt Empfehlungen für sichere Einstellungen.

User können die Abfrage-Befehle manuell durchführen, aber es existiert auch schon ein Tool mit dem Namen kube-bench, das aus dem Cluster direkt ausgeführt werden kann. Das Ergebnis der Abfrage liefert dann Ansatzpunkte, um die Sicherheit des Kubernetes-Clusters zu steigern und eine entsprechende Grundlage zu schaffen. Für den weiteren Gebrauch von Kubernetes gibt es noch zusätzliche Sicherheitsempfehlungen.

Best Practices für Kubernetes

In Bezug auf Kubernetes-Umgebungen und ihrer Sicherheit gibt es einige allgemein anerkannte Best Practices, die sich vor allem auf den sinnvollen Einsatz bestimmter Kubernetes-Funktionalitäten richten. Auch ein Kubernetes-Cluster ist nur so sicher, wie Sie ihn machen. Wenn Sie die sichere Konfiguration eines Kubernetes-Clusters außer Acht lassen, dann gibt es viele Sicherheitslücken und Angriffspunkte für Hacker. Die folgende Liste von Best Practices hat keinen Anspruch auf Vollständigkeit, bietet aber einen umfassenden Ansatz:

Ein Cluster pro Produktionsumgebung

Setzen Sie Produktionsumgebungen immer jeweils in einem eigenen Cluster um.

Namespaces

Wenn Sie einen Cluster für mehrere Umgebungen (Test, Produktion etc.) nutzen, dann müssen Sie unterschiedliche Namespaces verwenden, um Netzwerk und Ressourcen sicher zu trennen.

Role Based Access Control

Aktivieren Sie für die Umgebung die rollenbasierte Zugriffskontrolle Role Based Access Control (RBAC).

Aktualität

Sorgen Sie dafür, dass die Komponenten Cluster und Container sowie die verwendete Software immer auf dem neuesten Stand sind.

Sichere Quellen

Nutzen Sie Container nur aus verifizierten Quellen (private oder offizielle Container Registries). Kompromittierte Container können die komplette Kubernetes-Umgebung gefährden.

Quotas

Definieren Sie in der Umgebung für alle Ressourcen Quotas, um z. B. DDoS-Attacken abzuwehren. Nicht beschränkte Elemente können die kompletten Ressourcen in Anspruch nehmen, sodass die Umgebung nicht mehr reagiert. Dadurch haben Angreifer die Möglichkeit, auf die Umgebung zuzugreifen.

Netzwerk-Richtlinien

Definieren Sie Netzwerk-Richtlinien, um die Kommunikation nur auf die notwendigen Ports zu reduzieren und die Kommunikation zwischen den Pods abzusichern.

Logging

Überwachen Sie das Logging für den Cluster, die Container und auch für die Anwendung.

Secrets

Achten sie auf einen sinnvollen Einsatz von Secrets, die die Passwörter in Kubernetes verwalten. Im Ruhezustand sollten die Secrets verschlüsselt sein.

Sicherheitsrichtlinien

Befolgen Sie die Sicherheitsrichtlinien auf Pod-Ebene.

Wie Sie sehen, bedarf es einer umfassenden Betrachtung jeder Kubernetes-Umgebung. Da viele der Einstellungen auch noch anwendungsspezifisch sind, muss der Administrator die Anwendung durchdringend verstehen. Gerade bei sehr großen Umgebungen mit mehreren 100 Pods ist dies sehr schwierig. Eine möglichst genaue Planung von Kubernetes-Umgebungen im Vorfeld ist somit unerlässlich.

Kubernetes-Sicherheit in der Microsoft Azure

Kubernetes-Sicherheit

Microsoft Azure liefert den Usern mit dem Azure Kubernetes Service (AKS) eine verwaltete Kubernetes-Umgebung, die die Sicherheit von Master, Nodes, Netzwerk und Updates wesentlich erhöht.

Jede Kubernetes-Umgebung besitzt einen dedizierten Master. Microsoft verwaltet und aktualisiert die Master der Umgebungen und ermöglicht die Steuerung des Zugriffs durch die Einbindung eines Azure Active Directory.

Zur Sicherheit der Nodes nutzt Azure mehrere Mechanismen: So setzt Azure eine optimierte Ubuntu Linux Distribution für die Knoten der Umgebung ein. Wenn Sie einen AKS-Cluster erstellen oder skalieren, stellt Microsoft automatisch die neuesten OS-Sicherheitspatches und Konfiguration bereit. Außerdem werden jede Nacht automatisch Sicherheitspatches auf den Betriebssystemen installiert. Sollte dabei ein Neustart erforderlich sein, so wird dieser nicht automatisch durchgeführt.

Jeder Knoten wird automatisch in einem eigenen privaten virtuellen Netzwerk bereitgestellt, ohne aus dem Internet erreichbar zu sein. Der Zugriff per SSH ist dabei standardmäßig für Fehlerbehebungen und Wartung aktiviert, ist aber nur innerhalb des Netzwerks möglich. Bei der Verwendung von Speichern nutzt Azure verwaltete Datenträger. Die Daten sind dabei automatisch im Ruhezustand verschlüsselt und redundant gespeichert.

Azure stellt für AKS sehr einfach Upgrades bereit und sorgt dabei immer für einen stabilen Zustand der Umgebung. Die Knoten werden nacheinander von Pods geleert, aktualisiert und dann wieder in die Umgebung eingebunden.

Per VPN oder ExpressRoute können AKS-Umgebungen so aufgesetzt werden, dass nur ein interner Zugriff möglich und die Umgebung nicht aus dem Internet erreichbar ist. Das Netzwerk wird dabei jederzeit durch die Verwendung von Azure Network Security Groups (NSG) abgesichert. Dies unterbindet eine unerwünschte Kommunikation zwischen den einzelnen Elementen des Clusters. Bei der Erstellung von z. B. Services werden diese NSGs automatisch angepasst.

Fazit

Kubernetes-Sicherheit ist keine triviale Angelegenheit, denn viele Aspekte müssen im Voraus berücksichtigt werden. Um diese anspruchsvolle Aufgabe zu bewältigen, sind unterstützende Tools hilfreich. Vor allem bewährt sich jedoch der Einsatz von Best Practices. Außerdem vereinfacht die Verwendung verwalteter Cloud-Umgebungen – wie z. B. Microsoft Azure – die Lösung vieler Sicherheitsfragen, denn hier greifen standardmäßig viele Mechanismen, die die sichere Bereitstellung einer Kubernetes-Umgebung ermöglichen.

Wünschen Sie sich nun ein paar Kubernetes-Praxisbeispiele in Azure? Gerne, solche Beispiele liefere ich in meinem nächsten Beitrag zu Thema „Container on Azure“.

Bisherige Teile der Serie „Container on Azure“:

  1. Was sind Container?
  2. Was ist Kubernetes?
  3. Architektur von Kubernetes
  4. Kubernetes-Sicherheit
Folgen
X

Folgen

E-mail : *
Kategorie: Cloud | Schlagwörter: , , , , | Kommentare: 0

Beitrag kommentieren

CAPTCHA * Time limit is exhausted. Please reload CAPTCHA.