Instalar varios controladores de Snyk Kubernetes en un solo clúster de Kubernetes
Pas Apicella
15 de agosto de 2022
0 minutos de lecturaKubernetes ofrece una interfaz para ejecutar sistemas distribuidos sin complicaciones. Se encarga del escalado y la conmutación por error de tus aplicaciones, proporciona patrones de implementación y mucho más. En cuanto a la seguridad, los equipos que implementan cargas de trabajo en el clúster de Kubernetes deben considerar cuáles quieren monitorear para cumplir con los requisitos de seguridad de sus aplicaciones.
Pero ¿qué pasaría si cada equipo pudiera controlar qué imágenes de contenedores se analizan y qué cargas de trabajo específicas se monitorean? Podría haber varios equipos implementando en Kubernetes, cada uno con requisitos únicos sobre lo que se monitorea. La mejor manera de resolver este caso de uso es permitir que cada equipo configure su propia integración de Snyk Kubernetes y monitoree las cargas de trabajo que necesita. Veamos cómo funciona.
Descripción general de la integración de Snyk Kubernetes
Snyk se integra con Kubernetes para que puedas importar y probar continuamente tus cargas de trabajo en ejecución e identificar vulnerabilidades en sus imágenes subyacentes, así como cualquier configuración que pueda hacerlas menos seguras. Una vez implementadas las cargas de trabajo, Snyk sigue monitoreándolas e identifica la exposición a vulnerabilidades recién descubiertas, además de otros problemas de seguridad cuando se implementan nuevos contenedores o cambia la configuración de la carga de trabajo.

Diagrama de la arquitectura de integración de Kubernetes
Cómo instalar varios controladores de Snyk en un solo clúster de Kubernetes
¡Ahora viene la parte divertida! Te guiaremos paso a paso para configurar varios controladores de Snyk en un solo clúster de Kubernetes. Estos son los pasos que seguiremos:
Configurar espacios de nombres separados
Crear una organización de Snyk para cada espacio de nombres
Instalar y configurar
snyk monitorpara el primer espacio de nombres (apples)Instalar y configurar
snyk monitorpara el segundo espacio de nombres (bananas)Verificar que las cargas de trabajo implementadas se importen automáticamente mediante la política
Implementar cargas de trabajo en bananas que se importen automáticamente mediante un archivo de política de Rego
Requisitos previos
Necesitarás una cuenta Business o Enterprise de Snyk para usar la integración de Kubernetes. Si no tienes una, puedes iniciar una prueba gratuita de nuestro plan Business. Aunque no quieras probarlo por tu cuenta, te recomiendo que sigas leyendo (puedes omitir los bloques de código) para aprender a instalar y administrar varios controladores de Snyk en un solo clúster de Kubernetes.
Un clúster de Kubernetes, como AKS, EKS, GKE, Red Hat OpenShift u otra variante compatible.
Paso 1: Configura espacios de nombres separados
En esta demostración, uso un servicio Azure AKS para mi clúster de Kubernetes. En este clúster instalaremos dos controladores de Snyk, cada uno en su propio espacio de nombres: uno en el espacio de nombres apples y otro en el espacio de nombres bananas, como se muestra en el diagrama a continuación.

Crea los espacios de nombres como se muestra a continuación:
Paso 2: Crea una organización de Snyk para cada espacio de nombres
Usar organizaciones de Snyk separadas nos permite separar el análisis de las cargas de trabajo, para que los equipos de producto puedan usar sus propias organizaciones y tener un mejor control del análisis de sus cargas de trabajo e imágenes. Puedes usar la misma organización con cada uno de los controladores de Snyk que implementemos, pero en este caso los mantendremos separados. En ambos casos, las cargas de trabajo aparecerán con una etiqueta que configuraremos al instalar los controladores de Snyk.

Nuestras nuevas organizaciones
Una para el espacio de nombres apples:

Una para el espacio de nombres bananas:

Una vez creadas, verás dos organizaciones vacías en la aplicación de Snyk. Las usaremos en breve.


En cada organización, habilita la integración de Kubernetes seleccionando la pestaña Integraciones, seleccionando Kubernetes y eligiendo Conectar. Luego, consulta la documentación de Snyk Kubernetes para completar la configuración.
Anota los ID de integración de la integración de Kubernetes de cada organización de Snyk: los necesitarás pronto. Puedes obtener el ID de integración de Kubernetes desde el ícono de configuración de la organización en la barra de navegación superior de Snyk. Luego, ve a Integraciones en la barra lateral y selecciona la integración de Kubernetes, como se muestra a continuación.

