-
Bug
-
Resolution: Not a Bug
-
Major
-
None
-
4.20
-
None
-
Quality / Stability / Reliability
-
False
-
-
None
-
Important
-
None
-
x86_64
-
None
-
None
-
Proposed
-
None
-
None
-
None
-
None
-
None
-
None
-
None
-
None
Description of problem:
The scc validation failed when creating a pod with user namespace as non-admin user
Version-Release number of selected component (if applicable):
4.20.0-0.ci-2025-08-12-232211
How reproducible:
always
Steps to Reproduce:
1. create a custom scc as following: allowHostDirVolumePlugin: false allowHostIPC: false allowHostNetwork: false allowHostPID: false allowHostPorts: false allowPrivilegeEscalation: true // set it true allowPrivilegedContainer: false allowedCapabilities: - NET_BIND_SERVICE apiVersion: security.openshift.io/v1 defaultAddCapabilities: null fsGroup: type: MustRunAs ranges: //set the ranges [0,65534] - min: 0 max: 65534 groups: [] kind: SecurityContextConstraints metadata: annotations: include.release.openshift.io/ibm-cloud-managed: "true" include.release.openshift.io/self-managed-high-availability: "true" include.release.openshift.io/single-node-developer: "true" kubernetes.io/description: restricted-v2 denies access to all host features and requires pods to be run with a UID, and SELinux context that are allocated to the namespace. This is the most restrictive SCC and it is used by default for authenticated users. On top of the legacy 'restricted' SCC, it also requires to drop ALL capabilities and does not allow privilege escalation binaries. It will also default the seccomp profile to runtime/default if unset, otherwise this seccomp profile is required. creationTimestamp: "2025-06-25T07:58:43Z" generation: 1 name: nested-podman priority: null readOnlyRootFilesystem: false requiredDropCapabilities: //not set it runAsUser: type: MustRunAsRange ranges: - min: 0 max: 65534 seLinuxContext: type: MustRunAs seLinuxOptions: type: container_engine_t //set it container_engine_t seccompProfiles: - runtime/default supplementalGroups: type: MustRunAs ranges: - min: 0 max: 65534 userNamespaceLevel: RequirePodLevel // set it RequirePodLevel users: [ testuser-49 ] //set the user name testuser-49 volumes: - configMap - csi - downwardAPI - emptyDir - ephemeral - persistentVolumeClaim - projected - secret 2.add the scc to the non-admin user testuser-49 % oc adm policy add-scc-to-user nested-podman testuser-49 3. login the cluster as non-admin user testuser-49 % oc login -u testuser-49 -p XXX Login successful. 4. create a new project % oc new-project podman-demo 5. edit the ns podman-demo as admin user (set "0/65534" for openshift.io/sa.scc.uid-range and openshift.io/sa.scc.supplemental-groups) # oc get ns podman-demo -o yaml apiVersion: v1 kind: Namespace metadata: annotations: openshift.io/description: "" openshift.io/display-name: "" openshift.io/requester: testuser-49 openshift.io/sa.scc.mcs: s0:c27,c19 openshift.io/sa.scc.supplemental-groups: 0/65534 openshift.io/sa.scc.uid-range: 0/65534 security.openshift.io/MinimallySufficientPodSecurityStandard: baseline creationTimestamp: "2025-08-14T07:09:40Z" .... 6. create a pod as user testuser-49 (set seLinuxOptions.level the same value as it in ns podman-demo): apiVersion: v1 kind: Pod metadata: name: nested-podman-1 annotations: io.kubernetes.cri-o.Devices: "/dev/fuse,/dev/net/tun" openshift.io/scc: nested-podman spec: hostUsers: false # user namespace containers: - name: nested-podman image: docker.io/lyman9966/baseline-nested-container:v1.0 args: - sleep - "1000000" securityContext: runAsUser: 1000 seLinuxOptions: type: "container_engine_t" level: "s0:c27,c19" procMount: Unmasked capabilities: add: - "NET_BIND_SERVICE"
Actual results:
6. The pod can't be created, the scc validation failed: provider nested-podman: .containers[0].seLinuxOptions.type: Invalid value: "container_engine_t": must be , the prompt : Error from server (Forbidden): error when creating "pod-user-namespace-demo.yaml": pods "nested-podman-1" is forbidden: unable to validate against any security context constraint: [provider "anyuid": Forbidden: not usable by user or serviceaccount, provider restricted-v2: .containers[0].seLinuxOptions.type: Invalid value: "container_engine_t": must be , provider "restricted-v3": Forbidden: not usable by user or serviceaccount, provider "restricted": Forbidden: not usable by user or serviceaccount, provider nested-podman: .containers[0].seLinuxOptions.type: Invalid value: "container_engine_t": must be , provider "nested-container": Forbidden: not usable by user or serviceaccount, provider "nonroot-v2": Forbidden: not usable by user or serviceaccount, provider "nonroot": Forbidden: not usable by user or serviceaccount, provider "hostmount-anyuid": Forbidden: not usable by user or serviceaccount, provider "hostmount-anyuid-v2": Forbidden: not usable by user or serviceaccount, provider "machine-api-termination-handler": Forbidden: not usable by user or serviceaccount, provider "hostnetwork-v2": Forbidden: not usable by user or serviceaccount, provider "hostnetwork": Forbidden: not usable by user or serviceaccount, provider "hostaccess": Forbidden: not usable by user or serviceaccount, provider "insights-runtime-extractor-scc": Forbidden: not usable by user or serviceaccount, provider "node-exporter": Forbidden: not usable by user or serviceaccount, provider "privileged": Forbidden: not usable by user or serviceaccount]
Expected results:
6. the pod can be created successfully
Additional info:
In step 6, the pod can be created successfully as admin user, but run podman command failed with error inside the container: "locks in /libpod_rootless_lock_1000: permission denied" (I also try using the image "quay.io/cgruver0/che/ocp-4-17-userns-tp:latest" from your demo: https://asciinema.org/a/721318, but it also hit this error) # oc exec -it pod/nested-podman-2 -- /bin/bash [podman@nested-podman-2 podman]$ id uid=1000(podman) gid=1000(podman) groups=1000(podman) [podman@nested-podman-2 podman]$ podman ps -a Error: failed to open 2048 locks in /libpod_rootless_lock_1000: permission denied