Kubernetes-Cluster absichern mit Hashicorp Consul/Vault | K&C Beratung

Kubernetes-Cluster absichern mit Hashicorp Consul/Vault | K&C Beratung
[:en]Boogy woogy[:]

Nutzen von Hashicorp bei Einsatz im Kubernetes-Umfeld

Die aktuelle Ausgabe unserer Kubernetes-Beratung Serie befasst sich mit der Rolle von Hashipcorps Consul und Vault als zusätzliche Security Layer beim Einsatz von Kubernetes zur Container-Orchrestrierung.

Kubernetes ist eine der umfangreichsten und innovativsten Plattformen auf dem Markt. Die Technologie ermöglicht die Einhaltung höchster Sicherheitsstandards, eine hervorragende Skalierbarkeit von Applikationen und vor allen Dingen eine Isolation verschiedener Produktarten. Dieses Feature ist nach dem Entwicklungsbeginn deshalb so wichtig, weil es gewährleistet, dass Microservices in Containern voneinander getrennt werden. Wäre dies nicht der Fall, hätten Angreifer die Möglichkeit, in Ihre gesamte Systemlandschaft einzudringen. In manchen Fällen können die Ansprüche in puncto Security, Richtlinien-Management, Audit-Logging, System-Monitoring und Service-Discovery jedoch noch höher sein. An dieser Stelle tragen Hashicorp Consul und Vault maßgeblich zur Robustheit der Infrastruktur bei. Die Implementierung von Consul oder Vault in Kubernetes oder die Implementierung von Kubernetes selbst ist jedoch herausfordernd.

K&C besitzt einen umfangreichen Erfahrungsschatz in der Beratung und Umsetzung von Projekten im Bereich DevOps services deployment. Darüber hinaus wird die Entwicklung, Bereitstellung und Sicherheit der Applikationsinfrastruktur dank der Automatisierung von Cloud-Infrastrukturen mit HashiCorp deutlich vereinfacht.

Hashicorp Consul: Service-Discovery und System-Orchestrierung

Die statische Ausgestaltung von Netzwerken gehört der Vergangenheit an. Systeme erfordern heute Skalierbarkeit und eine schnelle Service-Discovery, sobald neue Elemente hinzugefügt wurden. Consul ermöglicht dynamische Umgebungen und einen Wechsel von klassischen host-basierten Systemen hin zu einem service-basierten Ansatz. Abgesehen davon sind keine statischen Firewalls erforderlich, da Consul eine dynamische Segmentierung von Services unterstützt. Hierdurch entsteht ein völlig neues Sicherheitslevel.

Unsere Erfahrung aus der Beratung zeigt außerdem: Aufgrund der komplexen Kubernetes-Umgebungen ist es bedeutsam, stets den Systemzustand hinsichtlich der Auslastung und weiterer wichtiger Indikatoren zu überwachen. Consul ist ein Service Discovery Tool, mit dem Sie die Auslastung jedes Pods in der Infrastruktur im Blick behalten. Dies realisieren Sie, indem Sie sämtliche Services registrieren und HTTP- sowie DNS-Schnittstellen bereitstellen. Auf diese Weise ist eine Statusabfrage für verschiedene Netzwerkelemente möglich. Zudem ist dann jeder Service in der Lage, den anderen Service in einer definierten Reihenfolge dynamisch zu erkennen, zu überwachen und mit ihm zu kommunizieren.

Consul-Cluster speichern alle Informationen über den Cluster selbst, über Health Checks und die Services des Clients in /consul/data als Volume. Der Container zeigt sein Verzeichnis an, sodass es auf Client-Seite sichtbar ist. Ist es dort nicht mehr sichtbar, so hat dies keine Auswirkung auf Cluster-Operationen. Serverseitig werden Informationen zu Clients, Snapshots und andere wichtige Daten gespeichert, sodass der Server nach einem Ausfall wiederhergestellt werden kann. Behalten die Mitarbeiter die Container mit Consul-Cluster-Daten nicht im Blick, können diese bei einen Neustart hingegen zerstört werden. Wenn Sie Consul in einem Container betreiben, müssen Sie sicherstellen, dass dem Client und den Clustern geeignete Adressen zugewiesen sind. Außerdem sollten Sie die Cluster-Adresse direkt zu Beginn hinzufügen. Sie stellen damit sicher, dass eine korrekte und für die anderen Beteiligten funktionierende Schnittstelle gefunden wird.

Die Sicherheit wird über TLS-Zertifikate, Service-to-Service-Kommunikation und identitätsbasierte Autorisierung gewährleistet. Consul ist in der Lage, das Netzwerk in unterschiedliche Segmente aufzuteilen. Jedem davon können eigene Berechtigungen, Kommunikationsrichtlinien und IP-basierte Regeln zugewiesen werden. Wenn Ihnen dies noch nicht ausreicht, so kommt eine weitere Sicherheitsinstanz ins Spiel: Vault.

Hashicorp in Kubernets

Hashicorp Vault: die erstklassige Secrets-Management-Lösung

Im Rahmen unserer Beratung werden wir immer wieder gefragt, welche Lösung wir für das Management von Secrets empfehlen. Im Kubernetes-Bereich lautet die Antwort oftmals „Vault“. Hierfür gibt es verschiedene Gründe.

