Integrar Snyk en Atlassian Open DevOps
.png?cdnVersion=908)
Warren Marusiak
Divulgador técnico sénior
Para demostrar cómo desarrollar, implementar y gestionar aplicaciones con Jira Software y varias herramientas conectadas, nuestro equipo creó ImageLabeller, una sencilla aplicación de demostración creada con AWS que utiliza el aprendizaje automático para aplicar etiquetas a las imágenes.
Esta página explica cómo integrar Snyk con Bitbucket. Antes de empezar, te recomendamos que leas la página de Introducción a ImageLabeller para ver el contexto.
A medida que crece la escala y la complejidad del código base de las aplicaciones de software, también lo hacen las áreas expuestas a vulnerabilidades de seguridad y vulnerabilidades.
Las prácticas de desarrollo modernas incluyen una gran cantidad de reutilización del código. En primer lugar, en forma de bibliotecas estándar específicas de un idioma, como el STL de C++, la biblioteca estándar de Golang y Microsoft .NET. En segundo lugar, en forma de bibliotecas de código abierto que se encuentran en sitios como GitHub. Gran parte de este código se crea con otras bibliotecas, lo que introduce una red de dependencias en el software moderno.
Esta enorme cantidad de código aumenta la probabilidad de que existan vulnerabilidades de seguridad. No es posible mantenerse al tanto de las vulnerabilidades comprobando manualmente todas las dependencias con las listas de CVE. Añadir el análisis automatizado de vulnerabilidades a los procesos de CI/CD puede ayudar a identificar y mitigar los riesgos de seguridad.
Bitbucket, la solución de colaboración de código de Atlassian, ha invertido en una integración nativa profundamente integrada con Snyk, el principal proveedor de soluciones de seguridad para desarrolladores. Esto significa que no hay aplicaciones que instalar o configurar. Puedes ver los detalles de las incidencias de seguridad en Bitbucket. Una vez que lo habilitas, Snyk comprueba automáticamente tu código y sus dependencias y te avisa de las vulnerabilidades presentes para que puedas corregirlas antes de la implementación.
Snyk rastrea cuatro veces más vulnerabilidades que cualquier otra base de datos comercial y, cuando se descubren nuevas vulnerabilidades, su base de datos se actualiza hasta 46 días antes que otras bases de datos.
Conectar Bitbucket y Snyk
Hay dos formas de trabajar con Snyk en Bitbucket. La primera es habilitar la integración nativa de Snyk con Bitbucket a través de la pestaña Seguridad de la pantalla del repositorio. La segunda es añadir un paso de Snyk a un archivo bitbucket-pipelines.yml. Hacer ambas cosas no tiene ningún inconveniente. La integración de Synk en Bitbucket proporciona un acceso rápido a los datos de vulnerabilidades a cualquiera que consulte el repositorio de Bitbucket. A continuación, puedes hacer clic en el sitio web de Snyk para obtener información adicional sobre cada vulnerabilidad encontrada. El paso Snyk de un archivo bitbucket-pipelines.yml permite el análisis automático de cada confirmación de una canalización.
Añadir la integración de Snyk a Bitbucket
Para añadir Snyk a un repositorio de Bitbucket, haz clic en la pestaña Seguridad, busca la integración de Snyk y haz clic en Probar ahora.

Concede acceso y haz clic en Conectar Bitbucket con Snyk.

Una vez configurada la integración, cierra la pestaña.

Haz clic en la nueva opción de Snyk que aparece en el menú de navegación de la izquierda. A continuación, haz clic en el archivo go.mod para profundizar y ver información más detallada. En este ejemplo, el repositorio de Golang utiliza los módulos go para gestionar las dependencias. Para otros tipos de repositorios, habrá diferentes archivos de dependencias.

Para obtener más información sobre cómo corregir cada vulnerabilidad, haz clic en Visita Snyk para ir al sitio web de Snyk.

Esta vista de la aplicación Snyk es similar a la pantalla de detalles renderizada en Bitbucket. Esta pantalla muestra una lista de vulnerabilidades e información adicional sobre cada vulnerabilidad.

A continuación, se muestra un ejemplo de informe de vulnerabilidad en Snyk. En la sección Rutas detalladas se muestra una jerarquía de la procedencia de la vulnerabilidad. En el siguiente ejemplo, puedes ver que SubmitImage hereda esta vulnerabilidad del SDK de AWS Golang. Snyk resume el estado de todas las incidencias de la izquierda. En este caso, ninguna de las incidencias se puede solucionar. Ten en cuenta que hay cinco incidencias sin corrección disponible en Correcciones. Esto significa que actualmente no hay ninguna mitigación disponible para estas incidencias. Los desarrolladores pueden monitorizar la integración y aplicar las correcciones en cuanto estén disponibles.

Añade un paso de Snyk a bitbucket-pipelines.yml
Además de acceder a Snyk a través de la interfaz de usuario de Bitbucket, se puede acceder a la funcionalidad de Snyk a través de los canales de Bitbucket añadiendo pasos a los archivos bitbucket-pipelines.yml. Esto significa que el análisis de vulnerabilidades se realizará automáticamente en cada confirmación y te avisará de cualquier vulnerabilidad de seguridad.
A continuación, se muestran dos fragmentos de código de bitbucket-pipelines.yml para ejecutar pruebas de Snyk como parte de una canalización.
Añadir Snyk a los canales de Bitbucket para Golang
Este ejemplo ilustra cómo ejecutar la prueba snyk para un proyecto de Golang mediante los módulos de Go para la gestión de dependencias.
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:golang
script:
- snyk auth $SNYK_TOKEN
- cd submitImage
- go mod graph
- snyk test
pipelines:
default:
- step: *runsnyktest
Añadir Snyk a las canalizaciones de Bitbucket para Python
Este ejemplo ilustra cómo ejecutar la prueba snyk para un proyecto de Python con Pip para la gestión de dependencias.
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:python
script:
- snyk auth $SNYK_TOKEN
- cd src
- snyk test --skip-unresolved
- cd ../tst
- snyk test --skip-unresolved
pipelines:
default:
- step: *runsnyktest
Así es como se ve cuando el paso runsnyktest se ejecuta en una canalización de Bitbucket.

En conclusión...
La práctica de integrar la seguridad en tu canalización de CI/CD es uno de los principios fundamentales de DevSecOps. DevSecOps afirma que la seguridad debe aplicarse en cada etapa de la canalización típica de DevOps: planificación, código, compilación, pruebas, publicación e implementación. Al incorporar la seguridad en tu flujo de trabajo, pasa a ser una parte activa e integrada del proceso de desarrollo, en lugar de ser una idea tardía. Esto se traduce en aplicaciones más seguras, menos incidentes y clientes más satisfechos.
Compartir este artículo
Tema siguiente
Lecturas recomendadas
Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

La comunidad de DevOps

Ruta de aprendizaje de DevOps
