Articoli
Tutorial
Guide interattive
Integrazione tra Snyk e Bitbucket Pipelines al fine di implementare l'approccio DevSecOps
Simon Maple
Field CTO di Snyk
Adotta l'approccio DevSecOps integrando Snyk con Bitbucket Pipelines e Jira.
Ora
5 minuti.
Pubblico
Sviluppatori, team di sicurezza/applicazione e ingegneri DevOps/DevSecOps.
Prerequisiti
Devi avere un account Snyk. Inizia qui.
Devi avere un account Atlassian Bitbucket. Accedi qui o inizia qui.
Questo tutorial illustra come proteggere il flusso di lavoro di compilazione in Bitbucket Pipelines con Snyk. Un passaggio importante per proteggere l'ambiente è quello di effettuare l'analisi e la scansione dell'applicazione e del progetto di container basato su Linux alla ricerca di vulnerabilità note, per identificare e mitigare le vulnerabilità di sicurezza. Gli esercizi in questo tutorial aiuteranno a proteggere l'applicazione e il container sfruttando Snyk Pipe for Bitbucket Pipelines per eseguire la scansione del file manifesto dell'applicazione e l'immagine di base del container per le sue dipendenze.
Il tutorial, Come Snyk e Bitbucket Cloud rendono possibile l'approccio DevSecOps, è incentrato sulle dipendenze dell'applicazione. Tuttavia, eseguendo anche la scansione dell'immagine di base del container è possibile rilevare:
- I pacchetti del sistema operativo installati e gestiti dal gestore pacchetti
- Binari della chiave: livelli che non sono stati installati tramite il gestore pacchetti
Sulla base di questi risultati, Snyk fornisce consigli e indicazioni, tra cui:
- Origini delle vulnerabilità nei pacchetti del sistema operativo e nei binari della chiave
- Dettagli sull'upgrade dell'immagine di base o suggerimenti per ricompilare l'immagine
- Livello Dockerfile in cui è stato introdotto il pacchetto interessato
- Versione corretta del sistema operativo e dei pacchetti dei binari della chiave
Scansione delle applicazioni nella pipeline Bitbucket
Il file bitbucket-pipelines.yml definisce la configurazione delle build di Bitbucket Pipelines. Se sei un nuovo utente di Bitbucket Pipelines, puoi trovare ulteriori informazioni su come iniziare qui.
Questo tutorial contiene un file bitbucket-pipelines.yml di esempio con i passaggi distinti mappati al flusso di lavoro. Inizieremo eseguendo la scansione dell'applicazione, creando l'immagine Docker e quindi eseguendo la scansione dell'immagine del container. Di seguito è analizzata più da vicino la fase di scansione dell'applicazione:
scan-app: &scan-app
- step:
name: "Scan open source dependencies"
caches:
- node
script:
- pipe: snyk/snyk-scan:0.4.3
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "npm"
PROJECT_FOLDER: "app/goof"
TARGET_FILE: "package.json"
CODE_INSIGHTS_RESULTS: "true"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "false"
In questo esempio viene utilizzata la pipe Snyk Scan nella pipeline per eseguire una scansione dell'applicazione. L'origine contiene una definizione YAML completa di tutte le variabili supportate, ma solo quelle incluse in questo frammento sono necessarie a questo scopo.
Ecco un'analisi dettagliata di alcune di queste:
1. SNYK_TOKEN
viene trasmessa nella pipe come variabile di repository precedentemente definita nel modulo [Configurazione Bitbucket].
2. PROJECT_FOLDER
è la cartella in cui risiede il progetto e normalmente utilizzata per impostazione predefinita. Tuttavia, in questo esempio, la impostiamo su app/goof
e la trasmettiamo come artefatto in altri passaggi della pipeline.
3. CODE_INSIGHTS_RESULTS
è impostata su false
per impostazione predefinita. Tuttavia, dal momento che vogliamo creare un report di Code Insight con i risultati dei test Snyk, la impostiamo su true
.
4. SEVERITY_THRESHOLD
segnala ticket uguali o superiori al livello fornito. L'impostazione predefinita è low
. Ma in questo caso, siamo interessati solo al valore high
, pertanto abbiamo definito questa variabile di conseguenza.
5. Il valore predefinito di DONT_BREAK_BUILD
è false
, come previsto. In circostanze normali, è consigliabile interrompere la build se vengono rilevati problemi. Tuttavia, ai fini di questo esercizio di apprendimento, lo impostiamo su true
.
Puoi eseguire le scansioni di sicurezza Snyk sulle pull request e visualizzare i risultati in Code Insights grazie alla nuova app Snyk Security Connect nell'Atlassian Marketplace. Iniziare è facile e puoi installare l'app con pochi clic.
Scansione delle immagini del container
Entro il 2022, oltre il 75% delle organizzazioni globali eseguirà applicazioni containerizzate nell'ambiente di produzione (Gartner). Con l'adozione diffusa, c'è stato anche un aumento delle vulnerabilità dei container, con un incremento di quattro volte nelle vulnerabilità del sistema operativo segnalate nel 2018. Eppure l'80% degli sviluppatori afferma di non testare le immagini dei container durante la fase di sviluppo. Dicono che non è loro responsabilità o che sono abituati al fatto che i problemi verranno gestiti più in là da una persona dedicata, il che rende la scalabilità della sicurezza dei container una sfida per le aziende in rapida crescita.
Scansione delle immagini del container nella pipeline
Analogamente alla sezione precedente sulla scansione dell'applicazione, questa sezione si concentra sulla configurazione del file bitbucket-pipelines.yml per compilare l'immagine Docker per l'applicazione, eseguire la scansione dell'immagine, quindi eseguire il push dell'immagine nel registro di sistema. Di seguito è analizzata più da vicino la fase di scansione dell'immagine del container:
scan-push-image: &scan-push-image
- step:
name: "Scan and push container image"
services:
- docker
script:
- docker build -t $IMAGE ./app/goof/
- docker tag $IMAGE $IMAGE:${BITBUCKET_COMMIT}
- pipe: snyk/snyk-scan:0.4.3
variables:
SNYK_TOKEN: $SNYK_TOKEN
LANGUAGE: "docker"
IMAGE_NAME: $IMAGE
PROJECT_FOLDER: "app/goof"
TARGET_FILE: "Dockerfile"
CODE_INSIGHTS_RESULTS: "true"
SEVERITY_THRESHOLD: "high"
DONT_BREAK_BUILD: "true"
MONITOR: "false"
Si tratta di creare l'immagine del container e di taggarla, quindi utilizzare la pipe Snyk Scan nella pipeline per eseguire una scansione dell'immagine del container. Mantieni gli stessi valori per CODE_INSIGHTS_RESULTS, SEVERITY_THRESHOLD
e DONT_BREAK_BUILD
. In questo modo vengono inoltre trasmesse alcune variabili supportate aggiuntive rilevanti per Snyk Pipe al fine di comprendere la richiesta di una scansione dell'immagine del container anziché di una scansione dell'applicazione. In particolare, occorre impostare LANGUAGE
su docker
, dichiarare il IMAGE_NAME
e trasmettere la variabile di repository appropriata, nonché impostare TARGET_FILE
su Dockerfile
.
La pipeline ora esegue la scansione dell'immagine del container e del codice dell'applicazione alla ricerca di vulnerabilità note.
Scopri altre integrazioni per Atlassian Open DevOps
Condividi l'articolo
Argomento successivo
Letture consigliate
Aggiungi ai preferiti queste risorse per ricevere informazioni sui tipi di team DevOps e aggiornamenti continui su DevOps in Atlassian.