Seguridad en Kubernetes – microservicios, macroamenazas. Aparentemente migrar tu aplicación a un modelo de microservicios no ha solucionado todos sus problemas. ¿Quién podría haber previsto esto?
Kubernetes es una plataforma que ha revolucionado el mundo del desarrollo de aplicaciones, desde ciclos de desarrollo a arquitectura de escalabilidad. Todos los frentes que antes gestionaba una flota de máquinas virtuales tan grande como la factura de EC2 del mes, ahora vive dentro de un grupo de contenedores que aumentan y reducen capacidad (y costes!) según te sea necesario. El mundo ideal del pago por uso. Pero como siempre es el caso, un nuevo método de diseño implica un nuevo frente de ciberataque.
Exploremos qué puede ocurrir en un modelo de microservicios, y cómo podemos enterarnos y evitarlo.
¿Por qué el aislamiento por microservicios no detiene los ataques?
Esto es parcialmente cierto. Como todo lo que nos encontramos en la industria, buena parte depende de su gestión. Por ejemplo, al eliminar el método tradicional del monolito, un atacante con acceso de terminal a tu servidor web (o contenedor web, en este caso) no tiene acceso automático a tu backend de base de datos, ya que está en un contenedor completamente distinto. ¿Por qué no evita esto que accedan a tu base de datos? Bien, el problema es que tu aplicación web sigue necesitando acceder a ese backend de base de datos, con lo cual debe tener las credenciales de acceso montadas en el sistema para poder utilizarlas.
¿Entonces el concepto de microservicios es inútil y debo volver al monolito?
No exactamente. Sí que es cierto que sigue existiendo un peligro de ataque potencial en el escenario de microservicios, pero es muy distinto al modelo de ataque contra un sistema monolítico. No ha solucionado todos tus problemas, y no es peor que el modelo anterior, simplemente el paradigma de seguridad ha cambiado. Requiere más capas de acceso llegar a ejecutar un ataque, lo cual implica que tu modelo de defensa de cebolla, capa a capa, es más potente que la alternativa. Piénsalo como un compromiso que requiere que aprendas un escenario nuevo, a cambio de que tu aplicación tenga un potencial de escalado muy superior por un coste más ajustado.
Me gusta la idea. ¿Puedo usar las herramientas de defensa que conozco?
A nivel de aplicación, como por ejemplo tu aplicación web, las herramientas son las mismas que ya conoces y amas. Un WordPress es un WordPress, lo instales en un stack LAMP de una Raspberry Pi o en un cluster infinitamente escalable. A nivel de infraestructura la historia cambia. Stack nuevo, defensa nueva. Si utilizas un cluster de Kubernetes gestionado por un proveedor de cloud como AWS, seguramente ni siquiera puedas acceder de forma trivial a los nodos por SSH. El peligro de acceso a recursos por fuerza bruta desaparece, pero en cambio, ¿y si localiza el endpoint de API de Kubernetes de tu cluster y consigue levantar un contenedor malicioso? ¿Crees que tu sistema de alertas actual te lo diría?
Qué partes del paradigma debería centrarme en proteger?
Kubernetes es un orquestrador de contenedores que en primera instancia puede parecer algo inabordable en términos de complejidad, pero si lo separamos en sus apartados simples y manejables con un objetivo concreto (como los microservicios!) se acaba descubriendo que hay dos pilares principales: recursos (lo que despliegas en tu cluster), e infraestructura (cómo configuras tu cluster). Abordemos estos temas uno por uno.
El primero, más orientado al lado del desarrollador, cubre qué debemos revisar cuando hablamos de diseño de aplicaciones y cómo las desplegamos. Por ejemplo, Kubernetes configura por defecto una red única donde todos los pods pueden comunicarse con todos los demás pods. Si no permites que tu flota de servidores compartan una sola subred plana, tampoco deberías darle esta capacidad a tus microservicios. Revisa a qué secretos y credenciales pueden acceder tus recursos de producción y desarrollo. Comprueba de qué es capaz la Service Account de tu pod de webserver, quizá te lleves una sorpresa con su alcance. Un buen control de limitación de permisos te permitirá aprovechar la escalabilidad de Kubernetes sin tener que sacrificar compartimentalización y seguridad.
Por otra parte está la confguración de tu cluster. Si en vez de entrar a través de un shell en tu wordpress un atacante localiza tu API endpoint de acceso al cluster, plantéate qué es capaz de hacer con él con tu configuración actual. Si tienes activa la autenticación anónima por defecto, tu atacante puede dar un primer paso de recogida de información muy útil para preparar ataques. Toda la información descubierta puede ser utilizada en tu contra.
Debería revisar todo esto, pero es una gran tarea de hacer a mano…
La comunidad Open Source te guarda las espaldas. No tienes que pasar recurso por recurso revisando a riesgo de que se pase algo que no has visto, o que no comprendes como vulnerabilidad. Deja que herramientas especializadas hagan el trabajo tedioso por ti y céntrate en hacer tu infraestructura más segura. La lista es extensa y con todo tipo de utilidades según lo que necesites.
¿Son seguras las imágenes que salen de tu CICD? Snyk y Trivy te darán la información de CVE’s que necesites de forma sencilla y categorizada. ¿Dudas sobre qué están haciendo tus stacks de terceros? Falco está al tanto de los accesos sospechosos a recursos y te alertará de ellos. ¿Dudas de si tu cluster está bien configurado? kube-bench te enseñará qué configuraciones suponen un problema de seguridad, o incluso qué posibilidades de mejora tienes. La lista de formas de proteger tu nueva infraestructura es muy larga y muchas herramientas merecen un vistazo, sean gratuitas o de pago.
Aprender estas herramientas es una gran curva de aprendizaje
Geko Consultoría Cloud, podemos quitarte ese peso de encima. En vez de dedicar horas importantes de tu trabajo a aprender en profundidad una serie de herramientas constantemente cambiantes, puedes delegar al equipo Geko la tarea de descubrir esta información y de darte reportes sobre los que puedas actuar. Te convence la idea? Tengamos una charla y veamos cómo podemos darte más tranquilidad mientras trabajas en lo que importa.