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.
- Thomas Fricke
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.
Stand der Sicherheit
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