More Info:
The ability to create pods can be abused to run privileged workloads or bypass admission controls. Restrict create access to pod objects to only the subjects that require it.Risk Level
HighAddress
SecurityCompliance Standards
- CIS OKE
Triage and Remediation
- Remediation
Remediation
Manual Steps
Manual Steps
-
List all roles/clusterroles that can create pods
- Run on: any machine with kubectl access
- Command:
-
Identify which subjects are bound to those roles
- Run on: any machine with kubectl access
- For each name from step 1, get the bindings:
- Record which users, groups, and service accounts have pod create access, and in which namespaces.
-
Decide which subjects truly need pod creation capability
- For each subject from step 2, review:
- What application or team it belongs to.
- Whether it must create pods (e.g., controllers, CI/CD, autoscalers) or only needs to manage higher‑level objects (Deployments, Jobs, etc.).
- Document for each subject: “needs pod create” or “does not need pod create”.
- For each subject from step 2, review:
-
Remove unnecessary pod create verbs from roles
- Run on: any machine with kubectl access
- For each Role/ClusterRole where some or all subjects do not need pod creation:
a) If no bound subjects need pod creation, remove thecreate(and*if present) verb for pods from the rule:- In the editor, locate rules with:
and remove
create(or replace*with the minimal required verbs excludingcreate).
b) If some subjects still require pod creation but others do not, create a new limited role and rebind:
- Then remove the unnecessary subjects from the original binding via:
- In the editor, locate rules with:
-
Revalidate effective permissions after changes
- Run on: any machine with kubectl access
- For each key subject, confirm whether it can still create pods:
- Expect
nofor all subjects that do not require pod creation, andyesonly for explicitly approved subjects.
-
Periodic review and evidence collection
- Run on: any machine with kubectl access
- Capture current state for audit purposes and future reviews:
- Schedule periodic re‑runs of steps 1–5 or integrate them into CI/CD or policy-as-code to ensure ongoing minimization of pod create access.
Using kubectl
Using kubectl
create on pods. Every such role must be reviewed to confirm it’s truly needed.resources: ["pods"]orresources: ["*"]combined withverbsincluding"create"or"*".- Broad use of
apiGroups: ["*"]orresources: ["*"]where pod creation is not clearly necessary. - ClusterRoles with pod-create rights that are clearly generic (e.g.
edit,admin, custom “developer” roles) rather than narrowly scoped operational roles.
system:authenticated, developers, or many service accounts across namespaces) bound to ClusterRoles that can create pods.create to non-operational subjects or generic “developer”/“default” subjects, indicating pod creation is widely available.Interpretation guidance (manual decision):
- Acceptable: tightly scoped Roles/ClusterRoles used by:
- CI/CD or controllers that must create pods.
- Operational teams in specific namespaces where pod creation is required.
- Concerning:
- Global or semi-global roles bound to large groups (
system:authenticated, all developers). - Roles where
resources: ["*"]andverbs: ["*"]or"create"are present without a clear operational justification. - Service accounts in many namespaces that can create pods despite not being controllers.
- Global or semi-global roles bound to large groups (
Automation
Automation

