Control de Seguridad para Contenedores
Marco integral de seguridad para tecnologías de contenedores y orquestación.
Quieres aprender más?
Descarga el Kit de Ciberseguridad.
📋 Información General
Documento: Control de Seguridad para Contenedores
Versión: 1.0.0
Fecha: Enero 2025
Clasificación: Confidencial
Audiencia: Equipos de DevOps, SRE, desarrollo y arquitectura de DivisionCero
🎯 Propósito
Establecer los controles y prácticas de seguridad obligatorias para el uso de tecnologías de contenedores en DivisionCero, incluyendo Docker, Podman, Kubernetes y otras plataformas de orquestación. Esta política garantiza que los entornos contenerizados mantengan los más altos estándares de seguridad desde el desarrollo hasta la producción.
🏢 Alcance
Esta política aplica a:
- Todos los contenedores utilizados en entornos de desarrollo, testing, staging y producción
- Imágenes de contenedores, tanto propias como de terceros
- Plataformas de orquestación como Kubernetes, Docker Swarm o similares
- Registros de contenedores públicos y privados
- Redes y almacenamiento asociados a contenedores
- Pipelines de CI/CD que utilicen contenedores
- Monitoreo y logging de entornos contenerizados
📚 Definiciones
- Contenedor: Unidad de software que empaqueta código y sus dependencias
- Imagen de Contenedor: Plantilla inmutable para crear contenedores
- Registro de Contenedores: Repositorio para almacenar y distribuir imágenes
- Orquestador: Sistema para automatizar despliegue y gestión de contenedores
- Runtime de Contenedores: Software que ejecuta contenedores (Docker, containerd, CRI-O)
- Namespace: Mecanismo de aislamiento de recursos del kernel
- Control Groups (cgroups): Limitación y aislamiento de recursos del sistema
- Pod: Unidad básica de despliegue en Kubernetes que contiene uno o más contenedores
🛡️ Política
Principios Fundamentales
- Inmutabilidad: Las imágenes de contenedores deben ser inmutables y versionadas
- Principio de Menor Privilegio: Contenedores deben ejecutarse con privilegios mínimos
- Aislamiento: Separación estricta entre cargas de trabajo mediante namespaces
- Visibilidad: Monitoreo y logging completo de actividades de contenedores
- Hardening: Configuración segura de todos los componentes del stack de contenedores
1. Seguridad de Imágenes de Contenedores
1.1 Construcción de Imágenes Seguras
Controles Obligatorios:
- Utilizar imágenes base oficiales y actualizadas de proveedores confiables
- Implementar builds multi-stage para reducir superficie de ataque
- No incluir secretos, credenciales o información sensible en las imágenes
- Ejecutar contenedores como usuario no privilegiado (non-root)
- Minimizar componentes instalados (principio de superficie mínima)
Dockerfile Seguro:
# ✅ Usar imagen base oficial y específica
FROM node:18.19-alpine3.19
# ✅ Crear usuario no privilegiado
RUN addgroup -g 1001 -S nodejs && \
adduser -S nextjs -u 1001
# ✅ Instalar solo dependencias necesarias
COPY package*.json ./
RUN npm ci --only=production && npm cache clean --force
# ✅ Cambiar a usuario no privilegiado
USER nextjs
# ✅ Configurar directorio de trabajo seguro
WORKDIR /app
COPY --chown=nextjs:nodejs . .
EXPOSE 3000
CMD ["npm", "start"]
1.2 Escaneo de Vulnerabilidades
Requerimientos:
- Escaneo automático de todas las imágenes antes del despliegue
- Uso de herramientas como Trivy, Clair, Anchore o Snyk
- Umbral máximo de vulnerabilidades críticas: 0
- Umbral máximo de vulnerabilidades altas: 5
- Reporte automático de vulnerabilidades al equipo de seguridad
Herramientas Recomendadas:
# Escaneo con Trivy
trivy image --severity HIGH,CRITICAL myapp:latest
# Escaneo con Docker Scout
docker scout cves myapp:latest
# Integración en CI/CD
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
aquasec/trivy:latest image --exit-code 1 --severity HIGH,CRITICAL myapp:latest
2. Seguridad de Registros de Contenedores
2.1 Gestión de Registros
Controles Obligatorios:
- Usar registros privados para imágenes internas
- Implementar autenticación robusta para acceso a registros
- Habilitar firmado digital de imágenes (Docker Content Trust)
- Configurar políticas de retención y limpieza
- Auditar accesos y descargas de imágenes
2.2 Políticas de Admisión
Kubernetes Admission Controllers:
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: disallow-latest-tag
spec:
validationFailureAction: enforce
background: false
rules:
- name: require-image-tag
match:
any:
- resources:
kinds:
- Pod
validate:
message: "Latest tag is not allowed"
pattern:
spec:
containers:
- image: "!*:latest"
3. Seguridad del Runtime de Contenedores
3.1 Configuración Segura
Docker/Podman Security:
# ✅ Ejecutar sin privilegios
docker run --user 1001:1001 --read-only --tmpfs /tmp myapp:latest
# ✅ Limitar capacidades
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE myapp:latest
# ✅ Configurar límites de recursos
docker run --memory=512m --cpus=1.0 --pids-limit=100 myapp:latest
# ✅ Usar redes personalizadas
docker network create --driver bridge myapp-network
docker run --network=myapp-network myapp:latest
3.2 Aislamiento de Contenedores
Controles Requeridos:
- Usar namespaces de usuario para aislamiento adicional
- Configurar SELinux/AppArmor para control de acceso obligatorio
- Implementar seccomp para filtrado de syscalls
- Usar filesystem read-only cuando sea posible
4. Seguridad de Kubernetes
4.1 Configuración del Clúster
API Server Security:
apiVersion: v1
kind: Config
clusters:
- cluster:
server: https://k8s-api.divisioncero.com:6443
certificate-authority-data: <CA_CERT>
name: production-cluster
users:
- name: admin-user
user:
client-certificate-data: <CLIENT_CERT>
client-key-data: <CLIENT_KEY>
contexts:
- context:
cluster: production-cluster
user: admin-user
name: admin-context
4.2 Políticas de Seguridad de Pods
Pod Security Standards:
apiVersion: v1
kind: Namespace
metadata:
name: production-apps
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
---
apiVersion: v1
kind: Pod
metadata:
name: secure-app
namespace: production-apps
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1001
fsGroup: 1001
seccompProfile:
type: RuntimeDefault
containers:
- name: app
image: myapp:v1.2.3
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: ["ALL"]
resources:
requests:
memory: "128Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
4.3 Network Policies
Micro-segmentación de Red:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all-ingress
namespace: production-apps
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-app-to-db
namespace: production-apps
spec:
podSelector:
matchLabels:
app: web-app
policyTypes:
- Egress
egress:
- to:
- podSelector:
matchLabels:
app: database
ports:
- protocol: TCP
port: 5432
5. Gestión de Secretos
5.1 Kubernetes Secrets
Mejores Prácticas:
apiVersion: v1
kind: Secret
metadata:
name: app-secrets
namespace: production-apps
type: Opaque
data:
database-password: <base64-encoded-password>
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: secure-app
spec:
template:
spec:
containers:
- name: app
image: myapp:v1.2.3
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: app-secrets
key: database-password
5.2 Integración con Gestores de Secretos
HashiCorp Vault Integration:
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: vault-database
spec:
provider: vault
parameters:
vaultAddress: "https://vault.divisioncero.com"
roleName: "database-role"
objects: |
- objectName: "database-password"
secretPath: "secret/data/database"
secretKey: "password"
6. Monitoreo y Logging
6.1 Observabilidad de Contenedores
Métricas Requeridas:
- Uso de CPU, memoria y red por contenedor
- Número de reinicios y fallos de contenedores
- Tiempo de inicio de contenedores
- Vulnerabilidades detectadas en runtime
- Violaciones de políticas de seguridad
6.2 Logging de Seguridad
Eventos a Auditar:
apiVersion: v1
kind: ConfigMap
metadata:
name: audit-policy
data:
audit-policy.yaml: |
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
namespaces: ["production-apps"]
verbs: ["create", "update", "patch", "delete"]
resources:
- group: ""
resources: ["pods", "services", "secrets"]
- level: Request
verbs: ["create", "update", "patch"]
resources:
- group: "rbac.authorization.k8s.io"
resources: ["roles", "rolebindings", "clusterroles", "clusterrolebindings"]
7. Respuesta a Incidentes en Contenedores
7.1 Detección de Amenazas
Herramientas de Runtime Security:
- Falco para detección de comportamiento anómalo
- Sysdig Secure para visibilidad en runtime
- Aqua Security para protección integral
- Twistlock/Prisma Cloud para compliance
7.2 Procedimientos de Respuesta
Escalamiento Automático:
- Detección: Sistema de monitoreo detecta anomalía
- Aislamiento: Contenedor sospechoso se aísla automáticamente
- Análisis: Forense automático del contenedor
- Notificación: Alerta inmediata al equipo de seguridad
- Remediación: Reinicio con imagen limpia si es necesario
🎯 Roles y Responsabilidades
DevOps Team Lead
- Implementar y mantener políticas de seguridad de contenedores
- Supervisar escaneado de vulnerabilidades
- Gestionar configuración segura de orquestadores
Site Reliability Engineers (SRE)
- Monitorear seguridad en runtime de contenedores
- Responder a incidentes relacionados con contenedores
- Mantener visibilidad y observabilidad
Development Teams
- Seguir prácticas de construcción segura de imágenes
- Implementar principios de seguridad en aplicaciones contenerizadas
- Participar en revisiones de seguridad de contenedores
CISO (Chief Information Security Officer)
- Aprobar políticas de seguridad de contenedores
- Revisar métricas y KPIs de seguridad
- Asegurar cumplimiento con estándares de la industria
📊 Métricas y KPIs
Métricas de Seguridad
- Tiempo Medio de Detección (MTTD): < 5 minutos para amenazas críticas
- Tiempo Medio de Respuesta (MTTR): < 15 minutos para incidentes críticos
- Cobertura de Escaneo: 100% de imágenes escaneadas antes del despliegue
- Vulnerabilidades Críticas: 0 vulnerabilidades críticas en producción
- Compliance Score: > 95% de cumplimiento con políticas de seguridad
Reportes Requeridos
- Semanal: Reporte de vulnerabilidades detectadas y remediadas
- Mensual: Análisis de tendencias de seguridad en contenedores
- Trimestral: Revisión de efectividad de controles de seguridad
- Anual: Evaluación completa de madurez de seguridad en contenedores
🔄 Procedimientos
Procedimiento de Despliegue Seguro
-
Pre-despliegue:
- Escaneo de vulnerabilidades de imagen
- Validación de configuración de seguridad
- Revisión de políticas de admisión
-
Despliegue:
- Aplicación de políticas de seguridad
- Configuración de monitoreo
- Validación de controles de runtime
-
Post-despliegue:
- Verificación de seguridad en runtime
- Monitoreo continuo de amenazas
- Actualizaciones automáticas de seguridad
Procedimiento de Gestión de Vulnerabilidades
- Detección: Escaneo automático identifica vulnerabilidad
- Evaluación: Análisis de impacto y riesgo
- Priorización: Clasificación según criticidad
- Remediación: Actualización de imagen base o aplicación de parche
- Validación: Verificación de corrección efectiva
- Despliegue: Actualización en entornos afectados
📚 Estándares y Referencias
Marcos de Referencia
- NIST Cybersecurity Framework
- CIS Kubernetes Benchmark
- OWASP Container Security Top 10
- ISO 27001/27002
Herramientas Aprobadas
- Escaneo de Vulnerabilidades: Trivy, Snyk, Anchore
- Runtime Security: Falco, Sysdig, Aqua Security
- Gestión de Secretos: HashiCorp Vault, AWS Secrets Manager
- Monitoreo: Prometheus, Grafana, ELK Stack
🚨 Incumplimiento
Clasificación de Violaciones
- Crítico: Contenedor con vulnerabilidades críticas en producción
- Alto: Violación de políticas de seguridad de runtime
- Medio: Incumplimiento de mejores prácticas de construcción
- Bajo: Falta de documentación o configuración subóptima
Consecuencias
- Crítico/Alto: Remoción inmediata del contenedor, investigación formal
- Medio: Corrección requerida en 48 horas
- Bajo: Corrección requerida en 1 semana
📅 Revisión y Actualización
Esta política será revisada semestralmente o cuando ocurran cambios significativos en:
- Tecnologías de contenedores utilizadas
- Amenazas de seguridad identificadas
- Regulaciones o estándares aplicables
- Incidentes de seguridad relacionados con contenedores
Próxima revisión programada: Julio 2025
Aprobado por:
María González - CISO
Fecha: Enero 2025
Revisado por:
Carlos Mendoza - DevOps Team Lead
Ana Rodríguez - SRE Manager
Fecha: Enero 2025
¿Te ha resultado útil esta página?
Última modificación: 25 de agosto de 2025