Paso 3: Instala y configura snyk monitor para el espacio de nombres apples
Ahora que configuramos nuestras organizaciones e integraciones y las conectamos al clúster, podemos configurar Snyk monitor desde una ventana de terminal.
Crearemos un archivo para suscribirnos a los eventos de las cargas de trabajo y definir los criterios de las suscripciones; instalaremos el chart de Helm de Snyk para monitorear Kubernetes y configuraremos e iniciaremos el monitor.
Crea el archivo del registro
En una terminal, crea un directorio para la organización apples y accede a él:
Crea un archivo llamado workload-events.rego con el siguiente contenido y reemplaza <APPLES_INTEGRATION_ID> por el ID de integración de la integración de Kubernetes de la organización apples.
Con esta política de Rego, le indicamos al controlador de Snyk que importe o elimine cargas de trabajo únicamente del espacio de nombres apples, siempre que el tipo de carga de trabajo de Kubernetes no sea CronJob ni Service. Para obtener más información sobre los distintos tipos de cargas de trabajo, consulta la documentación de Snyk.
workload-events.rego
Agrega los charts de Helm de Snyk a tu repositorio
Accede a tu entorno de Kubernetes y ejecuta el siguiente comando para agregar el repositorio de Snyk Charts a Helm. Lo necesitaremos cuando instalemos este chart de Helm en breve.
Crea la configuración de Snyk monitor e implementa el chart de Helm
Usar un secreto de Kubernetes nos permite ejecutar el proceso sin exponer credenciales en texto plano. En estos pasos crearemos y usaremos el secreto al implementar la configuración de la organización apples.
Crea el secreto snyk-monitor para el espacio de nombres apples y reemplaza <APPLES_INTEGRATION_ID> por el ID de integración de Kubernetes de la aplicación de Snyk de apples. En esta demostración usamos Docker Hub público para nuestro registro de contenedores, que no requiere credenciales para acceder a imágenes públicas. Para obtener más información sobre cómo usar registros privados de contenedores, consulta la documentación de controladores de Snyk.
Ahora crea un configmap para almacenar el archivo de política de Rego que le indicará a snyk-monitor qué importar o eliminar automáticamente del espacio de nombres apples:
A continuación, instala snyk-monitor en el espacio de nombres apples y reemplaza <APPLES_INTEGRATION_ID> por el ID de integración de la aplicación de Snyk de apples en el comando:
Nota:La etiqueta «AKS K8s - Apples» te permite encontrar las cargas de trabajo importadas en la interfaz de usuario de Snyk, como verás pronto.
Por último, verifica que todo esté en funcionamiento (este comando supone que instalaste jq; si no, omite la parte | jq de la instrucción):
En este punto, tenemos un controlador de Snyk instalado en el espacio de nombres apples con un nombre único. Más adelante mostraremos cómo este controlador de Snyk importa automáticamente las cargas de trabajo según lo que configuramos, a medida que se implementan en el espacio de nombres apples del clúster de Kubernetes. Por ahora, quizá notes que, si actualizas la página de proyectos de la organización apples, se ha analizado el propio Snyk monitor. Esto se debe a que le indicamos que analizara cargas de trabajo del tipo Deployment en el espacio de nombres apples.

Paso 4: Instala y configura snyk monitor para el espacio de nombres bananas
Crea un directorio llamado bananas y accede a él:
Ahora crea un archivo llamado workload-events.rego con el siguiente contenido y reemplaza <BANANAS_INTEGRATION_ID> por el ID de integración de Kubernetes de la aplicación de Snyk de bananas:
A continuación, crea el secreto snyk-monitor para el espacio de nombres bananas y reemplaza BANANAS_INTEGRATION_ID por el ID de integración de Kubernetes de la aplicación de Snyk de bananas:
Luego, crea un configmap para almacenar el archivo de política de Rego que le indicará a snyk-monitor qué importar o eliminar automáticamente del espacio de nombres bananas:
Instala snyk-monitor en el espacio de nombres bananas y reemplaza ¤BANANAS_INTEGRATION_ID> por el ID de integración de Kubernetes de la aplicación de Snyk de bananas:
Por último, verifica que todo esté en funcionamiento:
Paso 5: Verifica que las cargas de trabajo implementadas se importen automáticamente mediante la política
A continuación, implementaremos cargas de trabajo en el espacio de nombres apples para asegurarnos de que se importen automáticamente. Empezaremos con una aplicación Spring Boot que implementaremos en Kubernetes como se muestra a continuación.
Crea un archivo llamado springbootemployee-K8s.yaml con el siguiente contenido:
Luego, impleméntalo:
Verifica que, después de unos minutos, se analice la carga de trabajo y se importe automáticamente a la organización apples de Snyk, tal como lo indica el controlador de Snyk en el espacio de nombres apples.

Paso 6: Implementa cargas de trabajo en bananas: importación automática mediante un archivo de política de Rego
Crea un archivo llamado snyk-boot-web-deployment.yaml con el siguiente contenido
Implementa de la siguiente manera:
Después de unos 3 minutos, verifica que se analice la carga de trabajo y se importe automáticamente a la organización bananas de Snyk en la aplicación, tal como lo indica el controlador de Snyk en el espacio de nombres bananas.

Extra: Consulta los registros de los controladores de Snyk
La configuración de Kubernetes y los archivos YAML pueden ser algo complicados. Si tienes problemas para configurar tus monitores, puede ser útil consultar los registros de cada controlador de Snyk, como se muestra en los siguientes fragmentos de comandos:
Controlador de Snyk de Apples
Controlador de Snyk de Bananas
Resumen
En esta publicación, mostramos cómo implementar varios controladores de Snyk en un solo clúster de Kubernetes, cada uno monitoreando su propio espacio de nombres. Los controladores se comunican con la API de Kubernetes para determinar qué cargas de trabajo (por ejemplo, Deployment, ReplicationController, CronJob, etc., según se definen en el archivo de política de Rego) se ejecutan en el clúster, encontrar sus imágenes asociadas y analizarlas directamente en el clúster para detectar vulnerabilidades.
Prueba estos pasos en tu propio clúster de Kubernetes. Para hacerlo, inicia una prueba gratuita de un plan Snyk Business.
Recursos para obtener más información
Ahora que aprendiste lo fácil que es configurar la integración de Kubernetes con Snyk, aquí tienes algunos enlaces útiles para comenzar tu camino hacia la seguridad de contenedores.
Cómo configurar Snyk Container para la importación y eliminación automáticas de proyectos de cargas de trabajo de Kubernetes
Aprende Rego con el excelente curso tutorial de Styra
Protege la infraestructura desde el origen
Snyk automatiza la seguridad y el cumplimiento de IaC en los flujos de trabajo, y detecta recursos con desviaciones de configuración y recursos faltantes.



