Capítulo 9.4 - Pod Security Standards
Objetivos de Aprendizaje
Al final de este capítulo, usted será capaz de:
- Comprender los Pod Security Standards (PSS)
- Aplicar los niveles de seguridad (Privileged, Baseline, Restricted)
- Configurar el admission control
- Comprender las restricciones de seguridad
- Migrar hacia Pods más seguros
- Utilizar Pod Security Policies (obsoleto)
Introducción
Los Pod Security Standards (PSS) definen tres niveles de seguridad para los Pods en Kubernetes. Sustituyen a las Pod Security Policies (obsoletas).
Niveles de Seguridad
Privileged
Sin restricciones. Permite todas las capacidades.
Casos de uso: Sistemas de bajo nivel, depuración.
Baseline
Restricciones mínimas. Impide las configuraciones más peligrosas.
Recomendado para: La mayoría de las aplicaciones.
Restricted
Restricciones máximas. Sigue las mejores prácticas de seguridad.
Recomendado para: Aplicaciones críticas, entornos sensibles.
Configuración a Nivel de Namespace
Vía Labels
apiVersion: v1
kind: Namespace
metadata:
name: production
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
Labels:
enforce: Aplica el nivel (bloquea los Pods no conformes)audit: Registra las violacioneswarn: Muestra una advertencia
Vía Admission Control
apiVersion: apiserver.config.k8s.io/v1
kind: AdmissionConfiguration
plugins:
- name: PodSecurity
configuration:
defaults:
enforce: "restricted"
enforce-version: "latest"
audit: "restricted"
audit-version: "latest"
warn: "restricted"
warn-version: "latest"
exemptions:
usernames: []
runtimeClasses: []
namespaces: ["kube-system"]
Restricciones Baseline
Ejemplos de Restricciones
- No
hostPID,hostIPC,hostNetwork - No volúmenes hostPath
- No capabilities peligrosas
- No runAsUser=0 (root)
Ejemplo: Pod Baseline
apiVersion: v1
kind: Pod
metadata:
name: baseline-pod
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: my-app:1.0
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
Restricciones Restricted
Restricciones Adicionales
runAsNonRoot: trueobligatorioseccompProfile: RuntimeDefaultobligatorio- No volúmenes hostPath
- No capabilities
readOnlyRootFilesystem: truerecomendado
Ejemplo: Pod Restricted
apiVersion: v1
kind: Pod
metadata:
name: restricted-pod
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: my-app:1.0
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
capabilities:
drop:
- ALL
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
Migración Progresiva
Paso 1: Auditoría
apiVersion: v1
kind: Namespace
metadata:
name: my-app
labels:
pod-security.kubernetes.io/audit: baseline
pod-security.kubernetes.io/warn: baseline
Resultado: Las violaciones se registran pero los Pods son aceptados.
Paso 2: Advertencia
metadata:
labels:
pod-security.kubernetes.io/warn: restricted
Resultado: Las violaciones muestran advertencias.
Paso 3: Aplicación
metadata:
labels:
pod-security.kubernetes.io/enforce: restricted
Resultado: Los Pods no conformes son rechazados.
Comandos Útiles
Verificación
# Ver los labels de seguridad
kubectl get namespace production -o yaml | grep pod-security
# Verificar la conformidad de un Pod
kubectl get pod my-pod -o yaml | grep -A 10 securityContext
# Probar un Pod
kubectl apply -f pod.yaml --dry-run=server
Buenas Prácticas
1. Comenzar con Baseline
Comience con Baseline, luego migre a Restricted.
2. Migración Progresiva
Utilice audit → warn → enforce para una migración suave.
3. Exenciones
Defina exenciones para los namespaces del sistema.
4. Documentación
Documente las razones de las exenciones.
5. Monitoreo
Supervise las violaciones para identificar problemas.
Resumen
En este capítulo, usted ha aprendido:
Pod Security Standards: Tres niveles (Privileged, Baseline, Restricted)
Configuración: Vía labels de namespace o admission control
Baseline: Restricciones mínimas, recomendado para la mayoría
Restricted: Restricciones máximas, mejores prácticas
Migración: Audit → Warn → Enforce
Buenas prácticas: Inicio progresivo, exenciones, monitoreo
Próximos Pasos
Módulo 10: Helm y Package Management
Lab 9.4: Auditoría de Seguridad
Capítulo creado el: Diciembre 2024