
Scansione automatizzata delle vulnerabilità Snyk per le dipendenze e le immagini Docker in Bitbucket Pipelines, con soglie di gravità e opzioni di monitoraggio.
Questa pipe utilizza Snyk per trovare, correggere e monitorare le vulnerabilità note nelle dipendenze della tua app e nell'immagine docker.
Aggiungi il seguente frammento di codice alla sezione script del tuo file 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.
(*) = variabile obbligatoria.
Integrando Snyk in Bitbucket Pipelines puoi testare, correggere e monitorare continuamente il tuo codebase per individuare vulnerabilità note nelle dipendenze e nell'immagine docker.
Per saperne di più su Snyk, visita il nostro sito web.
Per linguaggi / gestori di pacchetti con ambienti più avanzati, come Java con Maven o Gradle, dovresti utilizzare direttamente la CLI di Snyk nella tua pipeline. Vedi l'esempio "Utilizzare direttamente la CLI di Snyk". Se vuoi anche generare un report Code Insights, puoi passare l'output dei test della CLI di Snyk a questa Pipe - vedi l'esempio "Generare il report Code Insights da un output JSON Snyk esistente".
Il token API di Snyk è necessario per utilizzare questa pipe.
Utilizza Snyk per scansionare un'applicazione Node.js e interrompere la build se vengono trovate vulnerabilità.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
- npm publish
Utilizza un'immagine Docker personalizzata per eseguire le tue scansioni Snyk. Utile se non desideri usare le immagini Snyk predefinite. L'immagine assumerà il formato <MY_CUSTOM_IMAGE>:<TAG>, dove MY_CUSTOM_IMAGE e TAG corrispondono rispettivamente alle variabili SNYK_BASE_IMAGE e LANGUAGE.
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
### Esempio di scansione di base di un'immagine Docker
Utilizza Snyk per scansionare un'immagine Docker e interrompere la build se vengono trovate vulnerabilità.
```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
Questo è particolarmente rilevante per quei linguaggi che hanno ambienti di build più complessi, ad esempio Java con Maven o Gradle. In questi scenari, puoi testare la tua applicazione con la CLI di Snyk usando una variante di snyk test. Il modo più semplice per installare la CLI di Snyk è tramite npm (npm install -g snyk), ma se npm non è disponibile nel tuo ambiente di build, puoi scaricare un binario usando curl da 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...
Questo è particolarmente rilevante per quei linguaggi che hanno ambienti di build più complessi, ad esempio Java con Maven o Gradle. In questi scenari, puoi testare la tua applicazione con la CLI di Snyk usando una variante di snyk test --json > snyk-test-output.json e poi passare il file di output alla Pipe per generare un report Code Insights. Il modo più semplice per installare la CLI di Snyk è tramite npm (npm install -g snyk), ma se npm non è disponibile nel tuo ambiente di build, puoi scaricare un binario usando curl da https://github.com/snyk/snyk/releases.
script:
- mvn install
- npm install -g snyk # binary download also available
- snyk test --all-projects --json > snyk-test-output.json
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_TEST_JSON_INPUT: "snyk-test-output.json"
# rest of your pipeline...
Applica le patch Snyk a un'app Node.js e continua a scansionare le dipendenze solo per le vulnerabilità di gravità critica, senza però interrompere la build se ne vengono trovate. Inoltre, attiva il monitoraggio dello stato delle dipendenze su Snyk.io per ricevere avvisi se vengono scoperte nuove vulnerabilità. Prosegui poi con la creazione dell'immagine Docker e scansionala per individuare vulnerabilità di gravità critica.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "node"
PROTECT: "true"
SEVERITY_THRESHOLD: "critical"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- 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"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "true"
- docker push $IMAGE_NAME
Per i clienti che utilizzano istanze non predefinite di Snyk, è necessario l'uso di SNYK_API per specificare l'URL. Questo vale per i clienti MT-EU, MT-AU e single tenant.
script:
- npm install
- npm test
- pipe: snyk/snyk-scan:1.0.2
variables:
SNYK_TOKEN: $SNYK_TOKEN
SNYK_API: https://api.eu.snyk.io
LANGUAGE: "node"
- npm publish
Per garantire la stabilità e la qualità a lungo termine di questo progetto, stiamo passando a un modello di contribuzione chiusa a partire da agosto 2025. Questo cambiamento consente al nostro team principale di concentrarsi su una roadmap di sviluppo centralizzata e su un rigoroso controllo di qualità, elementi essenziali per un componente con un utilizzo così esteso.
Tutto il nostro sviluppo rimarrà pubblico per garantire trasparenza. Ringraziamo la comunità per il supporto e i preziosi contributi.
Le issue GitHub sono state disabilitate su questo repository come parte del passaggio a un modello di contribuzione chiusa. Il team di supporto di Snyk non monitora attivamente le issue GitHub su nessun progetto di sviluppo Snyk.
Per assistenza sui prodotti Snyk, utilizza la pagina di supporto Snyk, che è il modo più rapido per ottenere aiuto.
Copyright (c) 2019 Snyk Ltd. e altri. Con licenza Apache 2.0, vedi il file LICENSE.txt.
| Variabile | Utilizzo |
|---|
| SNYK_TOKEN (*) | Il token API di Snyk. |
| LANGUAGE (*) | Il linguaggio di sviluppo (es. node, ruby, composer, dotnet o docker). Consulta Dockerhub per un elenco completo dei tag disponibili. NOTA: quando usata con SNYK_BASE_IMAGE, questo campo si riferisce al tag della tua immagine di base |
| IMAGE_NAME (*) | Per il linguaggio docker, l'immagine su cui eseguire una scansione docker. |
| SNYK_BASE_IMAGE | Fornisci la tua immagine di base se non desideri usare le Snyk Images. Predefinito: snyk/snyk. NOTA: LANGUAGE si riferirà al tag della tua immagine di base, assicurati che il tag sia valido |
| CODE_INSIGHTS_RESULTS | Crea un report Code Insights con i risultati dei test Snyk. Predefinito: false. |
| SNYK_TEST_JSON_INPUT | Da usare se vuoi semplicemente creare un report Code Insights da un output snyk test --json generato in precedenza. Vedi l'esempio qui sotto nella sezione "Generare il report Code Insights da un output JSON Snyk esistente". |
| PROTECT | Applica le patch specificate nel tuo file .snyk al file system locale. (Dopo aver eseguito Snyk Wizard) Predefinito: false. |
| DONT_BREAK_BUILD | Continua la build nonostante i problemi trovati. Predefinito: false. |
| MONITOR | Registra un'istantanea del progetto nella UI di Snyk e continua a monitorarlo dopo il test iniziale. Predefinito: false. |
| SEVERITY_THRESHOLD | Segnala i problemi con gravità uguale o superiore al livello indicato. Valori consentiti: low, med, high, critical. Predefinito: low. |
| ORGANIZATION | Organizzazione con cui eseguire la CLI. Predefinito: nessuna. |
| PROJECT_FOLDER | La cartella in cui risiede il progetto. Predefinito: .. |
| TARGET_FILE | Il file del pacchetto (es. package.json); equivalente a --file= nella CLI. Per Docker deve puntare al Dockerfile. Predefinito: nessuno. |
| EXTRA_ARGS | Argomenti aggiuntivi da passare alla CLI di Snyk. Predefinito: nessuno. |
| DEBUG | Attiva informazioni di debug aggiuntive. Predefinito: false. |
| SNYK_API | Specifica l'endpoint API di Snyk. Predefinito: https://api.snyk.io (ambiente Snyk standard MT-US) |