Skip to content

Latest commit

 

History

History
154 lines (128 loc) · 2.77 KB

pod-security-admission.md

File metadata and controls

154 lines (128 loc) · 2.77 KB

Pod Security Admission

Seit: 1.2.22 Pod Security Admission

  • 1.2.22 - ALpha - D.h. ist noch nicht aktiviert und muss als Feature Gate aktiviert (Kind)
  • 1.2.23 - Beta -> d.h. aktiviert

Vorgefertigte Regelwerke

  • privileges - keinerlei Einschränkungen
  • baseline - einige Einschränkungen
  • restricted - sehr streng

Praktisches Beispiel für Version ab 1.2.23 - Problemstellung

mkdir -p manifests
cd manifests
mkdir psa 
cd psa 
nano 01-ns.yml 
# Schritt 1: Namespace anlegen 
# vi 01-ns.yml 

apiVersion: v1
kind: Namespace
metadata:
  name: test-ns<tln>
  labels:
    pod-security.kubernetes.io/enforce: baseline
    pod-security.kubernetes.io/audit: restricted
    pod-security.kubernetes.io/warn: restricted

kubectl apply -f 01-ns.yml 
# Schritt 2: Testen mit nginx - pod 
# vi 02-nginx.yml 

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: test-ns<tln>
spec:
  containers:
    - image: nginx
      name: nginx
      ports:
        - containerPort: 80

# a lot of warnings will come up 
kubectl apply -f 02-nginx.yml
# Schritt 3:
# Anpassen der Sicherheitseinstellung (Phase1) im Container 

# vi 02-nginx.yml 

apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: test-ns<tln>
spec:
  containers:
    - image: nginx
      name: nginx
      ports:
        - containerPort: 80
      securityContext:     
        seccompProfile:    
          type: RuntimeDefault
kubectl delete -f 02-nginx.yml
kubectl apply -f 02-nginx.yml
kubectl -n test-ns<tln> get pods 
# Schritt 4: 
# Weitere Anpassung runAsNotRoot 
# vi 02-nginx.yml 
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: test-ns<tln>
spec:
  containers:
    - image: nginx
      name: nginx
      ports:
        - containerPort: 80
      securityContext:
        seccompProfile:
          type: RuntimeDefault
        runAsNonRoot: true

# pod kann erstellt werden, wird aber nicht gestartet 
kubectl delete -f 02-nginx.yml 
kubectl apply -f 02-nginx.yml 
kubectl -n test-ns<tln> get pods
kubectl -n test-ns<tln> describe pods nginx 

Praktisches Beispiel für Version ab 1.2.23 -Lösung - Container als NICHT-Root laufen lassen

  • Wir müssen ein image, dass auch als NICHT-Root laufen kann
  • .. oder selbst eines bauen (;o)) o bei nginx ist das bitnami/nginx
# vi 03-nginx-bitnami.yml 
apiVersion: v1
kind: Pod
metadata:
  name: bitnami-nginx
  namespace: test-ns<tln>
spec:
  containers:
    - image: bitnami/nginx
      name: bitnami-nginx
      ports:
        - containerPort: 80
      securityContext:
        seccompProfile:
          type: RuntimeDefault
        runAsNonRoot: true
# und er läuft als nicht root 
kubectl apply -f 03_pod-bitnami.yml 
kubectl -n test-ns<tln> get pods