Saltar al contenido principal

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 violaciones
  • warn: 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: true obligatorio
  • seccompProfile: RuntimeDefault obligatorio
  • No volúmenes hostPath
  • No capabilities
  • readOnlyRootFilesystem: true recomendado

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