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