Sichere Container im Blick: Mit Admission Controllers Container Drift erkennen

Erfahren Sie, wie Admission Controllers helfen, Container Drift in Kubernetes zu erkennen und die Sicherheit Ihrer Anwendungen zu erhöhen.

Meta: ayedo Redaktion · 24.12.2021 · ⏳ 2 Minuten · Alle Blogs →

Bei Box nutzen wir Kubernetes (K8s), um Hunderte von Mikrodiensten zu verwalten, die es uns ermöglichen, Daten im Petabyte-Maßstab zu streamen. Im Rahmen unseres Deployment-Prozesses setzen wir kube-applier als Teil der GitOps-Workflows mit deklarativer Konfiguration und automatisierten Deployments ein. Entwickler deklarieren ihre K8s-Anwendungen in einem Git-Repository, welches eine Code-Überprüfung und automatische Checks erfordert, bevor Änderungen in unseren K8s-Clustern zusammengeführt und angewendet werden können. Mit kubectl exec und ähnlichen Befehlen können Entwickler jedoch direkt mit laufenden Containern interagieren und diese aus ihrem deployten Zustand verändern. Diese Interaktion könnte die Änderungs- und Code-Überprüfungsprozesse, die in unseren CI/CD-Pipelines durchgesetzt werden, untergraben. Zudem erlaubt es, dass solche betroffenen Container langfristig im Produktionsumfeld weiterhin Traffic erhalten.

Um dieses Problem zu lösen, haben wir ein eigenes K8s-Komponenten entwickelt, das wir kube-exec-controller nennen, zusammen mit dem dazugehörigen kubectl-Plugin. Diese arbeiten zusammen, um potenziell veränderte Container (verursacht durch interaktive kubectl-Befehle) zu erkennen und zu beenden sowie die Interaktionsereignisse direkt den Ziel-Pods zur besseren Sichtbarkeit zu offenbaren.

Admission Control für interaktive kubectl-Befehle

Sobald eine Anfrage an K8s gesendet wird, muss sie vom API-Server authentifiziert und autorisiert werden, um fortzufahren. Darüber hinaus hat K8s eine separate Schutzschicht namens Admission Controllers, die die Anfrage abfangen kann, bevor ein Objekt in etcd gespeichert wird. Es gibt verschiedene vordefinierte Admission Controls, die in die API-Server-Binärdatei kompiliert sind (z.B. ResourceQuota zur Durchsetzung harter Ressourcennutzungsgrenzen pro Namespace). Außerdem gibt es zwei dynamische Admission Controls namens MutatingAdmissionWebhook und ValidatingAdmissionWebhook, die verwendet werden, um K8s-Anfragen entweder zu mutieren oder zu validieren. Letzteres haben wir übernommen, um Container Drift zur Laufzeit zu erkennen, die durch interaktive kubectl-Befehle verursacht wird. Dieser gesamte Prozess kann in drei Schritte unterteilt werden, die im Folgenden detailliert erklärt werden.

1. Interaktive kubectl-Befehlsanfragen zulassen

Zunächst mussten wir einen Validating Webhook aktivieren, der qualifizierte Anfragen an kube-exec-controller sendet. Um den neuen Validierungsmechanismus speziell für interaktive kubectl-Befehle hinzuzufügen, haben wir die Regeln des Webhooks mit Ressourcen als [pods/exec, pods/attach] und Operationen als CONNECT konfiguriert. Diese Regeln teilen dem API-Server des Clusters mit, dass alle exec- und attach-Anfragen unserem Admission Control Webhook unterliegen sollten. In dem von uns konfigurierten ValidatingAdmissionWebhook haben wir einen service-Referenz angegeben (kann auch durch url ersetzt werden, die den Standort des Webhooks angibt) und caBundle, um die Validierung seines X.509-Zertifikats zu ermöglichen, beides unter der clientConfig-Strophe.

