lunes, 25 de noviembre de 2024

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.

2. 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.

2. 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](https://www.ahioros.info/2024/10/service-mesh-linkerd.html) e [Istio](https://www.ahioros.info/2024/10/service-mesh-istio.html).

	Herramientas:

  - Istio
  - Linkerd

3. Cifrado de tráfico, mTLS entre Servicios

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

4. 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.

5. Seguridad en etcd

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

6. 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.

7. 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.

8. 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.

No hay comentarios.: