Risiken
Validierung von API-Anfragen durch den Admission Controller
Admission Controllers in Kubernetes spielen eine entscheidende Rolle bei der Validierung und Änderung von Anforderungen an den API-Server, bevor sie persistiert werden. Diese Controller arbeiten nach der Authentifizierung und Autorisierung und stellen sicher, dass die Anforderungen den erforderlichen Richtlinien und Beschränkungen entsprechen. Die ordnungsgemäße Konfiguration von Admission Controllern ist für die Nutzung fortschrittlicher Kubernetes-Funktionen und die Aufrechterhaltung eines sicheren und gut geregelten Clusters unerlässlich.
Die Rolle der Admission Controllers
Admission Controller fangen Anfragen an den Kubernetes-API-Server ab und bieten einen letzten Kontrollpunkt zur Durchsetzung von Richtlinien und Beschränkungen. Sie tragen dazu bei, dass der Cluster gemäß den gewünschten Sicherheits-, Ressourcenverwaltungs- und Betriebsrichtlinien arbeitet.
Key Admission Controllers und deren Funktion
-
AlwaysPullImages
- Funktion: Stellt sicher, dass jeder Pod vor dem Start immer Images abruft, unabhängig von der für den Pod festgelegten Image-Pull-Policy.
- Nutzen: Verhindert die Verwendung potenziell veralteter oder unsicherer Images, die auf einem Knoten vorhanden sein könnten. Erzwingt die Verwendung der neuesten Image-Versionen aus vertrauenswürdigen Registern..
-
PodSecurityPolicy
- Funktion: Überprüft den Sicherheitskontext von Pods anhand der im Cluster definierten PodSecurityPolicies. Bestimmt, ob ein Pod aufgrund von Sicherheitskriterien eingeplant werden kann.
- Vorteil: Erhöht die Sicherheit des Clusters, indem sichergestellt wird, dass Pods die definierten Sicherheitsrichtlinien einhalten, z. B. das Verbot von privilegierten Containern oder das Erzwingen bestimmter Fähigkeiten.
-
ResourceQuota
- Funktion: Setzt Ressourcenquoten innerhalb von Namensräumen durch und sorgt dafür, dass die Ressourcennutzung die festgelegten Grenzen nicht überschreitet.
- Nutzen: Verhindert die Erschöpfung von Ressourcen durch Begrenzung der Ressourcenmenge (CPU, Arbeitsspeicher, Speicher), die ein Namensraum verbrauchen kann. Hilft bei der Verwaltung der Ressourcenzuweisung und verhindert Denial-of-Service-Angriffe.
-
NamespaceExists
- Funktion: Stellt sicher, dass Ressourcen nur in bestehenden Namespaces erstellt werden.
- Vorteil: Verhindert die Erstellung von Ressourcen in nicht existierenden Namespaces, wodurch die Namespace-Integrität gewahrt und mögliche Fehlkonfigurationen vermieden werden.
Standard Admission Controllers in Kubernetes (1.18+)
Standardmäßig aktiviert Kubernetes mehrere Admission Controllers, um grundlegende Sicherheits- und Betriebsrichtlinien zu gewährleisten. Dazu gehören:
- NamespaceLifecycle
- LimitRanger
- ServiceAccount
- TaintNodesByCondition
- Priority
- DefaultTolerationSeconds
- DefaultStorageClass
- StorageObjectInUseProtection
- PersistentVolumeClaimResize
- RuntimeClass
- CertificateApproval
- CertificateSigning
- CertificateSubjectRestriction
- DefaultIngressClass
- MutatingAdmissionWebhook
- ValidatingAdmissionWebhook
- ResourceQuota
Empfohlen Admission Controllers
Zusätzlich zu den Standard-Controllern wird empfohlen, die folgenden Plugins zu aktivieren, um die Sicherheit und die Ressourcenverwaltung zu verbessern:
- PodSecurityPolicy: Setzt Sicherheitsrichtlinien für Pods durch.
- NamespaceExists: Stellt sicher, dass Ressourcen in gültigen Namespaces erstellt werden.
- AlwaysPullImages: Erzwingt Bildabrufe bei jedem Pod-Start.
- ResourceQuota: Setzt Grenzen für die Ressourcennutzung durch.
Aktivierung der Zulassungssteuerungen
Admission Controllers können im API-Server mit dem Flag --admission-control
aktiviert und konfiguriert werden.
Schlussfolgerung
Admission Controllers sind für die Durchsetzung von Richtlinien und die Gewährleistung der Sicherheit und Effizienz eines Kubernetes-Clusters unerlässlich. Durch die ordnungsgemäße Konfiguration und Aktivierung der erforderlichen Admission Controllers können Sie eine gut regulierte und sichere Umgebung aufrechterhalten. Überprüfen und aktualisieren Sie die verwendeten Admission Controllers regelmäßig, um sie an die sich ändernden Sicherheits- und Betriebsanforderungen anzupassen. Durch die Umsetzung dieser Best Practices können Sie sicherstellen, dass Ihr Kubernetes-API-Server mit den erforderlichen Einschränkungen und Schutzmaßnahmen arbeitet.