Saltar al contenido principal

Lab 9.3 - Pod Security Standards

Objetivos del Lab​

Al final de este laboratorio, usted será capaz de:

  • Comprender los Pod Security Standards (PSS).
  • Aplicar políticas de seguridad a nivel de namespace.
  • Probar los diferentes niveles (privileged, baseline, restricted).
  • Comprender las restricciones de seguridad.

Duración Estimada​

45-60 minutos

Requisitos Previos​

  • kubectl instalado y configurado.
  • Cluster Kubernetes 1.23+ (para PSS).
  • Conocimientos sobre Pod Security (Capítulo 9.3).

Parte 1: Comprender los Pod Security Standards​

Kubernetes define tres niveles de seguridad:

  • privileged: Sin restricciones (desactivado por defecto).
  • baseline: Restricciones mínimas para prevenir vulnerabilidades conocidas.
  • restricted: Restricciones estrictas siguiendo las mejores prácticas.

Parte 2: Aplicación al Namespace​

Paso 2.1: Crear un Namespace con PSS​

Cree un namespace con el nivel baseline:

kubectl create namespace pss-test

Aplique el Pod Security Standard:

kubectl label namespace pss-test pod-security.kubernetes.io/enforce=baseline
kubectl label namespace pss-test pod-security.kubernetes.io/audit=baseline
kubectl label namespace pss-test pod-security.kubernetes.io/warn=baseline

Verifique:

kubectl get namespace pss-test --show-labels

Parte 3: Prueba con Baseline​

Paso 3.1: Crear un Pod Compatible con Baseline​

Cree pod-baseline.yaml:

apiVersion: v1
kind: Pod
metadata:
name: pod-baseline
namespace: pss-test
spec:
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
securityContext:
runAsNonRoot: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL

Aplique:

kubectl apply -f pod-baseline.yaml

Parte 4: Prueba con Restricted​

Paso 4.1: Cambiar el Nivel a Restricted​

Cambie el nivel a restricted:

kubectl label namespace pss-test pod-security.kubernetes.io/enforce=restricted --overwrite

Paso 4.2: Probar un Pod No Compatible​

Cree pod-non-compliant.yaml:

apiVersion: v1
kind: Pod
metadata:
name: pod-non-compliant
namespace: pss-test
spec:
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
# Falta securityContext requerido para restricted

Intente crear el Pod:

kubectl apply -f pod-non-compliant.yaml

El Pod debería ser rechazado con un error de seguridad.


Parte 5: Pod Compatible con Restricted​

Cree pod-restricted.yaml:

apiVersion: v1
kind: Pod
metadata:
name: pod-restricted
namespace: pss-test
spec:
securityContext:
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: busybox:1.35
command: ["sleep", "3600"]
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 1000
capabilities:
drop:
- ALL

Aplique:

kubectl apply -f pod-restricted.yaml

Parte 6: Limpieza​

kubectl delete pod pod-baseline -n pss-test
kubectl delete pod pod-restricted -n pss-test
kubectl delete namespace pss-test

Resumen del Lab​

En este laboratorio, usted aplicó los Pod Security Standards a nivel de namespaces. Probó los diferentes niveles de seguridad y comprendió las restricciones.


Próximos Pasos​

El último laboratorio de este módulo le mostrará cómo realizar una auditoría de seguridad.

Lab 9.4: Auditoría de Seguridad


Lab creado el: Diciembre 2024