Skip to main content

Protege tu flujo de compilación en Bitbucket Pipes con Snyk

Escrito por
Headshot of Noa Korem

Noa Korem

Finding open source vulnerabilities within the Bitbucket workflow tumb

5 de marzo de 2019

0 minutos de lectura

Nos complace anunciar que Snyk ahora se integra con Bitbucket Pipes, lo que permite a los usuarios de Bitbucket proteger su flujo de integración y entrega continuas (CI/CD) al encontrar, corregir y monitorear vulnerabilidades de código abierto en las dependencias de sus aplicaciones o imágenes de Docker. Con este lanzamiento, Snyk se enorgullece de ser socio de lanzamiento de Bitbucket Pipes.

La semana pasada, Atlassian lanzó Bitbucket Pipes, que permite a los usuarios personalizar y automatizar un flujo de CI/CD con un conjunto de tareas listas para usar. El pipeline se puede configurar con acciones predefinidas que se integran al flujo de trabajo de forma repetible. Para agregar un pipe a tu flujo de trabajo, solo copia el pipe correspondiente y pégalo en el pipeline, como se muestra en la imagen a continuación:

Editor YAML de Bitbucket Pipelines en la rama master que muestra los pasos de compilación de Node.js y la configuración del análisis de Snyk, junto con una lista de pipes de implementación disponibles.

Encuentra, corrige y monitorea vulnerabilidades de código abierto en tu aplicación.

Una vez que se agrega al flujo de trabajo de Bitbucket Pipeline, el pipe de Snyk analiza tus dependencias en busca de vulnerabilidades de código abierto como parte del flujo de CI/CD. Si encuentra vulnerabilidades, el pipe de Snyk bloquea el proceso según la configuración del usuario. Por ejemplo, puede impedir que las vulnerabilidades de gravedad alta avancen por la compilación, como se muestra en la imagen a continuación:

Panel de Bitbucket Pipelines con ejecuciones de pipelines y sus estados de éxito o error, horas de inicio, duraciones, commits y detalles de la rama master

Para las vulnerabilidades que encuentra, el pipe de Snyk incluye un módulo de aplicación de parches que puede corregirlas con los parches de precisión de Snyk. Estos parches se desarrollan y prueban rigurosamente en colaboración con el responsable del paquete. Snyk adapta la corrección original a todas las versiones históricas pertinentes, sin provocar incompatibilidades en el código.

Una vez que la prueba se completa correctamente, Snyk monitorea el código implementado para detectar nuevas vulnerabilidades. Cuando se descubre una nueva vulnerabilidad relevante, Snyk notifica a sus usuarios para minimizar el tiempo de exposición. La base de datos de vulnerabilidades de Snyk se actualiza constantemente con nuevas vulnerabilidades para ofrecer a nuestros usuarios la mejor cobertura.

Protege tus imágenes de Docker

El pipe de Snyk también puede analizar imágenes de Docker en busca de vulnerabilidades del sistema operativo. Snyk analiza la imagen base y las capas adicionales, y detecta las vulnerabilidades asociadas a cada capa y a la imagen base. Snyk ofrece recomendaciones para corregirlas y dirige a los usuarios a la alternativa de imagen base más segura, que elimina una gran cantidad de vulnerabilidades y minimiza el riesgo de incompatibilidades en el código.

Protege todo tu flujo de trabajo de Bitbucket

Snyk ofrece una interfaz de seguridad integral para las distintas soluciones de Bitbucket a lo largo del flujo de desarrollo:

  1. Desde la administración del código fuente, donde se analiza cada pull request y se completan los pull requests de corrección con las actualizaciones recomendadas.

  2. En el pipeline, donde Snyk evita la implementación de aplicaciones vulnerables mediante la integración con CI/CD.

  3. Por último, después de la implementación, Snyk guarda una instantánea de las dependencias de la aplicación implementada, las monitorea y envía notificaciones sobre nuevos problemas.

Snyk participará en la próxima cumbre de Atlassian (del 9 al 11 de abril en Las Vegas) y presentará su solución completa para Bitbucket. Visita nuestro stand, ubicado en el puesto 102, o agenda una reunión aquí.

Cómo agregar un pipe de Snyk

Para permitir que Snyk analice tus dependencias en busca de vulnerabilidades, agrega el pipe de Snyk a tu archivo bitbucket-pipelines.yml, indica un token de API de Snyk (desde la configuración de tu cuenta) y configura el administrador de paquetes o lenguaje (por ejemplo, “npm”). A continuación, encontrarás el fragmento del pipe de Snyk:

Página de Snyk Scan en Bitbucket Pipeline que muestra la configuración YAML para analizar las dependencias de aplicaciones y las imágenes de Docker.

A continuación, se muestra un ejemplo del pipe de Snyk, que identifica npm como administrador de paquetes:

script:
 – npm install
 – npm test
 – pipe: snyk/snyk-scan:0.2.0
   variables:
     SNYK_TOKEN: $SNYK_TOKEN
     LANGUAGE: “npm”
– npm publish

Una vez que se incluye en tus pipes, Snyk busca los archivos de manifiesto (package.json, package-lock.json) y realiza el análisis.

Nota: siempre debes agregar el pipe de Snyk como un paso posterior a cualquier paso de instalación o compilación, por ejemplo:  `npm install`, `dotnet restore`, `docker build`, etc.

También puedes agregar dos funciones adicionales al pipe:

  • PROTECT: aplica los parches de Snyk según el archivo de políticas .snyk, que se genera previamente con el asistente.

  • MONITOR: si la prueba no falla, registra una instantánea de las dependencias de la aplicación en snyk.io y te permite ver el estado del código implementado, monitorearlo y recibir alertas cuando se encuentren nuevas vulnerabilidades en el código.

¿Y Docker?

Snyk también ofrece análisis de imágenes de Docker, que te permite buscar vulnerabilidades:

Para analizar imágenes de Docker, configura el parámetro IMAGE_NAME.

Configura TARGET_FILE: “Dockerfile” para ver recomendaciones sobre cómo corregir los problemas de la imagen.

Al agregar estos comandos, el pipe se verá así:

script:
 – docker build -t $IMAGE_NAME .
 – pipe: snyk/snyk-scan:0.2.0
   variables:
     SNYK_TOKEN: $SNYK_TOKEN
     LANGUAGE: “docker”
     IMAGE_NAME: $IMAGE_NAME
     TARGET_FILE: “Dockerfile”
 – docker push $IMAGE_NAME

Entre las variables opcionales importantes se incluyen:

  • SEVERITY_THRESHOLD: limita los reportes de Snyk únicamente a las vulnerabilidades de mayor gravedad

  • DONT_BREAK_BUILD: indica a Snyk que continúe la compilación a pesar de las vulnerabilidades que haya identificado.

Puedes encontrar más documentación aquí.