Non-root execution
pod_non_root
(boolean, default false): Run the Pod as non-root (UID/GID/FSGroup 65532). Applies pod-wide filesystem ownership.container_non_root
(boolean, default false): Run the main container as non-root (UID 65532) and disallow privilege escalation.
- Enable both flags for consistent non-root behavior and fewer permission surprises when writing to volumes.
- Some package managers (e.g., Alpine
apk add
) require root. To runapk add
inside the container, you have options:- Use
before_script
with a base image that already includes needed tools, or - Temporarily run the main container with root by leaving
container_non_root
disabled for setup, or - Build a custom image with dependencies pre-installed (recommended for production reproducibility).
- Use
Linux capabilities
Default policy: drop ALL capabilities. Add back only what you need. If you specifycap_drop
explicitly, you override the default; to keep drop ALL
and add back minimal caps, leave cap_drop
unset and only use cap_add
.
cap_drop
(string[]): Capabilities to drop. If omitted,ALL
is dropped by default.cap_add
(string[]): Capabilities to add back.allow_privilege_escalation
: always set tofalse
.- Seccomp profile:
RuntimeDefault
.
Network isolation and egress lockdown
Ingress isolation (Default: Enabled)
All inter-VM communication is blocked by default to prevent sandbox-to-sandbox access. This provides strong isolation between different sandboxes running in the same cluster. Key points:- Ingress blocking: VM sandboxes cannot communicate with each other by default
- Administrative access preserved:
kubectl exec
andk7 shell
still work normally (they use the Kubernetes API, not pod networking) - System services allowed: Traffic from
kube-system
namespace is permitted for cluster functionality - No configuration needed: This security feature is enabled by default for all sandboxes
Egress lockdown and whitelisting
Useegress_whitelist
to control outbound traffic. The policy is applied after the container becomes Ready so before_script
runs with open egress.
Behavior:
- Omit
egress_whitelist
: egress open (external internet allowed). []
: full egress block (DNS to CoreDNS allowed on TCP/UDP 53).["CIDR", ...]
: allow only listed CIDR blocks (+ DNS to CoreDNS).
Network Policy Details:
- Ingress: Blocked by default (inter-VM isolation) - system services and kubectl exec still work
- DNS allowance: When locking down egress, DNS to CoreDNS inside the cluster is always allowed
- Administrative access:
kubectl exec
,k7 shell
, and API operations bypass network policies