NetworkPolicies in Kubernetes bieten eine Möglichkeit, die
Kommunikation zwischen den Pods im Cluster zu regeln. Sie definieren,
welche Pods mit anderen Pods kommunizieren dürfen und welche nicht. Im
Folgenden wird eine NetworkPolicy erstellt, die den Zugriff
auf den Nginx-Service regelt.
Zur Steuerung des Netzwerkverkehrs zum Nginx Pod kann eine
NetworkPolicy wie folgt definiert werden:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: nginx-network-policy
spec:
podSelector:
matchLabels:
app: nginx
policyTypes:
- Ingress
- Egress
ingress:
- from:
- podSelector:
matchLabels:
access: nginx
ports:
- protocol: TCP
port: 80
egress:
- to:
- podSelector:
matchLabels:
access: nginx
ports:
- protocol: TCP
port: 80nginx-network-policy.app: nginx.Ingress) als auch ausgehende (Egress) Regeln
definiert werden.access: nginx
dürfen eine Verbindung aufbauen.
access: nginx aufzubauen.
Um diese NetworkPolicy auf den Nginx-Service anzuwenden,
müssen alle Pods, die auf den Nginx Service zugreifen dürfen, mit dem
entsprechenden Label (access: nginx) versehen werden. Die
NetworkPolicy sorgt dafür, dass nur Pods mit diesem Label
mit dem Nginx Pod kommunizieren können.
Für den Ingress Controller, der Verkehr an den Nginx-Service
weiterleitet, muss ebenfalls eine entsprechende
NetworkPolicy definiert werden, die sicherstellt, dass der
Ingress Controller mit dem Nginx-Pod kommunizieren kann. Dies wird
notwendig, wenn der Ingress Controller als Pod innerhalb desselben
Clusters läuft.
Die Anwendung von NetworkPolicies kann die Sicherheit
innerhalb des Clusters erheblich erhöhen, indem sie den Datenverkehr auf
autorisierte Wege beschränkt und so die Angriffsfläche für potenzielle
Sicherheitsverletzungen reduziert.