DEV Community

Guillermo Garcia
Guillermo Garcia

Posted on • Originally published at ahioros.info on

Hablemos de: Seguridad en Kubernetes

Vamos a dividir en antes del despliegue y en Kubernetes.

Antes del Despliegue

  1. Escaneo de las imágenes de contenedores
  • Durante CI.
  • Escaneo constante del registry de imagenes.

Herramientas:

  • snyk.
  • sysdig.
  • Sonarqube.
  • Trivy.
  1. Que el servicio de la imgen lo ejecute un usuario de servicio (non-root)

Nota: Esto lo podemos sobreescribir en kubernetes usando spec.securityContext.runAsUser: 1000 o spec.allowPrivilegeEscalation: false

En Kubernetes

  1. Manejo usuarios y permisos

Usa RBAC, ClusterRole, ServiceAccount y siempre usa la regla de menor privilegio.

  1. Políticas de red

Aplica NetworkPolicy para limitar la comunicación entre pods, no quieres que un pod de front se comunique con un pod de database, se debe comunicar con el backend solamente, por mencionar un ejemplo.

Nota: Usa la regla del mínimo acceso permitido.

Herramientas:

  • calico
  • weave Net

También puedes usar herramientas a nivel de aplicación, usando un service mesh ya hemos hablado de dos, Linkerd e Istio.

Herramientas:

  • Istio
  • Linkerd
  1. Cifrado de tráfico, mTLS entre Servicios

Esto se resuelve usando un service mesh, solo tienes que habilitarlo.

  1. Seguridad y cifrado de Secrets

Habilita el cifrado usando el recurso EncryptionConfiguration. Pero todavía necesitamos algo para manejar las llaves cifradas, aquí nos apoyamos de herramientas de terceros como AWS KMS, Google KMS, Vault de HashiCorp,etc. o incluso te puede funcionar algo como pass si estás on-premise.

  1. Seguridad en etcd

Si estas administrando etcd ponlo detrás de un firewall, cifra toda la informacion en etcd.

  1. Backup y Restore

En este caso me refiero a la data de tu(s) aplicacion(es) que están corriendo en kubernetes.

  • Realiza backups de tus aplicaciones regularmente.
  • Guarda los backups en un lugar seguro.
  • Hagan pruebas de sus backups para ver que estén funcionando correctamente en un ambiente controlado, incluso pueden automatizar estos tests para que se ejecuten cada cierto tiempo.
  1. Define y Aplica Políticas de seguridad

Por ejemplo:

  • No permitas ejecutar contenedores como root.
  • Cada pod debe tener su política de red.
  • Los backups se realizan cada día a X hora.

Algunas herramientas que te pueden ayudar son:

  • Open Policy Agent.
  • Kyverno.
  1. Disaster Recovery

Define estrategias y mecanismos para una recuperación ante un desastre y sobre todo automatiza.

Define también hacer pruebas para que todo el equipo sepa qué hacer en caso de uno y poder ajustar la estrategia de recuperación, entre mayor conocimiento tengan menor tiempo les tomará en ejecutar la recuperación y menor tiempo afectaran la experiencia del usuario.

Top comments (0)