Encuentra y corrige vulnerabilidades en tu pipeline de CI/CD con Snyk y Harness
Pas Apicella
Martin Ansong
10 de diciembre de 2021
0 minutos de lecturaCuando DevOps surgió hace más de diez años, el objetivo principal era cerrar las brechas entre los equipos de desarrollo y operaciones. Para lograrlo, se incorporó la automatización en los procesos de diseño, creación, prueba e implementación de aplicaciones.
Pero, a medida que los equipos de desarrollo siguen entregando software con mayor rapidez y frecuencia, a los equipos de seguridad les resulta difícil mantenerse al día. A menudo, se convierten en el cuello de botella del pipeline de entrega. Por eso, cada vez es más importante incorporar la seguridad desde el inicio del proceso de DevOps y adoptar una cultura de DevSecOps.
Integrar la plataforma de seguridad de Snyk, diseñada para desarrolladores, en el flujo de trabajo unificado del pipeline de entrega de Harness garantiza que las pruebas de seguridad y cumplimiento formen parte de cada lanzamiento. Así puedes evitar que las aplicaciones con dependencias y código vulnerables lleguen a producción. Con herramientas modernas como Snyk y Harness, puedes encontrar, corregir y remediar problemas mediante un pipeline de CI/CD, y mitigar los riesgos para el negocio sin afectar tu capacidad para lanzar software rápidamente.
Cómo empezar a usar Snyk
Snyk es una plataforma de seguridad para desarrolladores que facilita a los equipos encontrar, priorizar y corregir vulnerabilidades de seguridad en el código, las dependencias, los contenedores y la infraestructura como código. Se integra directamente en las herramientas, los flujos de trabajo y los pipelines de automatización de desarrollo.
Gracias a la inteligencia líder del sector en aplicaciones y seguridad, Snyk pone la experiencia en seguridad al alcance de todos los desarrolladores.
Empezar a usar Snyk es tan sencillo como registrarte para obtener una cuenta gratis.
Cómo empezar a usar Harness
Harness es la primera plataforma de entrega de software del sector que usa IA para simplificar tus procesos de DevOps: CI, CD, Feature Flags, gestión de costos en la nube y mucho más.
Harness te permite crear implementaciones complejas en minutos con plantillas reutilizables, lo que te ahorra tiempo y estrés. Con Harness, puedes crear pipelines en minutos.
Empezar a usar Harness es tan sencillo como visitar harness.io y crear una cuenta de prueba gratis.
Evita que las vulnerabilidades pasen por el proceso de compilación e implementación
La mejor manera de demostrar el poder combinado de Snyk y Harness es con una guía práctica que puedes configurar y ejecutar por tu cuenta. En este ejemplo, usaremos Snyk para mostrar cómo evitar que las vulnerabilidades pasen por el proceso de compilación e implementación al agregar pruebas automatizadas de Snyk a un flujo de trabajo de Harness.
Usaremos el siguiente repositorio de GitHub: https://github.com/mansong1/springbootemployee-api
Si quieres seguir los pasos, necesitarás lo siguiente:
Este tutorial será más útil si antes completaste lo siguiente con Harness:
Si completaste o revisaste lo anterior, ya aprendiste a configurar un flujo de trabajo de CI en Harness.
Siete pasos para ejecutar pruebas de Snyk en Harness
Paso 1: Crea un token de API de Snyk como secreto
Necesitas un token de API de Snyk para ejecutar pruebas con Snyk CLI. Si eres cliente empresarial, puedes configurar cuentas de servicio y crear un token a través de Snyk App. Si tienes una cuenta de Snyk que no es empresarial, incluido nuestro plan gratis de Snyk, puedes usar el token de usuario principal.
A continuación, crea un secreto en Harness para guardar tu token de API de Snyk siguiendo estos pasos.
Paso 2: Crea un pipeline nuevo
1. Primero, crea un proyecto nuevo en Harness haciendo clic en +Project

2. Cuando hayas creado el proyecto, ve al módulo Continuous Integration para crear un pipeline nuevo.

Paso 3: Agrega la base de código
Si esta es la primera etapa de CI del pipeline, activa Clone Codebase en la configuración de la etapa de CI. Si ya tienes un pipeline con una etapa de CI, haz clic en Codebase. Consulta Editar la configuración de Codebase.
Paso 4: Define la infraestructura de la granja de compilación
En la infraestructura de la etapa de CI, define la granja de compilación para Codebase. Consulta Configuración de la infraestructura de compilación de Kubernetes Cluster.
Paso 5: Configura una prueba Run Snyk
En CI Execution, haz clic en Add Step y luego en Run.

