For AI agents: A markdown version of this page is available at https://docs.datadoghq.com/security/code_security/iac_security/iac_rules/kubernetes-not-limited-capabilities-for-pod-security-policy.md.
A documentation index is available at /llms.txt.
Limits capabilities for PodSecurityPolicy. This rule checks that PodSecurityPolicy resources define spec.requiredDropCapabilities, which specifies Linux capabilities that must be dropped to reduce container privileges. A MissingAttribute issue is reported if this field is not defined.
Compliant Code Examples
apiVersion:policy/v1beta1kind:PodSecurityPolicymetadata:name:restrictedannotations:seccomp.security.alpha.kubernetes.io/allowedProfileNames:'docker/default,runtime/default'apparmor.security.beta.kubernetes.io/allowedProfileNames:'runtime/default'seccomp.security.alpha.kubernetes.io/defaultProfileName:'runtime/default'apparmor.security.beta.kubernetes.io/defaultProfileName:'runtime/default'spec:privileged:false# Required to prevent escalations to root.allowPrivilegeEscalation:false# This is redundant with non-root + disallow privilege escalation,# but we can provide it for defense in depth.requiredDropCapabilities:- ALL# Allow core volume types.volumes:- 'configMap'- 'emptyDir'- 'projected'- 'secret'- 'downwardAPI'# Assume that persistentVolumes set up by the cluster admin are safe to use.- 'persistentVolumeClaim'hostNetwork:falsehostIPC:falsehostPID:falserunAsUser:# Require the container to run without root privileges.rule:'MustRunAsNonRoot'seLinux:# This policy assumes the nodes are using AppArmor rather than SELinux.rule:'RunAsAny'supplementalGroups:rule:'MustRunAs'ranges:# Forbid adding the root group.- min:1max:65535fsGroup:rule:'MustRunAs'ranges:# Forbid adding the root group.- min:1max:65535readOnlyRootFilesystem:false
Non-Compliant Code Examples
apiVersion:policy/v1beta1kind:PodSecurityPolicymetadata:name:restrictedannotations:seccomp.security.alpha.kubernetes.io/allowedProfileNames:'docker/default,runtime/default'apparmor.security.beta.kubernetes.io/allowedProfileNames:'runtime/default'seccomp.security.alpha.kubernetes.io/defaultProfileName:'runtime/default'apparmor.security.beta.kubernetes.io/defaultProfileName:'runtime/default'spec:privileged:false# Required to prevent escalations to root.allowPrivilegeEscalation:false# Allow core volume types.volumes:- 'configMap'- 'emptyDir'- 'projected'- 'secret'- 'downwardAPI'# Assume that persistentVolumes set up by the cluster admin are safe to use.- 'persistentVolumeClaim'hostNetwork:falsehostIPC:falsehostPID:falserunAsUser:# Require the container to run without root privileges.rule:'MustRunAsNonRoot'seLinux:# This policy assumes the nodes are using AppArmor rather than SELinux.rule:'RunAsAny'supplementalGroups:rule:'MustRunAs'ranges:# Forbid adding the root group.- min:1max:65535fsGroup:rule:'MustRunAs'ranges:# Forbid adding the root group.- min:1max:65535readOnlyRootFilesystem:false
1
2
rulesets:- Kubernetes # Rules to enforce .
Request a personalized demo
Get Started with Datadog
Ask AI
AI-generated responses may be inaccurate. Verify important info.