Objetivo: aplicar políticas baseline y restricted por Namespace con Pod Security Admission (PSA).
1) Conceptos rápidos
- Modes:
enforce,warn,audit. - Niveles:
privileged(no recomendado),baseline,restricted.
2) Etiquetas por Namespace
kubectl label ns prod \
pod-security.kubernetes.io/enforce=restricted \
pod-security.kubernetes.io/enforce-version=latest \
pod-security.kubernetes.io/warn=baseline \
pod-security.kubernetes.io/warn-version=latest
3) Comprobar
kubectl run test --image=alpine --restart=Never -n prod \
--overrides='{"spec":{"securityContext":{"runAsUser":0}}}'
Debería ser bloqueado en enforce=restricted.
4) Buenas prácticas
- Usa
restricteden entornos sensibles;baselineen desarrollo. - Documenta excepciones mediante labels y revisiones periódicas.
- Complementa con
NetworkPoliciesyRBACmínimo.
YAML de ejemplo
apiVersion: v1
kind: Namespace
metadata:
name: restricted-ns
labels:
pod-security.kubernetes.io/enforce: "restricted"
pod-security.kubernetes.io/enforce-version: "latest"