Demostración en vídeo de este post:
En el post anterior sobre cómo administrar tu cluster de Kubernetes con Krew, he explicado el uso de este gestor de complementos en K8S y ahora, en este post, vamos a ver 5 plugins que considero imprescindibles para la administración y securización de un cluster.
Sin más preámbulos, son estos:
Cuando se trata de la gestión de accesos mediante roles (Role-Based Access Control), contar con esta herramienta resulta fundamental. El motivo de esto, es que la gestión de estos objetos se puede complicar mucho en la medida en la que el cluster va creciendo. Gracias a este complemento, se simplifica muchísimo la creación y gestión de políticas RBAC en el cluster de K8S.
Con RBAC-Tool, se pueden realizar consultas sobre «quién puede» acceder a los recursos del entorno y verificar si estos accesos son correctos, además, cuenta con una opción para generar una imagen en formato PNG con todas las políticas de seguridad que se han aplicado en el entorno.
Se trata de otro complemento que se puede instalar fácilmente con Krew y que permite generar una matriz con los recursos a los que se puede acceder en un namespace. Genera una tabla que indica el nombre, clase, namespace y CRUD para el recurso indicado. De esta manera, es posible visualizar si el usuario con el que se ejecuta el comando tiene más permisos de los que debería. Se puede ejecutar sobre un namespace concreto y se puede filtrar por tipo de recurso y «verb», que es la operación que nos interesa consultar (create, get, list, watch, update, etc).
Es una herramienta que permite visualizar la topología red de un clúster de Kubernetes. Ejecutando este complemento se pueden ver las conexiones entre pods, servicios y otros recursos dentro de un clúster en un formato gráfico.
Dado que la información que enseña es muy concisa, ayuda a comprender y visualizar como se comunican los PODs dentro de un cluster, independiente del complemento CNI utilizado.
Un beneficio de seguridad del complemento np-viewer es que ayuda a solucionar problemas de red dentro de un clúster. Por ejemplo, si hay problemas de conectividad entre pods o servicios, este complemento ayuda a detectar dichos problemas ya que enseña las conexiones existentes entre esos recursos y las políticas de red aplicadas.
Ksniff sirve para capturar y analizar el tráfico de red en un clúster de Kubernetes, funciona como cualquier otro sniffer de red como Wireshark o TCPDump, con la diferencia de que se ejecuta dentro del cluster. Se puede usar para solucionar problemas de red, detectar patrones de tráfico y realizar comprobaciones de seguridad.
Con este complemento es posible capturar y analizar el tráfico sin tener que acceder directamente a los nodos de un clúster, lo cual puede ser útil en situaciones en las que no se tiene acceso directo o no se quiere trabajar sobre dichas máquinas.
Con sniff se puede mejorar la seguridad de un clúster de Kubernetes ya que permite identificar problemas y vulnerabilidades relacionadas con la red, además, a diferencia de Wireshark o TCPDump, está diseñado para entornos K8S, en donde la comunicación se puede realizar entre servicios, PODs, despliegues, etc.
Se trata de un complemento interesante, desafortunadamente, en versiones superiores a Kubernetes 1.24 no funciona correctamente.
Dado que sniff es un complemento que no funciona correctamente en versiones actualizadas de K8S, la alternativa es el complemento «capture», el cual se encarga de capturar el tráfico durante un período de tiempo determinado y, cuando dicho tiempo finaliza, genera un fichero de captura que se puede abrir posteriormente con la herramienta sysdig-inspect. No obstante, hay que tener en cuenta que para ejecutar este complemento se deben tener privilegios altos en el cluster. Una se genera el fichero por parte del complemento en el sistema host, se puede analizar con la utilidad sysdig-inspect, lo cual se puede hacer fácilmente levantando un contenedor Docker de la siguiente forma
docker run -d -v /path/to/captures:/captures -p8080:3000 sysdig/sysdig-inspect:latest
Se trata de un complemento de kubectl que funciona de manera muy similar a ‘tail -f’ en Linux. A diferencia de kubectl log -f, que tiene algunas limitaciones, Stern permite filtrar por el ID del pod o del contenedor, además, soporta expresiones regulares.
Puede ser útil para operaciones de DevSecOps, ya que permite observar la actividad de cada uno de los componentes del cluster, como por ejemplo, los procesos de autenticación que se llevan a cabo en un tiempo determinado (por ejemplo, los últimos 20 minutos).
kubectl stern -t –since 20m auth
En el listado de complementos que se pueden instalar con Krew hay más de 200 a la fecha de redactar este post, por lo que hay bastantes más que son interesantes. En este artículo simplemente me he enfocado en aquellos que son muy útiles para las actividades de DevSecOps que se realizan sobre un cluster de Kuberntes.
Espero que te sea útil y, si conoces algún otro complemento que consideres importante o necesario para la administración de un cluster, por favor, indícalo en los comentarios.
Un saludo y Happy Hack!
Adastra.