Scopri come il Code Scanning di GitHub Advanced Security può migliorare la sicurezza del codice nei repository di Azure DevOps.
La sicurezza del codice è una priorità fondamentale per gli sviluppatori e le aziende che gestiscono progetti software. Con l’aumento delle minacce informatiche, è essenziale adottare strumenti avanzati per rilevare vulnerabilità e bug nel codice sorgente. Uno di questi strumenti è il Code Scanning disponibile in GitHub Advanced Security, che utilizza CodeQL per eseguire analisi statiche e rilevare problemi di sicurezza.
CodeQL: Un Potente Strumento di Analisi Statica
CodeQL è uno strumento di analisi statica che consente agli sviluppatori di scrivere query personalizzate per analizzare i codebase alla ricerca di pattern specifici e potenziali problemi di sicurezza. Convertendo il codice in un formato di database, CodeQL permette di eseguire query sofisticate simili a quelle dei database per rilevare difetti.
CodeQL in Azione
Per utilizzare CodeQL, è necessario seguire alcuni passaggi fondamentali:
1. Preparazione del Codice
- Creare un Database CodeQL: Estrarre e strutturare il codice in un database per l’analisi.
2. Esecuzione delle Query CodeQL
- Eseguire le Query: Eseguire query predefinite o personalizzate sul database per trovare potenziali problemi.
3. Interpretazione dei Risultati delle Query
- Analizzare i Risultati: Esaminare i risultati per trovare, prioritizzare e risolvere vulnerabilità e problemi di qualità del codice.
Esempio di Pipeline di Scansione del Codice in Azure DevOps
Una volta configurata la sicurezza avanzata di GitHub per il repository di Azure DevOps, è possibile creare e eseguire una pipeline dedicata alla scansione del codice per rilevare vulnerabilità e generare risultati e avvisi di query.
Di seguito è riportato un esempio generico di pipeline di scansione del codice:
# Autore: Debjyoti# Questa pipeline utilizza le query predefinite di CodeQL per la scansione del codicetrigger: nonepool: vmImage: 'windows-latest'variables: codeql_results_file: '$(Build.ArtifactStagingDirectory)/results.sarif'steps:- task: AdvancedSecurity-Codeql-Init@1 displayName: 'Inizializza CodeQL' inputs: languages: 'python' loglevel: '2' env: GITHUB_TOKEN: $(githubtoken)- task: AdvancedSecurity-Codeql-Autobuild@1 displayName: 'AutoBuild'- task: AdvancedSecurity-Codeql-Analyze@1 displayName: 'Esegui Analisi CodeQL' inputs: outputFile: '$(codeql_results_file)'- task: PublishBuildArtifacts@1 displayName: 'Pubblica Risultati CodeQL' inputs: pathToPublish: '$(codeql_results_file)' artifactName: 'CodeQLResults'
Configurazione Predefinita della Scansione del Codice nel Repository GitHub
Requisiti per l’Uso della Configurazione Predefinita
- GitHub Actions: Devono essere abilitate.
Raccomandazioni
- Abilitare la configurazione predefinita se si prevede di includere almeno un linguaggio supportato da CodeQL in futuro.
- La configurazione predefinita non utilizzerà minuti di GitHub Actions se non sono presenti linguaggi supportati da CodeQL.
- Se vengono aggiunti linguaggi supportati da CodeQL, la configurazione predefinita inizierà automaticamente la scansione e l’utilizzo dei minuti.
Personalizzazione della Configurazione Predefinita
- Iniziare con la configurazione predefinita.
- Valutare le prestazioni della scansione del codice.
- Personalizzare se necessario per soddisfare meglio le esigenze di sicurezza.
Passaggi per Abilitare la Configurazione Predefinita
- Navigare al Repository: Andare alla pagina principale del repository.
- Accedere alle Impostazioni:
- Fare clic su “Settings” sotto il nome del repository.
- Se “Settings” non è visibile, selezionare il menu a discesa e fare clic su “Settings”.
- Impostazioni di Sicurezza:
Nella sezione “Security” della barra laterale, fare clic su “Code security and analysis”.
4. Configurare la Scansione del Codice: Nella sezione “Code scanning”, selezionare “Set up” e fare clic su “Default”.
Rivedere la Configurazione:
- Un dialogo riassumerà la configurazione della scansione del codice creata automaticamente.
- Facoltativamente, selezionare una suite di query nella sezione “Query suites”.
- La suite di query estesa esegue query aggiuntive, di gravità e precisione inferiore.
- Abilitare CodeQL: Rivedere le impostazioni e fare clic su “Enable CodeQL” per avviare un workflow.
- Visualizzare la Configurazione: Dopo l’abilitazione, visualizzare la configurazione selezionando la scelta pertinente.
- Esecuzione dell’Analisi CodeQL: Una volta configurato CodeQL, verrà eseguito sul repository per verificare la presenza di vulnerabilità nel codice del linguaggio supportato. È possibile visualizzare ulteriori informazioni facendo clic sull’opzione “View last scan”.
Visualizzare gli Avvisi di Sicurezza: Verranno eseguite le query predefinite integrate sul codice del repository per il linguaggio supportato (in questo caso, Python) e verranno generati avvisi per eventuali vulnerabilità rilevate.
Vantaggi dell’Esecuzione di CodeQL per gli Sviluppatori
Responsabilità e Onere
- Configurazione Iniziale e Curva di Apprendimento: Richiede tempo per configurare e imparare a utilizzare efficacemente.
- Manutenzione delle Query: Le query personalizzate potrebbero necessitare di aggiornamenti man mano che il codebase evolve.
- Falsi Positivi: Potrebbe generare falsi positivi che devono essere esaminati e risolti.
- Sforzo di Integrazione: Integrare CodeQL nelle pipeline CI/CD esistenti può richiedere uno sforzo significativo.