| name | cis-ocp-v160-5.2.1 |
| description | Minimize the admission of privileged containers (Manual) |
| category | cis-openshift |
| version | 1.6.0 |
| author | cyberstrike-official |
| tags | ["cis","openshift","kubernetes","redhat","policies","security-context-constraints"] |
| cis_id | 5.2.1 |
| cis_benchmark | CIS Red Hat OpenShift Container Platform Benchmark v1.6.0 |
| tech_stack | ["kubernetes","openshift","redhat"] |
| cwe_ids | [] |
| chains_with | [] |
| prerequisites | [] |
| severity_boost | {} |
CIS Red Hat OpenShift Container Platform Benchmark v1.6.0 - Control 5.2.1
Profile Applicability
Description
Do not generally permit containers to be run with the securityContext.privileged flag set to true.
Rationale
Privileged containers have access to all Linux Kernel capabilities and devices. A container running with full privileges can do almost everything that the host can do. This flag exists to allow special use-cases, like manipulating the network stack and accessing devices.
There should be at least one Security Context Constraint (SCC) defined which does not permit privileged containers.
If you need to run privileged containers, this should be defined in a separate SCC and you should carefully check RBAC controls to ensure that only limited service accounts and users are given permission to access that SCC.
Impact
Pods defined with spec.containers[].securityContext.privileged: true will not be permitted.
Audit Procedure
The set of SCCs that admission uses to authorize a pod are determined by the user identity and groups that the user belongs to. Additionally, if the pod specifies a service account, the set of allowable SCCs includes any constraints accessible to the service account.
Admission uses the following approach to create the final security context for the pod:
- Retrieve all SCCs available for use.
- Generate field values for security context settings that were not specified on the request.
- Validate the final settings against the available constraints.
If a matching set of constraints is found, then the pod is accepted. If the request cannot be matched to an SCC, the pod is rejected.
A pod must validate every field against the SCC.
You can use the following command to list all SCCs that do not allow privileged containers:
oc get scc -o json | jq '.items[] | select(.allowPrivilegedContainer==false)
| .metadata.name'
Verify that at least one SCC is returned.
Remediation
Create an SCC that sets allowPrivilegedContainer to false and take it into use by assigning it to applicable users and groups.
Default Value
By default, the following SCCs do not allow users to create privileged containers:
"anyuid"
"hostaccess"
"hostmount-anyuid"
"hostnetwork"
"hostnetwork-v2"
"machine-api-termination-handler"
"nonroot"
"nonroot-v2"
"restricted"
"restricted-v2"