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 · 06.07.2025 · ⏳ 2 Minuten

Herausforderungen und Lösungen: So meistern Sie Geräteausfälle in Kubernetes-Pods

Kubernetes ist der De-facto-Standard für die Container-Orchestrierung, aber wenn es um den Umgang mit spezialisierter Hardware wie GPUs und anderen Beschleunigern geht, wird es kompliziert. In diesem …

Lesen →

Herausforderungen und Lösungen: So meistern Sie Geräteausfälle in Kubernetes-Pods
Katrin Peter · 03.07.2025 · ⏳ 2 Minuten

Produkt-Update bei Loopback:

Lesen →

Produkt-Update bei Loopback:
Katrin Peter · 03.07.2025 · ⏳ 3 Minuten

Kubernetes als Schlüsseltechnologie für die OZG-Umsetzung im Saarland

Lesen →

Kubernetes als Schlüsseltechnologie für die OZG-Umsetzung im Saarland
ayedo Redaktion · 28.06.2025 · ⏳ 3 Minuten

Kompatibilität von Container-Images: Ein Schlüssel zur Zuverlässigkeit in Cloud-Umgebungen

In Branchen, in denen Systeme äußerst zuverlässig laufen müssen und strenge Leistungsanforderungen bestehen, wie beispielsweise in der Telekommunikation, Hochleistungs- oder KI-Computing, benötigen …

Lesen →

Kompatibilität von Container-Images: Ein Schlüssel zur Zuverlässigkeit in Cloud-Umgebungen
Katrin Peter · 17.06.2025 · ⏳ 3 Minuten

Kubernetes kann Freiheit - wenn man es richtig macht.

Lesen →

Kubernetes kann Freiheit - wenn man es richtig macht.

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.