KUBERNETES ALS FÜHRENDE MICROSERVICE-ARCHITEKTUR IN PUNCTO SICHERHEIT

KUBERNETES ALS FÜHRENDE MICROSERVICE-ARCHITEKTUR IN PUNCTO SICHERHEIT

In diesem Artikel aus unserer Kubernetes-Beratung Serie untersuchen wir die Rolle, die Kubernetes als integraler Bestandteil einer sicheren Microservice-Architektur spielt.

 

Klären wir zunächst die Frage, worum es sich bei einem Microservice handelt. Anfang der 2000er Jahre basierten Anwendungen ausschließlich auf einer monolithischen Architektur. Heute nutzen Entwickler jedoch verstärkt Microservices oder migrieren ihr Monolithprojekt auf die Technologie.

 

Doch wie unterscheiden sich Microservices von monolithischen Infrastrukturen? Und welche Rolle spielt Kubernetes in diesem Umfeld? Beantworten wir diese Fragen nun im Detail.

Microservices vs. Monolith – zwei verschiedene Architekturstile

Microservices und Monolith sind Architekturstile – allerdings nicht diejenigen, die uns im kunstgeschichtlichen Unterricht begegnen werden. Gemeint ist hier die Architektur von cloud-basierten Anwendungen.

 

Microservices kommen immer dann zur Anwendung, wenn cloud-basierte Applikationen in Form mehrerer kleiner Services erstellt werden. Jeder dieser Services arbeitet eigenständig, kommuniziert jedoch mit den anderen. Dies ähnelt dem traditionellen architektonischen Ansatz beim Bau einer Barockkirche. Verschiedene Handwerker arbeiten auf ihrem eigenen Bauabschnitt, wobei sich die einzeln erstellten Abschnitte schließlich zu einem Gesamtbild zusammenfügen.

 

Instagram und Linux als Beispiele für monolithische Architekturen

 

Sehen wir uns Instagram als Beispiel für eine klassische monolithische Anwendung an. Vergleichbar ist die Applikation mit einer steinernen Burg. Wird ein Stein falsch platziert, kann dies die Stabilität des gesamten Gebäudes beeinträchtigen. Ein weiteres bekanntes Beispiel für monolithische Architektur ist der Linux-Kernel.

 

Die Microservice-Architektur ändert diesen Umstand komplett. Details lassen sich deutlich einfacher verändern, ohne die Stabilität der gesamten Struktur zu gefährden. Das bedeutet nicht, dass bei monolithischen Apps Misserfolge vorprogrammiert sind. Da die Anzahl der cloud-basierten Anwendungen jedoch exponentiell wächst, verzichten immer mehr Entwickler auf Monolithen und setzen stattdessen verstärkt auf den Microservice-Ansatz. Der Grund hierfür ist schlicht, dass selbst minimale Änderungen an einer monolithischen App ein vollständiges Rebuild und ein erneutes Deployment in die Cloud erfordern.

 

Für Microservices spricht, dass der Ansatz sowohl die Entwicklung als auch die spätere Wartung cloud-basierter Anwendungen deutlich einfacher und komfortabler gestaltet. Fällt ein Service aus, ist dies für spezialisierte Mitarbeiter weniger dramatisch. Ein Beispiel ist Facebook. Es handelt sich um eine äußerst umfangreiche Cloud-Anwendung, die auf Microservice-Architektur basiert. Fällt hier der Messenger oder ein anderes Feature aus, wird dir restliche Plattform nicht beeinträchtigt.

MEHR

Eine weitere Stärke von Microservices besteht darin, dass diese mit unterschiedlichen Sprachen, Technologien und von verschiedenen Teams entwickelt werden können. Allgemein wird der Microservice-Ansatz für cloud-basierte Anwendungen als die Zukunft betrachtet. Doch nicht in jedem Fall sind Microservices der ideale Ansatz zur Realisierung cloud-basierter Applikationen. Für kleinere Anwendungen mit wenigen „beweglichen“ Teilen und zusammenhängenden Funktionalitäten können monolithische Architekturen nach wie vor die bessere Wahl sein. Die Stärken von Microservices kommen insbesondere im Rahmen eines Großprojekts zum Tragen, an dem zahlreiche Entwickler und Entwicklerteams beteiligt sind. Der Ansatz vereinfacht das Management des Arbeitsprozesses und der Aufgabenverteilung. Zudem erhält jedes Entwicklerteam eine bestimmte Gruppe verwandter Funktionalitäten als Aufgabenpaket.

 

Es muss außerdem erwähnt werden, dass der Microservice-Ansatz zwar zahlreiche Vorteile bei der Realisierung cloud-basierter Anwendungen hat. Der Einsatz entsprechender Technologien ist jedoch kein Kinderspiel. Microservices können weder sämtliche Probleme lösen noch überall eingesetzt werden. Während die wesentliche Stärke einer Microservice-Architektur der Managementprozess ist, der durch Kubernetes vereinfacht werden kann (mehr dazu im nächsten Abschnitt), ist die Kehrseite der Medaille, dass die Vorgehensweise durchaus zeitintensiv sein kann.