El paso Run ejecuta uno o más comandos en una imagen de contenedor.
Snyk ofrece varias imágenes de contenedor que incluyen Snyk CLI y las herramientas pertinentes para distintos lenguajes de programación. En este ejemplo, usaremos la versión de Maven, ya que es la que se utiliza en esta aplicación de muestra.
Para configurar un paso Run, consulta Configuración del paso Run y agrega tu token de API de Snyk.

Ahora puedes hacer referencia a esta variable de entorno en la sección Command de la configuración.

Paso 6: Ejecuta el pipeline
Ahora puedes ejecutar el pipeline.
1. Haz clic en Save and Publish.
2. Haz clic en Run. Aparecerá la configuración de Pipeline Inputs.
3. En CI Codebase, haz clic en Git Branch.
4. En Git Branch, escribe el nombre de la rama donde está Codebase, por ejemplo, master.

5. Haz clic en Run Pipeline.
Paso 7: Consulta la ejecución del pipeline
Cuando se ejecuta el flujo de trabajo, el paso Test de Snyk falla porque el proyecto incluye dependencias vulnerables. También puedes hacer clic en el selector Console View para ver el informe completo.
Nota: Para tener más control sobre las pruebas, puedes pasar la marca severity-threshold al comando snyk test con una de las opciones admitidas (low|medium|high|critical). Con esta marca, solo se informará sobre las vulnerabilidades del nivel especificado o superior.

Todo el pipeline también está disponible como YAML. En Builds:
Haz clic en More Options.
Selecciona Edit Pipeline.
Haz clic en YAML.

A continuación, puedes ver todo el pipeline como YAML. Puedes editar cualquier elemento del pipeline y volver a ejecutarlo.
Flujo de trabajo de CI/CD
Además de analizar las dependencias de las aplicaciones, la elección del contenedor también puede introducir vulnerabilidades. Asimismo, la configuración incorrecta de los atributos de los recursos en la nube contribuye a las vulnerabilidades más comunes que se explotan para acceder a datos y servicios en la nube.
En este ejemplo, compilaremos e implementaremos nuestra aplicación en Kubernetes y luego la monitorearemos con Snyk.
Para compilar y publicar un contenedor en Harness, solo tienes que seguir estos pasos. Agregar un paso de análisis con Snyk Container es similar al paso Snyk Test anterior.
Para implementar el contenedor en nuestro clúster de Kubernetes, consulta la documentación de Harness. En nuestro pipeline de CD, ejecutaremos la prueba de Snyk en el manifiesto de Kubernetes antes de hacerlo. Para agregar un paso snyk iac test, usa un paso Shell Script.

El script que se ejecuta en el paso de Snyk IaC es el siguiente:
El flujo de trabajo completo de CI/CD se ve así:


Como antes, puedes ver este pipeline como YAML; está en este repositorio de GitHub.
Snyk se integra con Kubernetes y te permite importar y probar las cargas de trabajo en ejecución, además de identificar vulnerabilidades en las imágenes y configuraciones asociadas. Una vez importadas, Snyk sigue monitoreando esas cargas de trabajo e identifica nuevos problemas de seguridad a medida que se implementan imágenes y cambia la configuración de la carga de trabajo.
Una implementación exitosa mediante nuestro flujo de trabajo de CD de Harness se muestra así en la interfaz de Snyk:


Pruébalo ahora
Al elegir una plataforma tecnológica, es importante seleccionar una que priorice las necesidades de los desarrolladores en sus soluciones. También debe centrarse en remediar los problemas, no solo en informarlos. Las plataformas que priorizan a los desarrolladores pueden integrar la seguridad en todo el pipeline y ayudar a las distintas partes interesadas, como los equipos de desarrollo, seguridad y operaciones, a obtener una visión integral.Esto ayuda a fomentar una mentalidad compartida de DevSecOps y garantiza que los consumidores tengan acceso a software más seguro.
Muchas gracias por acompañarnos en este tutorial. ¡No olvides probar Snyk y Harness hoy mismo!
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.
Acerca de los autores
Martin Ansong es ingeniero de soluciones en el área de ventas comerciales de Harness. Su trabajo consiste en ayudar a los clientes a acelerar la creación y entrega de su ciclo de vida de software.
Pas Apicella es ingeniero principal de soluciones para APJ en Snyk y trabaja con la plataforma de Snyk para ayudar a los clientes a proteger sus aplicaciones nativas de la nube y adoptar una cultura de DevSecOps, sin dejar de satisfacer las necesidades del negocio.