Zunächst kann die Kommunikation zwischen Anwendungen und Systemen eine Schwachstelle darstellen. Das Risiko unberechtigter Zugriffe lässt sich mit dynamisch erstellten Secrets jedoch signifikant minimieren. Secrets werden nur erstellt und existieren ausschließlich so lange, wie sie von Apps oder Services tatsächlich benötigt werden. Somit ist sichergestellt, dass Secrets samt ihrer Passwörter niemandem bekannt sind. Darüber hinaus erwarten Apps und Services, dass Secrets zu einem bestimmten Zeitpunkt ungültig werden. Die Kommunikation zwischen Apps und Services gestaltet sich dank Vault also deutlich zuverlässiger.

Mit der beschriebenen Vorgehensweise vermeidet es Vault zudem, dass zufälligen Benutzern Root-Berechtigungen für die zugrunde liegenden Systeme zugewiesen werden. Nicht zuletzt kann Vault Secrets widerrufen und Key Rolling durchführen.

Technologiekombination für mehr Sicherheit

Kubernetes-Cluster beinhalten mehrere leistungsfähige Security-Funktionen, mit denen Sie Ihr System in jeder Hinsicht effektiv absichern können. Darüber hinaus ermöglicht es Consul, den Zustand Ihres Systems zu überwachen. Bestehende Probleme werden auf einfache Weise erkannt. Vault erlaubt es Ihnen, eine zusätzliche Sicherheitsinstanz in der Kommunikation zwischen den verschiedenen Netzwerkkomponenten hinzuzufügen. Dynamische Secrets schützen Ihr Unternehmen nicht nur vor Passwort-Schwachstellen. Sie stellen auch sicher, dass gar kein aktuelles Passwort existiert, welches entwendet werden könnte.

Nachfolgend möchten wir unsere Erfahrung aus der Kubernetes- und Container-Beratung an Sie weitergeben. Wir zeigen daher exemplarisch auf, wie sich Consul und Vault in der Praxis implementieren lassen.

Implementierung von Consul

Vor der Implementierung von Consul müssen Sie folgende Komponenten herunterladen und installieren:

1.consul

2.cfssl and cfssljson 1.2

Generieren der TLS-Zertifikate

Die RPS-Kommunikation zwischen den einzelnen Consul-Elementen wird mittels TLS verschlüsselt. Nun müssen wir die Certificate Authority (CA) initiieren:

Zertifikat und Key für Consul erstellen:

Nun liegen uns folgende Dateien vor:

Consul Gossip Encryption Key generieren

Die Gossip-Kommunikation zwischen den Consul-Elementen wird mithilfe eines gemeinsamen Keys verschlüsselt. Generieren und speichern Sie den Key:

Consul Secret und ConfigMap erstellen

Gossip Key und TLS-Zertifikate im Secret speichern:

Nun speichern wir die Consul-Konfiguration in der ConfigMap:

Consul Service

service.yaml:

StatfulSet

3 Pods deployen:

statefulset.yaml:

Überprüfung der gestarteten Knoten:

Letzter Check

Leiten Sie den Port an die Local Machine weiter:

Folgenden Befehl ausführen:

Web-UI prüfen

Öffnen Sie einfach https://127.0.0.1:8500 in Ihrem Browser.

Haben Sie alle oben genannten Schritte korrekt durchgeführt, steht Consul nun für Ihre individuellen Anforderungen zur Verfügung.

Implementierung von Vault

Nun werden wir Vault in Kubernetes laufen lassen. Zunächst müssen wir jedoch die Konfigurationsdatei vault.hcl erstellen und Folgendes einfügen:

ConfigMap erstellen:

service.yaml erstellen:

deployment.yaml ebenfalls erstellen:

Änderungen übernehmen

Wenn alles richtig gemacht wurde, haben wir nun einen funktionierenden Service. Beginnen wir mit der Initialisierung und der Port-Weiterleitung auf Ihre Local Machine:

Überprüfen Sie Folgendes im anderen Fenster:

Zur Vereinfachung führen wir die Initialisierung mit einem Unseal Key durch.

Speichern Sie in jedem Fall den Output, die Sie zu diesem Zeitpunkt erhalten werden, da wir die Unseal Keys und den Root Token benötigen. Nun entpacken wir die Vault mit einem Unseal Key:

In die Vault einloggen mit dem Root Token:

Secret speichern:

Folgendes können wir bei Bedarf ebenfalls prüfen:

Secret aktualisieren:

Die zweite Version der Daten in secret/apikey wurde erstellt. Aktualisieren Sie nochmals:

Sehen wir uns nun das Ergebnis an:

PUT aktualisiert alle Daten im Secret. Um Änderungen hinzuzufügen, ohne die alten Daten zu verlieren, müssen wir den folgenden Befehl ausführen:

Überprüfen wir das Ergebnis:

Im Übrigen können Sie mit verschiedenen Versionen arbeiten:

Wenn alle Schritte erfolgreich ausgeführt wurden, sollten Sie nun über eine voll funktionsfähige, bereitgestellte Vault verfügen. Diese stellt eine leistungsfähige Ergänzung für Ihre Umgebung dar.

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!
Kontaktieren Sie uns