Categorías
automatizacion devsecops Hacking Networking Services - Software

5 plugins imprescindibles para administrar y securizar Kubernetes

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:

1- RBAC-Tool

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.

2- Access-Matrix

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

3- np-viewer

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.

4- ksniff y capture

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

5- Stern

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.

Categorías
automatizacion devsecops Hacking

Cómo administrar tu cluster de Kubernetes con Krew

Demostración en vídeo de este post

Kubernetes no es una tecnología fácil de dominar, por ese motivo resulta conveniente primero, aprender muy bien los conceptos fundamentales y su arquitectura, y luego, las herramientas que giran entorno a su ecosistema. Si has tenido que gestionar un cluster de K8S, ya sea on-premise o en alguno de los tantos proveedores en la nube que se encuentran disponibles, lo más probable es que hayas tenido que trabajar con «kubectl», es la herramienta por excelencia para hacer cualquier tipo de operación en Kubernetes.

Aunque el comando kubectl funciona estupendamente y es fundamental aprender a usarlo, para ciertas operaciones se queda corto y es por ese motivo que en esta ocasión quiero hablaros de Krew.
En cualquier sistema basado en Linux has utilizado gestores de paquetes como «apt», «yum», «packman» o «apk», son utilidades que te permiten gestionar software. Krew funciona igual que estas utilidades pero para gestionar plugins de Kubernetes. Te permite instalar en tu cluster de Kubernetes cualquiera de los más de 200 plugins soportados, de forma simple y rápida.
El hecho de usar Krew no significa que tengas que olvidarte de kubectl, de hecho, Krew es en si mismo un plugin que funciona sobre kubectl.

¿Cómo instalo Krew en mi cluster de K8S?

Evidentemente, el primer requisito que debes cumplir es tener un cluster de Kubernetes en ejecución y tener instalada la herramienta kubectl, si tienes esto, lo cierto es que el procedimiento que sigue a continuación es muy sencillo, basta con seguir las instrucciones que se encuentran disponibles en el «quickstart» del proyecto, que puedes consultar aquí

En un sistema basado en Linux, basta con ejecutar el comando que ves en la siguiente imagen y luego, dependiendo de la distribución de Linux que utilices, añadir la ruta del binario en el fichero .bashrc o .zshrc

Si el proceso de instalación se ha llevado a cabo correctamente, verás en la terminal el siguiente mensaje, indicando que todo ha ido bien y que ahora puedes empezar a utilizar la herramienta por medio de kubectl

Ahora, puedes ejecutar el comando «kubectl krew» para las opciones que se encuentran disponibles en el complemento.

¿Cómo usar Krew y qué opciones se encuentran disponibles?

Su uso es muy intuitivo, basta con ejecutar  «kubectl krew» y el comando que quieres lanzar. Algunos de los más interesantes y que normalmente usarás, son los siguientes:

info: Te permite obtener información detallada de un plugin concreto
list: Te enseña los plugins instalados
update: Para actualizar la copia de complementos que se encuentra almacenada localmente. Si hay un complemento nuevo en el repositorio central, se actualiza la lista de complementos disponibles automáticamente.
upgrade: A diferencia del comando «update», con «upgrade» se realiza una actualización de todos los complementos instalados
search: Recibe como parámetro el nombre del complemento y enseña su estado (si está instalado o no).
index: Este comando permite añadir o eliminar repositorios de complementos para Kubernetes. Por defecto, la herramienta viene configurada con el indice oficial del proyecto.

Cuando usas esta herramienta, lo más habitual es listar los complementos y luego, seleccionar el que te interese para ver más detalles sobre su funcionamiento

Si ejecutas el comando «kubectl krew search» sin ningún argumento, aparecerá la lista completa de los complementos que se pueden instalar el cluster, lo cual viene bien para ver cuáles resultan interesantes en un momento dado y probarlos.

Finalmente, para instalar un complemento se ejecuta el comando «kubectl krew install <plugin>«, solamente hace falta indicar el nombre del complemento y la herramienta se encargará del resto.

Como se puede apreciar en la imagen anterior, se instala el complemento, se enseña su uso básico y a dónde dirigirse para obtener información detallada. Además, se enseña un mensaje importante, el cual indica que los complementos que se instalan desde el index oficial, son desarrollados por terceros y que el equipo de Krew no ha realizado ningún tipo de comprobación de seguridad sobre ellos, por lo que es recomendable saber exactamente qué se está instalando por motivos de seguridad. Aunque lo cierto es que muchos de los complementos disponibles en Krew son bastante conocidos y, las empresas o comunidades que los desarrollan, suelen tener precaución a la hora de crear estos componentes.
A partir de este punto, es necesario aprender a utilizar cada plugin, leer la documentación oficial y ver si realmente merece la pena tenerlo instado en nuestro cluster.
Precisamente, en el siguiente post hablaré de algunos de los complementos en K8S que son especialmente interesantes para seguridad y DevSecOps

Un saludo y Happy Hack!
Adastra.