Verbesserung der Kubernetes-Sicherheit in Ihren Software-Lieferketten durch TLS-Zertifikate So könnten Sie Angriffe auf die Lieferkette verhindern
Oktober 2024 von Yateesh Bhardwaj, Product Manager, GMO GlobalSign
Als Softwareentwickler oder DevOps-Ingenieur wissen Sie, wie wichtig Kubernetes für die Bereitstellung skalierbarer Container-basierter Anwendungen ist, um kritische Geschäftsanforderungen zu erfüllen. Und nicht nur das, die Annual Survey 2023 der Cloud Native Computing Foundation (CNCF) hat in nur einem Jahr, also von 2022–2023, ein signifikantes Kubernetes-Wachstum festgestellt – von 76% auf 89%. Die Nutzung von Kubernetes ist aufgrund ihrer Benutzerfreundlichkeit in den letzten Jahren deutlich gestiegen. Zudem bietet es die Möglichkeit, umfangreiche Containerdienste in einer Microservices-Architektur zu verwalten. Daher hat sich Kubernetes zu einem De-facto-Betriebssystem für Container-basierte Produktions-Workloads entwickelt.
Aufgrund seiner Einfachheit ist es kein Wunder, dass Kubernetes von Millionen von Entwicklern weltweit geliebt und gerne genutzt wird. Laut der CNCF-Umfrage gaben 71% der Befragten an, dass sie Kubernetes in der Produktion einsetzen, und 18% denken über den Einsatz für die Verwaltung ihrer Anwendungslasten nach.
Diese zunehmende Verbreitung führt jedoch zu wachsenden Sicherheitsbedenken, insbesondere innerhalb der Software-Lieferketten. Wenn man die Schäden bedenkt, die durch Ereignisse wie den massiven SolarWinds-Angriff im Jahr 2020 entstehen, oder den Vorfall bei MGM im vergangenen Jahr oder der weniger bekannte CodeCov-Angriff 2020, wird klar, dass die Gewährleistung einer sicheren Kommunikation und Integrität über diese Ketten hinweg von größter Bedeutung ist. Am effektivsten erreicht man dies durch die Implementierung von Transport Layer Security-Zertifikaten (TLS).
Sicherheitsbedenken bei Kubernetes
Es gibt noch weitere Beweise für die Bedenken hinsichtlich der Sicherheit von Kubernetes. Zum Beispiel stellte die Red Hat Edition 2024 bezüglich des Zustands des Kubernetes Security Report auch fest, dass „basierend auf einer Umfrage unter 600 DevOps-, Technik- und Sicherheitsexperten aus der ganzen Welt 67% der Befragten die Bereitstellung aufgrund von Sicherheitsbedenken bezüglich Kubernetes verzögert oder verlangsamt haben.“ Zudem haben „46% der Befragten Umsatz- oder Kundenverluste als Folge eines Container- und Kubernetes-Sicherheitsvorfalls festgestellt.”
Die Bedeutung von TLS für Kubernetes
TLS-Zertifikate spielen eine entscheidende Rolle bei der Sicherung der Kommunikation in Kubernetes-Clustern sowie in der gesamten Software-Lieferkette. Sie bieten eine Verschlüsselung, die sicherstellt, dass die Daten während der Übertragung vor Abhören und Manipulation geschützt sind. Darüber hinaus authentifizieren TLS-Zertifikate die Identität der kommunizierenden Parteien und stellen so sicher, dass die Interaktionen mit legitimen Diensten und nicht mit böswilligen Akteuren stattfinden. Im Zusammenhang mit einer Software-Lieferkette bedeutet dies, dass jede Komponente – von der Entwicklung bis zur Bereitstellung – verifiziert wurde und sicher ist.
Absicherung der Kubernetes-Kontrollebene
Die Kubernetes-Kontrollebene, die den API-Server, etcd, Scheduler und Controller-Manager umfasst, ist das Herzstück eines Kubernetes-Clusters. Die Kontrollebene muss unbedingt gesichert werden, da sie den Zustand des Clusters verwaltet.
API-Server: Der API-Server ist der Einstiegspunkt für sämtliche Verwaltungsaufgaben. Hierbei ist TLS unerlässlich, um API-Anfragen und -Antworten zu verschlüsseln. Der API-Server muss so konfiguriert sein, dass er nur Anfragen über HTTPS akzeptiert, und starke, aktuelle TLS-Konfigurationen verwenden. Zudem sollten regelmäßige Wechsel der TLS-Zertifikate erfolgen, um das Risiko einer Kompromittierung zu minimieren.
etcd: Dieser Key-Value-Speicher enthält den Cluster-Status und muss gesichert werden, um unbefugten Zugriff zu verhindern. Zur Verschlüsselung der Kommunikation zwischen etcd-Mitgliedern und Clients sollten Client-to-Server- und Peer-to-Peer-TLS genutzt werden. Dadurch gewährleisten Sie die Integrität und Vertraulichkeit der Daten innerhalb des etcd-Clusters.
Kubelets: Auf jedem Knoten läuft ein Kubelet, das für die Vorgänge auf Knotenebene zuständig ist. Die Absicherung der Kubelet-Kommunikation mit dem API-Server über TLS-Zertifikate stellt sicher, dass nur legitime Knoten Teil des Clusters werden.
Ingresses: Ingress Controller spielen eine entscheidende Rolle bei der Weiterleitung des externen Datenverkehrs an die Dienste innerhalb des Clusters. Die Absicherung dieser Ingress Controller durch Transport Layer Security-Zertifikate (TLS) ist für den Schutz der Vertraulichkeit und Integrität der Daten, die über das Netzwerk übertragen werden, unerlässlich. Bei Verwendung des Tools cert-manager zur Ausstellung von Zertifikaten, die Kubernetes vor verschiedenen öffentlichen oder privaten Ausstellern absichern, brauchen Sie eine Zertifizierungsstelle, deren öffentliche und private Aussteller TLS-Zertifikate ausstellen können, die verschiedene Anforderungen Ihrer Kubernetes-Cluster in Produktions- und Entwicklungsumgebungen absichern.
Implementierung von TLS in die Software-Lieferkette
Eine Software-Lieferkette umfasst in der Regel mehrere Stufen, von der Code-Entwicklung über die Erstellung von Container-Abbildern bis hin zur Speicherung und Bereitstellung. Jede Stufe muss gesichert sein, um die Integrität und Authentizität der Software zu gewährleisten.
Quellcode-Repositories: Mit Hilfe von TLS lassen sich Verbindungen zu Quellcode-Repositories (z.B. GitHub, GitLab) absichern. Das schützt den Code während der Übertragung vor dem Abfangen oder Verändern. Verwenden Sie außerdem „mutual TLS“ (mTLS), damit sich sowohl der Client als auch der Server gegenseitig authentifizieren. Dadurch entsteht eine zusätzliche Sicherheitsebene.
CI/CD-Pipelines: Pipelines vom Typ Continuous Integration/Continuous Deployment (CI/CD) automatisieren das Erstellen, Testen und Bereitstellen von Anwendungen. CI/CD-Tools und Kommunikationskanäle sollten durch TLS gesichert werden, um das Einschleusen von bösartigem Code zu verhindern. Außerdem sollte die Verwendung signierter Commits und die Überprüfung von Signaturen in Betracht gezogen werden, um die Integrität der Codes zu gewährleisten.
Container-Registries: In diesen Registern werden Container-Abbilder gespeichert, die sicher übertragen werden müssen, um Manipulationen zu verhindern. Implementieren Sie daher TLS für alle Verbindungen zu und von Container-Registries. Außerdem stellen Tools zum Signieren und Verifizieren von Abbildern (z.B. Docker Content Trust, Notary) sicher, dass nur vertrauenswürdige Abbilder bereitgestellt werden.
Kubernetes Admission Controller: Diese Zulassungssteuerungen können Sicherheitsrichtlinien innerhalb eines Clusters durchsetzen. Die Implementierung von TLS für die Kommunikation zwischen den Zulassungssteuerungen und dem API-Server gewährleistet, dass die Richtlinien auch auf sichere Weise angewendet werden.
Die ordnungsgemäße Nutzung von TLS-Zertifikaten in Software-Lieferketten kann helfen, das Risiko eines Cybersicherheitsvorfalls zu verringern, beispielsweise Angriffe auf die Lieferkette oder Man-in-the-Middle-Angriffe. Auf dem Markt gibt es mehrere Anbieter, die Unternehmen bei der Lösung dieses Problems helfen können. Für welche Lösung Sie sich auch entscheiden: Sie können beruhigt sein, denn Ihr Unternehmen wird am Ende besser dastehen, da Ihre Lieferkette deutlich sicherer sein wird.