Articoli
Tutorial
Guide interattive
Integrazione di Snyk in Atlassian Open DevOps
.png?cdnVersion=1040)
Warren Marusiak
Senior Technical Evangelist
Per fornire una dimostrazione di come sviluppare, distribuire e gestire applicazioni utilizzando Jira Software e vari strumenti connessi, il nostro team ha creato ImageLabeller, una semplice applicazione demo basata su AWS che utilizza l'apprendimento automatico per applicare etichette alle immagini.
In questa pagina viene spiegato come integrare Snyk con Bitbucket. Prima di iniziare, ti consigliamo di leggere la pagina di introduzione a ImageLabeller per contestualizzare i contenuti.
Man mano che aumentano la scalabilità e la complessità delle applicazioni software, aumenta anche la superficie esposta a vulnerabilità ed exploit della sicurezza.
Le moderne pratiche di sviluppo prevedono un ampio riutilizzo di codice, innanzitutto sotto forma di raccolte standard specifiche del linguaggio come C++ STL, la raccolta standard Golang e Microsoft. NET, e in secondo luogo sotto forma di raccolte open source disponibili, ad esempio, in GitHub. La maggior parte di questo codice è stato creato utilizzando altre raccolte e ciò introduce una rete di dipendenze nel software moderno.
Questa enorme quantità di codice comporta una probabilità elevate che siano presenti vulnerabilità di sicurezza. Non è possibile rimanere informati sulle vulnerabilità controllando manualmente tutte le dipendenze rispetto agli elenchi CVE. L'aggiunta della scansione automatizzata delle vulnerabilità ai processi CI/CD può essere utile per identificare e ridurre i rischi per la sicurezza.
Bitbucket, la soluzione di collaborazione per la gestione del codice di Atlassian, ha investito in una solida integrazione nativa con Snyk, il principale fornitore di soluzioni di sicurezza per sviluppatori. Questo significa che non occorre installare o configurare alcuna app. Puoi vedere i dettagli dei problemi di sicurezza direttamente in Bitbucket. Una volta abilitato, Snyk controlla automaticamente il codice e le sue dipendenze e ti avvisa delle vulnerabilità presenti in modo che tu possa correggerle prima della distribuzione.
Snyk monitora un numero di vulnerabilità quattro volte maggiore rispetto a qualsiasi altro database commerciale e quando vengono scoperte nuove vulnerabilità il suo database si aggiorna fino a 46 giorni prima rispetto agli altri database.
Integrazione tra Bitbucket e Snyk
Esistono due modi per lavorare con Snyk in Bitbucket. Il primo prevede l'abilitazione dell'integrazione nativa di Snyk in Bitbucket tramite la scheda Security (Sicurezza) nella schermata del repository. Il secondo comporta l'aggiunta di un passaggio Snyk a un file bitbucket-pipelines.yml. È possibile utilizzarli entrambi, senza controindicazioni. L'integrazione di Synk in Bitbucket offre un accesso rapido ai dati delle vulnerabilità a chiunque visiti il repository di Bitbucket. È quindi possibile accedere al sito Web di Snyk per ulteriori informazioni su ogni vulnerabilità rilevata. Il passaggio Snyk in un file bitbucket-pipelines.yml consente di eseguire la scansione automatica di ogni commit in una pipeline.
Aggiunta dell'integrazione di Snyk in Bitbucket
Per aggiungere Snyk a un repository Bitbucket, clicca sulla scheda Security (Sicurezza), trova l'integrazione Snyk e clicca su Try now (Prova ora).

Concedi l'accesso e clicca su Connect Bitbucket with Snyk (Connetti Bitbucket con Snyk).

Dopo aver configurato l'integrazione, chiudi la scheda.

Clicca sulla nuova opzione Snyk che appare nella barra di navigazione a sinistra, quindi clicca sul file go.mod per visualizzare informazioni più dettagliate. In questo esempio il repository Golang utilizza i moduli Go per gestire le dipendenze. Per altri tipi di repository, saranno disponibili file di dipendenza diversi.

Per maggiori informazioni su come correggere ogni vulnerabilità, clicca su Visit Snyk (Visita Snyk) per accedere al sito Web di Snyk.

Questa visualizzazione dell'app Snyk è simile alla schermata di dettaglio rappresentata in Bitbucket. Questa schermata mostra un elenco di vulnerabilità, insieme a informazioni aggiuntive su ciascuna di esse.

Di seguito è riportato un esempio di report di vulnerabilità in Snyk. Una gerarchia delle origini delle vulnerabilità è mostrata nella sezione Detailed paths (Percorsi dettagliati). Nell'esempio riportato di seguito, è possibile vedere che SubmitImage eredita questa vulnerabilità dall'SDK di AWS Golang. Snyk sintetizza lo stato di tutti i ticket a sinistra. In questo caso, nessuno di essi è risolvibile. Come puoi notare, in Fixability (Possibilità di correzione) sono presenti cinque ticket per i quali non è disponibile alcuna correzione (No fix available). Ciò significa che al momento non è disponibile alcuna soluzione di mitigazione per questi ticket. Gli sviluppatori possono monitorare l'integrazione e applicare le correzioni non appena sono disponibili.

Aggiunta di un passaggio Snyk a bitbucket-pipelines.yml
Oltre ad accedere a Snyk tramite l'interfaccia utente di Bitbucket, è possibile accedere alla funzionalità di Snyk tramite Bitbucket Pipelines aggiungendo passaggi ai file bitbucket-pipelines.yml. Ciò significa che la scansione delle vulnerabilità verrà eseguita automaticamente a ogni commit e, qualora vengano rilevate vulnerabilità di sicurezza, riceverai un avviso.
Di seguito sono riportati due snippet di bitbucket-pipelines.yml per eseguire i test Snyk come parte di una pipeline.
Aggiunta di Snyk Bitbucket Pipelines per Golang
Questo esempio illustra come eseguire il test snyk per un progetto Golang utilizzando i moduli Go per la gestione delle dipendenze.
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:golang
script:
- snyk auth $SNYK_TOKEN
- cd submitImage
- go mod graph
- snyk test
pipelines:
default:
- step: *runsnyktest
Aggiunta di Snyk a Bitbucket Pipelines per Python
Questo esempio illustra come eseguire il test snyk per un progetto Python utilizzando Pip per la gestione delle dipendenze.
definitions:
steps:
-step: &runsnyktest
name: run snyk test
image: snyk/snyk:python
script:
- snyk auth $SNYK_TOKEN
- cd src
- snyk test --skip-unresolved
- cd ../tst
- snyk test --skip-unresolved
pipelines:
default:
- step: *runsnyktest
Ecco come si presenta quando il passaggio runsnyktest viene eseguito in una pipeline Bitbucket.

In conclusione...
La pratica di integrare la sicurezza nella pipeline CI/CD è un principio fondamentale di DevSecOps. Secondo DevSecOps la sicurezza dovrebbe essere applicata a ogni fase della pipeline DevOps tipica: pianificazione, programmazione, creazione della build, test, rilascio e distribuzione. Inclusa nel flusso di lavoro, la sicurezza diventa una parte attiva e integrata del processo di sviluppo, non un aspetto secondario. Ciò significa app più sicure, meno imprevisti e clienti più soddisfatti.
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.

Community DevOps

Percorso di apprendimento DevOps
