Kubernetes
Segurança
CloudNative
RBAC
NetworkPolicies
Falco
OPA
DevSecOps

Seguridad nativa de la nube: protección de las infraestructuras de Kubernetes

Seguridad nativa de la nube: protección de las infraestructuras de Kubernetes

Kubernetes aportó flexibilidad, pero también un nuevo conjunto de vectores de ataque. La seguridad debe integrarse en el proceso, desde la creación de la imagen hasta la ejecución en el clúster.

Principales capas de seguridad

  • Supply-Chain, buscando vulnerabilidades en imágenes Docker].
  • Control de acceso (RBAC), permisos mínimos por cuenta de servicio.
  • Políticas de red, NetworkPolicy para aislar pods.
  • Runtime Security, Falco, OPA Gatekeeper para detectar comportamientos anómalos.
  • Seguridad de datos, Secretos cifrados con KMS, cifrado de volúmenes.

Lista de verificación de seguridad de Kubernetes

  • [] Habilite PodSecurityPolicy o Pod Security Standards.
  • [] Defina Roles y RoleBindings con el principio de privilegio mínimo.
  • [] Aplique NetworkPolicy para limitar el tráfico dentro del espacio de nombres.
  • Escanee imágenes con Trivy o Clair en CI.
  • Implementar OPA Gatekeeper para políticas de validación.
  • [] Configurar Falco para monitorear llamadas al sistema sospechosas.
  • [] Rotar Secretos regularmente.
  • [] Auditar registros de API Server con política de auditoría.

Ejemplo de RBAC restringido

apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: prod name: read-only-role rules: - apiGroups: [""] resources: ["pods", "services", "configmaps"] verbs: ["get", "list", "watch"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: read-only-binding namespace: prod subjects: - kind: ServiceAccount name: app-sa namespace: prod roleRef: kind: Role name: read-only-role apiGroup: rbac.authorization.k8s.io

Políticas de red simples

apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-all-except-frontend namespace: prod spec: podSelector: {} policyTypes: - Ingress - Egress ingress: - from: - podSelector: matchLabels: app: frontend

Escaneo de imágenes en CI

## .gitlab-ci.yml stages: - scan - build - deploy scan_image: stage: scan image: aquasec/trivy:latest script: - trivy image --severity HIGH,CRITICAL myapp:latest

Monitoreo del tiempo de ejecución con Falco

apiVersion: apps/v1 kind: DaemonSet metadata: name: falco namespace: kube-system spec: selector: matchLabels: app: falco template: metadata: labels: app: falco spec: containers: - name: falco image: falcosecurity/falco:latest securityContext: privileged: true volumeMounts: - name: devfs mountPath: /host/dev - name: procfs mountPath: /host/proc - name: sysfs mountPath: /host/sys volumes: hostPath: path: /proc - name: sysfs hostPath: path: /sys

Conclusión

La seguridad en Kubernetes es un proceso continuo. Al aplicar capas de defensa, desde la creación de imágenes hasta las políticas de tiempo de ejecución, se reduce drásticamente la superficie de ataque y se aumenta la confianza en los entornos de producción.


¿Qué prácticas de seguridad ha adoptado ya en su clúster? ¡Comparte en los comentarios!

Lea también