
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 | 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) |
(*) = 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