Microservices und Kubernetes (K8s)

Welchen Zusammenhang gibt es nun zwischen Microservices und Kubernetes? Kubernetes, kurz auch K8s genannt, ist ein von Google unterstütztes Open-Source-Framework, das zur Orchestrierung von „Containern“ entwickelt wurde.

 

Microservices, Dockers und K8s passen perfekt zusammen. Microservices sind kleine unabhängige Services. Dockers isoliert diese. K8s orchestriert sie, ermöglicht das Deployment cloud-basierter Anwendungen innerhalb kürzester Zeit und enthält darüber hinaus eine automatisierte Health-Check-Funktionalität.

 

K8s legt fest, wie Services miteinander interagieren. Es ist jedoch nicht das einzige Werkzeug, das zu diesem Zweck eingesetzt werden kann. Andere erwähnenswerte Beispiele sind Docker Swarm, Mesos und Nomad. Die umfangreiche Erfahrung aus zahlreichen Projekten als Kubernetes-Berater hat uns jedoch zu dem Schluss gebracht, dass K8s das leistungsfähigste Tool ist. Docker Swarm hat sich beispielsweise als ungeeignet für große Installationen von mehr als 5.000 Knoten erwiesen. Mesos eignet sich nur für ganz bestimmte Einsatzgebiete.

 

Kubernetes ist containerorientiert und zudem der am meisten erprobte Orchestrator, der derzeit erhältlich ist. Obwohl die Technologie von Google unterstützt wird, besitzt K8s als Open-Source-System zahlreiche weitere Mitstreiter auf dem Markt, die zur Wartung und Weiterentwicklung beitragen. Kubernetes ist also nicht von einem einzelnen Akteur abhängig. Auch Unternehmen wie Cisco, IBM, Intel und Microsoft sind tragende Säulen des Erfolgs. Nicht zuletzt ist K8s hinsichtlich technischer und personeller Ressourcen äußerst effizient.

WESENTLICHE VORTEILE UND ALLEINSTELLUNGSMERKMALE VON KUBERNETES

1. Einheitliche Funktionsweise: Schnelle Lösungen zur Installation sind nicht notwendig.

 

2. Ressourceneffizienz: K8s sorgt aufgrund des minimalistischen Technologieansatzes für eine geringere Prozessorauslastung.

 

3. Entwicklungseffizienz: Eine logische Konsequenz des minimalen Ressourcenbedarfs ist ein geringerer Bedarf an Wartungspersonal. Ein bis zwei Mitarbeiter reichen aus, um ein Kubernetes-Setup zu verwalten und anzupassen.

 

4. Kubernetes ist Open Source: Als Open Source Software bringt Kubernetes Flexibilität und Variantenvielfalt mit. Bei persönlichen Projekten können K8s auf einem Laptop betrieben werden. Unter anderem kann die Technologie für Crypto-Mining eingesetzt werden. Alternativ lässt sich Kubernetes in einer Cloud-Umgebung ausführen. Im Gegensatz dazu ist die Hauptalternative, AWS ECS (Container Management Service), ausschließlich über den Cloud-Service von Amazon nutzbar.

Kubernetes-Sicherheit

Neben den bereits beschriebenen Vorteilen überzeugt K8s durch ein hohes Sicherheitsniveau. In Zeiten regelmäßiger Cyber-Attacken muss die Sicherheit bei jeder Anwendung höchste Priorität besitzen. Dies gilt insbesondere für Unternehmen, die DSGVO-Konformität sicherstellen müssen.

 

Unter diesen Gesichtspunkten ermöglicht Kubernetes Folgendes:

ISOLIERUNG

Mit K8s ist es möglich, verschiedene Services einer Anwendung mittels Orchestration Engine über separate Container voneinander zu isolieren, was die Kommunikation zwischen ihnen vereinfacht. Auf diese Weise trägt K8s dazu bei, den Grundgedanken von Microservices zu implementieren: die vollständige Trennung einzelner Container. Treten in einem Container Schwierigkeiten auf, werden die anderen hierdurch nicht negativ beeinflusst. Die Isolierung verhindert DDoS-Angriffe und trägt somit zum Datenschutz und zur Datensicherheit bei.

BERECHTIGUNG UND AUTHENTIFIZIERUNG

Der bedeutendste Baustein der gesamten Sicherheitsumgebung ist die K8s-API. Sie verfügt über integrierte Berechtigungsmechanismen und Zugriffskontrollen. Diese regeln und filtern sämtliche Requests nach der Authentifizierung und Autorisierung. Die Kubernetes-API gilt als zentrale Kommunikationsschnittstelle für Benutzer, Administratoren und Anwendungen. Anwender und Services können auf die API zugreifen, um Aktionen zu initiieren.

