Kubernetes-Security, Teil 2: Container-Rechte verwalten mit PodSecurityPolicies

Teil 2 der Serie zu Kubernetes und Security behandelt Pod Security Policies (PSP) – diese verbinden das Linux-Erbe mit der Kubernetes-Rechteverwaltung.

Lesezeit: 5 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen

(Bild: Illus_man/Shutterstock.com)

Von
Inhaltsverzeichnis

PodSecurityPolicies (PSP) verbinden das Linux-Erbe mit der Rechteverwaltung von Kubernetes. Der erste Teil der Serie ist auf die Bedeutung der Linux Namespaces eingegangen, in diesem Teil geht es darum, die Rechte aus Kubernetes heraus zu steuern. Dafür gilt es zunächst, die Pod Security Policies zu aktivieren.

Kubernetes-Security - die Serie

In der Sicherheitsarchitektur von Kubernetes sind zahlreiche Elemente miteinander verwoben, die die Beiträge dieser Artikelstrecke jeweils vorstellen:

  • Teil 1: Von Linux geerbte Konzepte
  • Teil 2: Container-Rechte verwalten mit PodSecurityPolicies
  • Teil 3: Kubernetes Secrets für schützenswerte Daten
  • Teil 4: Berechtigungen innerhalb von Kubernetes
  • Teil 5: Sicherheit der Images aus Registrys, insbesondere DockerHub
  • Teil 6: AdmissionController, die Kubernetes-Objekte zulassen und verändern können
  • Teil 7: Anbindung peripherer Systeme mit Secrets
  • Teil 8: Kubernetes-Netzwerke
  • Teil 9: Sicherheit und Unsicherheit in externen Komponenten
  • Teil 10: Kubernetes Security Pattern, um Applikationen abzusichern

Um schnelle Fortschritte bei der Entwicklung zu erzielen, ist der Bereich Sicherheit bei der Entwicklung von Kubernetes hintenangestellt worden. Zunächst gilt es deshalb, in den Clustern die PodSecurityPolicy einzuschalten. Der ApiServer muss dazu im Argument --enable-admission-plugins einen Eintrag PodSecurityPolicy haben. Bei Minikube ist das nicht von Anfang an aktiv, dort muss die entsprechende Zeile in /etc/kubernetes/manifests/kube-apiserver.yaml etwa so aussehen:

--enable-admission-plugins=NamespaceLifecycle,LimitRanger,ServiceAccount,\ DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction, \ MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota, \
PodSecurityPolicy

In Ubuntus Microk8s ist die Aktivierung auf GitHub dokumentiert. PSP werden durch einen Admission Controller implementiert. In einem der folgenden Artikel dieser Reihe wird das Thema noch eine Rolle spielen.

Durch Eintrag in die Datei wird der API-Server sofort neu gestartet. Jetzt funktioniert erst mal nichts mehr, das Starten eines Pods wird generell abgelehnt. Wenn etwa ein Nginx-Deployment gestartet wird:

kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: default
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
EOF