Detección de Amenazas en Kubernetes con Kubescape
Se puede utilizar como una herramienta de línea de comandos, como un operador dentro de un clúster, como parte de un proceso de CI/CD, o en muchos más
Resolviendo análisis de riesgo, malas configuraciones, seguridad, en nuestro Cluster. Una manera de salvar un tiempo valioso, como administrador.
No es novedad que Kubernetes es parte de nuestro dia a dia, que pocas empresas están fuera de la contenerización de aplicativos. Estos ambientes son complejos y nos acarrean un montón de desafíos en temas de Seguridad.
Para tener una postura fuerte es crítico implementar controles que nos aporten visibilidad sobre posibles vulnerabilidades o malas configuraciones en nuestro ambiente.
Vamos a instalar Kubescape, junto con Prometheus y Grafana para construir una solución que pueda llevar los hallazgos a otro nivel. Si nunca montaste observabilidad en tu cluster, te dejo esta entrada sobre armamos algo básico.
Instalación de Cliente de Kubescape
Con este comando podemos instalar el cliente de Kubescape.
curl -s https://raw.githubusercontent.com/kubescape/kubescape/master/install.sh | /bin/bash
Vamos a realizar el primer scanneo, para ver nuestro punto de partida. Utilizaré el framework de NSA y filtrare algunos namespaces. Hay bastantes frameworks para seleccionar en base a tus necesidades de cumplimiento.
kubescape scan framework nsa --exclude-namespaces kube-system,kube-public
Lo bueno de Kubescape es que podemos agregarlo a nuestro pipeline para realizar escaneos hasta en manifiestos. Podemos tener un enfoque proactivo o reactivo.
Instalación en el Cluster Kubernetes
Ahora llegó el momento de la mejora continua, nada mejor que un monitoreo continuo. Ya tenemos nuestro cluster con Prometheus & Grafana, ahora integremos a Kubescape. Si no te dejo el comando para agregar el stack.
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
kubectl create namespace prometheus
helm install -n prometheus kube-prometheus-stack prometheus-community/kube-prometheus-stack --set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false,prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
Nota: Si ya tenemos instalado Prometheus, deberíamos hacer algunas parametrizaciones como las que dejo abajo con un upgrade sobre el helm, si es que fue tu manera de desplegar.
--set prometheus.prometheusSpec.podMonitorSelectorNilUsesHelmValues=false,prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false
Existe cantidad de tutoriales sobre como acceder a grafana, no voy a detenerme ahi. Aca te nuestro namespace de observabilidad que lo he llamado prometheus.
Ahora vamos a desplegar nuestro kubescape-operator sobre el namespace kubescape.
helm upgrade kubescape kubescape/kubescape-operator -n kubescape --install --set capabilities.prometheusExporter=enable --set configurations.prometheusAnnotations=enable
Uala!
Utilización en Grafana
Vamos a ingresar a grafana, para comenzar con nuestras búsquedas.
Ya empezamos a ver las métricas del escaneo continuo. Ahora tenemos un potente dashboard, para ir llenando nuestro backlog de trabajo. Les voy a compartir un Dashboard que hizo la comunidad, para ir jugando. Simplemente deben importar este código. Se ve algo asi.
No hace falta que comente la potencia de la herramienta y la sencillez que nos regala a la hora de poder ser asertivos a la hora de resolver inconvenientes de nuestra infraestructura Kubernetes. Espero que les sirve.