PROTOKOLLIERUNG UND AUDITIERUNG

Treten Schwierigkeiten in einer Anwendung auf, so müssen Sie der Problematik auf den Grund gehen. Am besten analysieren Sie hierzu die Systemprotokolle. Hierbei werden Sie von K8s unterstützt. Zusätzlich zu den Standard-Systemprotokollen können Sie kubernetes-spezifische Logs aufzeichnen. Sie erhalten dann einen Einblick in die Vorgänge, die ein bestimmter Benutzer durchgeführt hat. Erfolgte ein unautorisierter Zugriff, so lässt sich die Schwachstelle zeitnah beheben.

NETZWERK-SICHERHEIT

Dank komplexer Sicherheitsfunktionen innerhalb der K8s-Umgebung lässt sich Ihr Anwendungsnetzwerk so sicher gestalten, dass es einer „Cyber-Festung“ gleicht. Die Kommunikation zwischen Gruppen von Pods und anderen Netzwerk-Endpunkten erfordert oftmals komplexe Netzwerkrichtlinien.

 

K8s ermöglicht ein komplexes Cluster-Netzwerk, das skalierte Infrastrukturen zusammenführt und die gegenseitige Kommunikation vereinfacht. Um dies zu realisieren, sollten sämtliche Container und Knoten ohne NAT über das Netzwerk kommunizieren können. Der Container sollte zudem die IP kennen, der er zugeordnet ist. Dies sollte die sichtbare und Dritten bekannte IP-Adresse sein.

SICHERHEITSTECHNOLOGIEN IN KUBERNETES

Heptio Ark

Heptio Ark ist eine Software für das Disaster Recovery Management, die neben Kubernetes läuft. Die Technologie ermöglicht ein einfaches Backup und kann Services über eine Reihe von Checkpoints mithilfe von AWS, GCP und Azure wiederherstellen. Rund um Heptio Ark Backups existieren zahlreiche Fragestellungen. Für Details sehen Sie sich bitte unseren speziellen Blog-Beitrag über Heptio Ark aus unserer Kubernetes-Consulting-Reihe an. Dieser enthält eine detaillierte Schritt-für-Schritt-Anleitung.

 

Consul

Consul unterstützt dynamische Netzwerke. Es ebnet den Weg von klassischen host-basierten Systemen hin zu einem service-basierten Ansatz. Abgesehen von aktuellen Änderungen im Netzwerk existieren keine statischen Firewalls. Vielmehr nutzt Consul eine dynamische Segmentierung von Services, wodurch ein völlig neues Sicherheitsniveau entsteht. Darüber hinaus ist Consul ein Service Discovery Tool, das Informationen über die Auslastung von Pods in Infrastrukturen liefert.

 

Die Sicherheit wird durch TLS-Zertifikate, Service-to-Service-Interaktion und identitätsbezogene Berechtigungen gewährleistet. Consul ist zudem in der Lage, das Netzwerk in verschiedene Bereiche zu unterteilen. Jedem Bereich können dann eigene Berechtigungen und Kommunikationsrichtlinien ohne IP-basierte Regeln zugewiesen werden. Wenn Sie eine zusätzliche Sicherheitsebene hinzufügen möchten, kommt Vault, eine weitere Kubernetes-Sicherheitstechnologie, ins Spiel.

 

Vault

Die Interaktion zwischen Anwendungen und Systemen kann eine Schwachstelle darstellen. Es werden daher dynamisch generierte „Secrets“ genutzt, um unberechtigte Zugriffe zu verhindern. Diese Secrets existieren nur für den Zeitpunkt, in dem sie von Apps oder Services tatsächlich benötigt werden. Dies stellt ein besonders effektives Sicherheits-Feature dar, da Secrets und Passwörter niemandem bekannt sind. Apps und Services erwarten zudem, dass Secrets zu einem bestimmten Zeitpunkt ungültig werden. Da Vault die Zuteilung von Root-Berechtigungen für Basissysteme an zufällige Benutzer unterbindet, gestaltet sich das Zusammenspiel zwischen Applikationen und Services deutlich zuverlässiger. Vault kann Secrets zudem aufheben und ermöglicht eine Schlüsselrotation.

 

Die Kubernetes-Sicherheit hat sich seit Projektbeginn deutlich weiterentwickelt. Dennoch existieren nach wie vor Fallstricke. Standalone-Implementierungen können zu Engpässen im Projekt führen. Die effiziente Integration der Technologien muss daher von

erfahrenen Spezialisten mit entsprechendem technischen Know-how vorgenommen werden.

Kommentar hinzufügen

E-Mail-Adresse ist schon registriert. Bitte benutze Das Login-Formular oder nenne eine andere.

Du hast einen falschen Nutzernamen oder Passwort eingegeben

Sorry that something went wrong, repeat again!
EN DE
Kontaktieren Sie uns