1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
| cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: non-root-pod spec: securityContext: runAsUser: 1000 runAsGroup: 3000 fsGroup: 2000 containers: - name: app image: nginx:alpine securityContext: allowPrivilegeEscalation: false readOnlyRootFilesystem: false EOF
kubectl exec non-root-pod -- id
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: readonly-pod spec: containers: - name: app image: nginx:alpine securityContext: readOnlyRootFilesystem: true volumeMounts: - name: nginx-run mountPath: /var/run - name: nginx-cache mountPath: /var/cache/nginx volumes: - name: nginx-run emptyDir: {} - name: nginx-cache emptyDir: {} EOF
kubectl exec readonly-pod -- touch /test-file
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: Pod metadata: name: caps-pod spec: containers: - name: app image: busybox:1.36 command: ["sleep", "3600"] securityContext: capabilities: drop: - ALL add: - NET_BIND_SERVICE - CHOWN EOF
kubectl delete pod non-root-pod readonly-pod caps-pod
|