Hier ist ein kurzes Beispiel, wie unser ValidatingWebhookConfiguration-Objekt aussieht: yaml apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: name: example-validating-webhook-config webhooks:

  • name: validate-pod-interaction.example.com sideEffects: None rules:
    • apiGroups: [""] apiVersions: [""] operations: [“CONNECT”] resources: [“pods/exec”, “pods/attach”] failurePolicy: Fail clientConfig: service:

Quelle: Kubernetes Blog

ayedo Alien Kubernetes Hat

Hosten Sie Ihre Apps bei ayedo

Profitieren Sie von skalierbarem App Hosting in Kubernetes, hochverfügbarem Ingress Loadbalancing und erstklassigem Support durch unser Plattform Team. Mit der ayedo Cloud können Sie sich wieder auf das konzentrieren, was Sie am besten können: Software entwickeln.

Jetzt ausprobieren →

Ähnliche Inhalte

Alle Blogs →



ayedo Redaktion · 08.06.2025 · ⏳ 3 Minuten

Neue Wege im KI-Management: Die Gateway API Inference Extension

Moderne generative KI- und große Sprachmodelle (LLMs) stellen Kubernetes vor einzigartige Herausforderungen im Datenverkehrsmanagement. Im Gegensatz zu typischen kurzlebigen, zustandslosen Webanfragen …

Lesen →

Neue Wege im KI-Management: Die Gateway API Inference Extension
ayedo Redaktion · 06.06.2025 · ⏳ 2 Minuten

Wie Sie sicherstellen, dass Ihr Sidecar-Container zuerst startet

Einführung in die Verwaltung von Sidecar-Containern in Kubernetes In der Welt von Kubernetes sind Sidecar-Container nützliche Helfer, die Funktionen erweitern oder zusätzliche Aufgaben für die …

Lesen →

Wie Sie sicherstellen, dass Ihr Sidecar-Container zuerst startet
ayedo Redaktion · 05.06.2025 · ⏳ 2 Minuten

Gateway API v1.3.0: Neue Funktionen für flexibles Request Mirroring und mehr!

Wir freuen uns, die allgemeine Verfügbarkeit der Gateway API v1.3.0 bekanntzugeben! Diese Version wurde am 24. April 2025 veröffentlicht und bringt spannende neue Funktionen mit sich. Was ändert sich …

Lesen →

Gateway API v1.3.0: Neue Funktionen für flexibles Request Mirroring und mehr!
Katrin Peter · 03.06.2025 · ⏳ 2 Minuten

Die vergessene Schwachstelle in euren CI/CD-Pipelines: Die Registry

Die vergessene Schwachstelle in euren CI/CD-Pipelines: Die Registry Jeder redet über Build-Pipelines, Deployment-Automatisierung, GitOps, Blue/Green-Rollouts, Canary Releases. Alles sauber …

Lesen →

Die vergessene Schwachstelle in euren CI/CD-Pipelines: Die Registry
Katrin Peter · 03.06.2025 · ⏳ 2 Minuten

Application Performance sollte messbar sein — jederzeit, in Echtzeit

Wer Anwendungen produktiv betreibt, braucht keine schönen Dashboards, sondern harte Daten. Performance-Probleme entstehen nie dann, wenn Zeit für Debugging ist. Sie kommen genau dann, wenn Systeme …

Lesen →

Application Performance sollte messbar sein — jederzeit, in Echtzeit

Interessiert an weiteren Inhalten? Hier gehts zu allen Blogs →


Noch Fragen? Melden Sie sich!

Unsere DevOps-Experten antworten in der Regel innerhalb einer Stunde.

Zu Gen-Z für E-Mail? Einfach mal Discord versuchen. Unter +49 800 000 3706 können Sie unter Angabe Ihrer Kontaktdaten auch einen Rückruf vereinbaren. Bitte beachten Sie, dass es keine Möglichkeit gibt, uns telefonisch direkt zu erreichen. Bitte gar nicht erst versuchen. Sollten Sie dennoch Interesse an synchroner Verfügbarkeit via Telefon haben, empfehlen wir Ihnen unseren Priority Support.