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.
lunes, 25 de noviembre de 2024
Hablemos de: Seguridad en Kubernetes
Suscribirse a:
Comentarios de la entrada (Atom)
No hay comentarios.:
Publicar un comentario