
Escaneo automatizado de vulnerabilidades de Snyk para dependencias e imágenes de Docker en Bitbucket Pipelines, con umbrales de severidad y opciones de monitoreo.
Este pipe utiliza Snyk para encontrar, corregir y monitorear vulnerabilidades conocidas en las dependencias de tu aplicación y en la imagen de Docker.
Agrega el siguiente fragmento a la sección de script de tu archivo bitbucket-pipelines.yml:
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: "<string>"
# LANGUAGE: "<string>" # Required unless SNYK_TEST_JSON_INPUT is set
# IMAGE_NAME: "<string>" # Only required if LANGUAGE set to "docker"
# SNYK_BASE_IMAGE: "<string>" # Custom base image
# CODE_INSIGHTS_RESULTS: "<boolean>" # Optional.
# SNYK_TEST_JSON_INPUT: "<string>" # Optional. The filename or path of a JSON file containg the output from running a test with the Snyk CLI (with json output option).
# PROTECT: "<boolean>" # Optional.
# DONT_BREAK_BUILD: "<boolean>" # Optional.
# MONITOR: "<boolean>" # Optional.
# SEVERITY_THRESHOLD: "<low|medium|high|critical>" # Optional.
# ORGANIZATION: "<string>" # Optional.
# PROJECT_FOLDER: "<string>" # Optional.
# TARGET_FILE: "<string>" # Optional.
# EXTRA_ARGS: "<string>" # Optional.
# DEBUG: "<boolean>" # Optional.
# SNYK_API: "<string"> # Optional.
| Variable | Uso |
|---|---|
| SNYK_TOKEN (*) | El token de API de Snyk. |
| LANGUAGE (*) | El lenguaje de desarrollo (p. ej. node, ruby, composer, dotnet o docker). Consulta Dockerhub para obtener una lista completa de las etiquetas posibles. NOTA: Cuando se usa con SNYK_BASE_IMAGE, este campo se refiere a la etiqueta de tu imagen base |
| IMAGE_NAME (*) | Para el lenguaje docker, la imagen sobre la que se realizará un escaneo de Docker. |
| SNYK_BASE_IMAGE | Proporciona tu propia imagen base si no deseas usar Snyk Images. Predeterminado: snyk/snyk. NOTA: LANGUAGE hará referencia a la etiqueta de tu imagen base; asegúrate de que la etiqueta sea válida |
| CODE_INSIGHTS_RESULTS | Crea un informe de Code Insights con los resultados de las pruebas de Snyk. Predeterminado: false. |
| SNYK_TEST_JSON_INPUT | Úsalo si solo deseas crear un informe de Code Insights a partir de una salida snyk test --json generada previamente. Consulta el ejemplo a continuación en la sección "Generación del informe de Code Insights a partir de una salida JSON de Snyk existente". |
| PROTECT | Esto aplicará los parches especificados en tu archivo .snyk al sistema de archivos local. (Después de ejecutar Snyk Wizard) Predeterminado: false. |
| DONT_BREAK_BUILD | Continúa la compilación a pesar de los problemas encontrados. Predeterminado: false. |
| MONITOR | Registra una instantánea del proyecto en la interfaz de Snyk y sigue monitoreándolo después de la prueba inicial. Predeterminado: false. |
| SEVERITY_THRESHOLD | Informa sobre problemas de nivel igual o superior al nivel proporcionado. Valores permitidos: low, med, high, critical. Predeterminado: low. |
| ORGANIZATION | Organización con la que se ejecutará la CLI. Predeterminado: ninguna. |
| PROJECT_FOLDER | La carpeta en la que se encuentra el proyecto. Predeterminado: .. |
| TARGET_FILE | El archivo de paquete (p. ej. package.json); equivalente a --file= en la CLI. Para Docker debe apuntar al Dockerfile. Predeterminado: ninguno. |
| EXTRA_ARGS | Argumentos adicionales que se pasarán a la CLI de Snyk. Predeterminado: ninguno. |
| DEBUG | Activa información de depuración adicional. Predeterminado: false. |
| SNYK_API | Especifica el endpoint de la API de Snyk. Predeterminado: https://api.snyk.io (entorno estándar MT-US de Snyk) |
(*) = variable requerida.
Al integrar Snyk en Bitbucket Pipelines, puedes probar, corregir y monitorear continuamente tu código en busca de vulnerabilidades conocidas en tus dependencias y en la imagen de Docker.
Para obtener más información sobre Snyk, visita nuestro sitio web.
Para lenguajes / gestores de paquetes con entornos más avanzados, como Java con Maven o Gradle, debes usar directamente la CLI de Snyk en tu pipeline. Consulta el ejemplo "Uso directo de la CLI de Snyk". Si también deseas generar un informe de Code Insights, puedes pasar la salida de las pruebas de la CLI de Snyk a este Pipe; consulta el ejemplo "Generación del informe de Code Insights a partir de una salida JSON de Snyk existente".
El token de API de Snyk es necesario para usar este pipe.
Usa Snyk para escanear una aplicación Node.js y detener la compilación si se encuentran vulnerabilidades.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
Usa una imagen de Docker personalizada proporcionada para ejecutar tus escaneos de Snyk. Útil si no deseas usar las imágenes de Snyk predeterminadas. La imagen tendrá el formato <MY_CUSTOM_IMAGE>:<TAG>, donde MY_CUSTOM_IMAGE y TAG corresponden a las variables SNYK_BASE_IMAGE y LANGUAGE, respectivamente.
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "latest"
SNYK_BASE_IMAGE: $BASE_IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
### Ejemplo básico de escaneo de imagen Docker
Usa Snyk para escanear una imagen de Docker y detener la compilación si se encuentran vulnerabilidades.
```yaml
script:
- docker build -t $IMAGE_NAME .
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE_NAME
TARGET_FILE: "Dockerfile"
- docker push $IMAGE_NAME
Esto es especialmente relevante para aquellos lenguajes que tienen entornos de compilación más complejos, por ejemplo Java con Maven o Gradle. En estos escenarios, puedes probar tu aplicación con la CLI de Snyk usando alguna variante de snyk test. La forma más sencilla de instalar la CLI de Snyk es con npm (npm install -g snyk), pero si npm no está disponible en tu entorno de compilación, puedes descargar un binario con curl desde https://github.com/snyk/snyk/releases.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects
# rest of your pipeline...