Kubernetes API ACL
3 Minuten Lesezeit
Mit der ACL-Extension (Access Control List) können Sie einschränken, aus welchen Quellnetzwerken der Kubernetes-API-Server Ihres Clusters erreichbar ist. Standardmäßig ist der API-Server aus jedem Netzwerk erreichbar, und der Zugriff ist ausschließlich durch Authentifizierung und Autorisierung geschützt. Ist die ACL-Extension aktiviert, werden Anfragen zusätzlich anhand ihrer Quell-IP-Adresse gefiltert: Nur Anfragen aus den von Ihnen freigegebenen IP-Bereichen (CIDRs) – sowie aus einigen wenigen Standardnetzwerken von plusserver (siehe Hinweis unten) – erreichen den API-Server. Alle anderen Anfragen werden auf Netzwerkebene abgewiesen.
Bei der Extension handelt es sich um die Open-Source-Gardener ACL Extension; sie wird in der Shoot-Spec Ihres Clusters konfiguriert.
Funktionsweise
Wenn die Extension aktiviert ist, wird jede Verbindung zum API-Server anhand Ihrer Liste freigegebener CIDRs geprüft:
- Anfragen aus einem freigegebenen Netzwerk erreichen den API-Server wie gewohnt und erfordern weiterhin gültige Anmeldedaten – die ACL ersetzt weder Authentifizierung noch Autorisierung (RBAC).
- Anfragen aus allen anderen Netzwerken werden abgewiesen, bevor sie den API-Server erreichen. Ein blockierter Client kann überhaupt keine Verbindung aufbauen; er erhält keinen „forbidden“-Fehler von Kubernetes. Ein plötzlich fehlschlagender Verbindungsaufbau – und nicht etwa ein Authentifizierungsfehler – ist daher ein typisches Anzeichen dafür, dass die ACL den Client blockiert.
Clusterinterne Kommunikation ist davon nie betroffen: Die clustereigenen Nodes und Pods behalten immer Zugriff auf den API-Server, unabhängig davon, welche Netzwerke Sie freigegeben haben. Sie müssen daher nur die externen Netzwerke angeben, aus denen Sie den Cluster administrieren (zum Beispiel die ausgehenden IP-Adressen Ihres Büros oder Ihres VPNs).
Konfiguration
Bearbeiten Sie die Shoot-Spec Ihres Clusters wie unter Shoot-Spec beschrieben und fügen Sie die ACL-Extension als neuen Eintrag unter spec.extensions hinzu – zusätzlich zu den Extensions, die Sie bereits nutzen:
spec:
extensions:
- type: acl
providerConfig:
rule:
action: ALLOW
type: remote_ip
cidrs:
- "203.0.113.0/24"
- "198.51.100.7/32"
Nachdem Sie die Änderung gespeichert haben und die Reconciliation des Clusters abgeschlossen ist, können nur noch die aufgeführten CIDRs – sowie die Standard-IP-Bereiche von plusserver – den API-Server erreichen.
Felder
| Feld | Wert | Beschreibung |
|---|---|---|
action | ALLOW | Es werden ausschließlich Freigaben unterstützt. Allen nicht aufgeführten Quellnetzwerken wird der Zugriff verweigert. |
type | remote_ip | Der Match-Typ. Verwenden Sie remote_ip, damit die Regel auf die tatsächliche Quell-IP-Adresse des Clients matcht. |
cidrs | Liste von CIDRs | Die externen Netzwerke, die den API-Server erreichen dürfen, in CIDR-Notation (z. B. 203.0.113.0/24). Verwenden Sie das Suffix /32, um einen einzelnen Host freizugeben. |
Hinweis – Standardnetzwerke von plusserver
Zusätzlich zu den von Ihnen konfigurierten CIDRs sind immer einige wenige interne Netzwerke von plusserver freigegeben, damit plusserver die verwaltete Control Plane Ihres Clusters weiterhin betreiben, überwachen und betreuen kann. Diese Bereiche werden automatisch hinzugefügt, ihre Freigabe kann nicht aufgehoben werden. Wenn Sie die genauen Bereiche für eine Firewall-Regel oder ein Sicherheitsaudit benötigen, wenden Sie sich bitte an den plusserver-Support.
Einschränkungen
- Eine Regel pro Cluster. Die Extension unterstützt genau eine
ALLOW-Regel pro Cluster. Sie können weder mehrere Regeln nochDENY-Regeln definieren; tragen Sie alle freizugebenden Netzwerke im Feldcidrsdieser einen Regel ein.
Beschränkung aufheben
Um den API-Server wieder aus jedem Netzwerk erreichbar zu machen, bearbeiten Sie die Shoot-Spec, entfernen Sie den Eintrag acl aus spec.extensions und warten Sie die Reconciliation des Clusters ab.