Security Context — security settings for Pods and containers.
1apiVersion: v12kind: Pod3metadata:4 name: secure-pod5spec:6 securityContext:7 runAsNonRoot: true8 runAsUser: 10009 runAsGroup: 100010 fsGroup: 100011 fsGroupChangePolicy: OnRootMismatch12 supplementalGroups: [2000]13 seccompProfile:14 type: RuntimeDefault15 containers:16 - name: app17 image: nginx:latest18 securityContext:19 allowPrivilegeEscalation: false20 readOnlyRootFilesystem: true21 runAsNonRoot: true22 runAsUser: 100023 capabilities:24 drop:25 - ALL26 add:27 - NET_BIND_SERVICE28 seLinuxOptions:29 level: "s0:c123,c456"30 type: "my_app_t"31 user: "system_u"32 role: "system_r"33 windowsOptions:34 runAsUserName: "ContainerUser"35 gmsaCredentialSpecName: "my-gmsa"36 gmsaCredentialSpec: ""37 supplementalGroupsGroupPolicy: Merge38 volumeMounts:39 - name: tmp40 mountPath: /tmp41 - name: nginx-cache42 mountPath: /var/cache/nginx43 volumes:44 - name: tmp45 emptyDir: {}46 - name: nginx-cache47 emptyDir: {}
1# Check security context2kubectl get pod secure-pod -o jsonpath='{.spec.securityContext}' | jq3kubectl get pod secure-pod -o jsonpath='{.spec.containers[0].securityContext}' | jq45# Verify user6kubectl exec secure-pod -- id7kubectl exec secure-pod -- whoami89# Check capabilities10kubectl exec secure-pod -- cat /proc/1/status | grep Cap1112# Check seccomp profile13kubectl get pod secure-pod -o jsonpath='{.spec.securityContext.seccompProfile}' | jq1415# Verify read-only filesystem16kubectl exec secure-pod -- touch /test 2>&1
Pod-level Settings:
Container-level Settings: