Usar la API de Snyk para encontrar y corregir vulnerabilidades
Josh Emerson
3 de enero de 2018
0 minutos de lectura
Ilustración de Lou Reade.
En esta publicación del blog, aprenderás a usar la API de Snyk para obtener todos los problemas asociados con un proyecto. Esto puede ser útil por varios motivos; en particular, puedes incluirlos en tus informes y paneles, y darles visibilidad a los equipos de gestión y desarrollo sobre el estado de sus vulnerabilidades desde los portales y flujos de trabajo que ya usan.
En los siguientes pasos, usaremos la API para:
Obtener la lista de organizaciones a las que tienes acceso
Obtener todos los proyectos de una organización
Obtener la lista de problemas de tus proyectos
Requisitos previos
La API de Snyk está disponible para clientes de uno de nuestros planes de pago. Para comenzar a usarla, inicia sesión o crea una cuenta y obtén tu clave de API en https://app.snyk.io. Puedes consultar todos los endpoints que ofrece la API en https://snyk.docs.apiary.io.
Si todavía no creaste proyectos, puedes hacerlo ejecutando snyk monitor con la herramienta de línea de comandos de Snyk, o agregar proyectos desde distintas fuentes (como GitHub, GitLab y Heroku) en el sitio web.
También tendrás que copiar tu clave de API desde https://snyk.io/account y usarla en todos los lugares que se indican a continuación.
Obtener organizaciones
El primer paso es usar el endpoint de organizaciones en https://snyk.io/api/v1/orgs.
Esto devolverá una lista de tus organizaciones.
Obtener proyectos
Ahora, toma el ID de la organización cuyos problemas de proyectos quieres consultar y úsalo en el endpoint de la API de proyectos: https://snyk.io/api/v1/org//projects (reemplaza org por el ID de tu organización).
Esto devolverá una lista de tus proyectos.
Obtener problemas de proyectos
Ahora que tenemos una lista de proyectos, podemos obtener los problemas de cualquiera que nos interese mediante el endpoint de problemas que se muestra a continuación. Reemplaza el ID por el del proyecto del que quieres consultar los problemas:
Esto devolverá una respuesta JSON que incluye un objeto issues con un arreglo de vulnerabilidades y (si las licencias están habilitadas para tu organización) un arreglo de problemas de licencias detectados en el proyecto cuando se tomó la última instantánea.
El endpoint de la API de problemas de proyectos también permite filtrar por tipo de problema (vulnerabilidad o problema de licencia), gravedad (alta, media o baja) y si el problema se ignoró o corrigió. Si solo quisiéramos consultar vulnerabilidades de gravedad alta que no se hayan corregido ni ignorado, podríamos hacer la siguiente solicitud:
La respuesta ya no incluirá problemas de licencias y solo mostrará vulnerabilidades de gravedad alta que no se hayan ignorado ni corregido.
Usar la respuesta
Una vez que hayas obtenido los problemas de proyectos, tendrás una carga útil JSON como la siguiente:
Supongamos que quieres mostrar el nombre de la vulnerabilidad, el paquete vulnerable y la URL para obtener más información sobre cada vulnerabilidad. Como ejemplo, con jq, podrías hacer lo siguiente:
Y obtendrías el siguiente resultado:
La API de informes
En una próxima publicación del blog, mostraremos cómo puedes usar la API de informes empresarial para ir más allá de lo que permite el endpoint de problemas de proyectos. Si quieres visualizar problemas a lo largo del tiempo, consultar el tiempo de resolución y aprovechar funciones de filtrado más avanzadas, escríbenos a enterprise@snyk.io para probar nuestra API de informes.