Wie der strikt regulierte Finanzplatz Schweiz DevOps erfolgreich einsetzen kann, können Sie hier im ersten Teil unserer Serie zu DevOps nachlesen. Im zweiten Teil der Serie dreht sich alles um Kubernetes Network Policies und Kubernetes Pod Security Policies.

Kubernetes Network Policies und Pod Security Policies sind dabei einer der grössten Unterschiede im Vergleich zu Applikationen, die nicht als Container auf einer Container-Plattform betrieben werden. Applikationen, auf dedizierten Servern, können unter anderem herkömmlich mit Netzwerk-Firewalls auf Stufe Server von anderen Applikationen auf anderen Servern isoliert werden. Bei Container-Plattformen, die aus einem Server-Verbund bestehen, ist das nicht so einfach realisierbar, da eine Applikation als Pod auf einem beliebigen Server im Verbund laufen kann. Kommuniziert die Applikation mit einer externen Ressource, ist die Quell-IP-Adresse des Netzwerkverkehrs immer diejenige des Servers, auf dem die Applikation gerade läuft. Eine herkömmliche Netzwerk-Firewall kann deshalb nicht davon ausgehen, dass eine Applikation immer die gleiche, eindeutige und vorhersehbare IP-Adresse verwendet. Möchte eine Applikation auf einer Container-Plattform mit einer externen Ressource kommunizieren, müssen auf der Netzwerk-Firewall alle Server im Verbund berechtigt sein, Verbindungen zu dieser externen Ressource aufzubauen. Das wiederum ist in gehärteten Umgebungen eine Herausforderung, da die Netzwerk-Firewall nicht unterscheiden kann, von welcher Applikation auf der Container-Plattform der Netzwerkverkehr ausgeht – die Firewall sieht nur die IP-Adresse des Servers.

Gewisse Container-Plattformen kennen das Konzept von Egress IPs, wobei Pods, die mit externen Ressourcen kommunizieren müssen, eine dedizierte NAT IP-Adresse erhalten, die dynamisch dem jeweiligen Server zugewiesen wird und somit als Quell-IP-Adresse auch auf der Netzwerk-Firewall erkennbar ist. Dieser Ansatz ist ein Versuch, klassische, um nicht zu sagen alte, Netzwerkkonzepte auch auf neue Container-Plattform Architekturen anzuwenden, was einen Teil der neu gewonnenen Flexibilität von Container-Plattformen wieder verringert.

Um diese neue Herausforderung im Bereich der Netzwerksicherheit zu lösen, bietet Kubernetes den Einsatz von Network Policies. Network Policies können, im Vergleich zu Netzwerk-Firewalls, noch granularer den Netzwerk-Verkehr kontrollieren, da zu jedem Microservice oder Pod einer Gesamtlösung Regeln definiert und forciert werden. Dadurch verschiebt sich ein Teil der Netzwerksicherheit zwar von der Netzwerk-Firewall weg auf die Container-Plattform, bietet dafür aber auch wieder neue Möglichkeiten.

Kubernetes Pod Security Policies schirmen Pods umfangreich von den Servern ab, was verhindert, dass ein kompromittierter Pod über den Server auch auf andere Pods auf dem gleichen Server im Verbund zugreifen kann. Der potenzielle Angriffsvektor wird dadurch stark eingeschränkt. Neben Kubernetes Network Policies und Kubernetes Pod Security Policies besteht auch die Möglichkeit, Drittsoftware auf der Container-Plattform einzusetzen, die zusätzliche Sicherheitsfunktionen für die Plattform, Pods und Netzwerkverkehr bieten.