Configurare GitHub Advanced Security per Azure DevOps (GHAzDO)
GitHub Advanced Security per Azure DevOps aggiunge la suite di funzionalità di sicurezza di GitHub Advanced Security ad Azure Repos.
GitHub Advanced Security per Azure DevOps include:
- Protezione push dell'analisi dei segreti: verificare se i push di codice includono commit che espongono segreti come le credenziali
- Analisi dei repository di analisi dei segreti: analizzare il repository e cercare segreti esposti di cui è stato eseguito il commit accidentalmente
- Analisi delle dipendenze: cercare vulnerabilità note nelle dipendenze open source (dirette e transitive)
- Analisi del codice: usare il motore di analisi statico codeQL per identificare le vulnerabilità dell'applicazione a livello di codice, ad esempio l'inserimento di SQL e il bypass dell'autenticazione
Al momento, GitHub Advanced Security for Azure DevOps è disponibile solo per Azure DevOps Services e non sono previsti piani per portare questo prodotto in Azure DevOps Server. GitHub Advanced Security per Azure DevOps è disponibile solo per i repository Git di codice.
GitHub Advanced Security per Azure DevOps funziona con Azure Repos. Per usare GitHub Advanced Security con i repository GitHub, vedere GitHub Advanced Security.
Prerequisiti
È necessario disporre delle autorizzazioni allocate come membro del gruppo Project Collection Administrators. Per aggiungere membri al gruppo Amministrazione della raccolta di progetti o modificare un'autorizzazione a livello di raccolta di progetti, consultare la sezione Modificare le autorizzazioni a livello di raccolta del progetto.
Prerequisiti aggiuntivi per gli agenti self-hosted
Se l'organizzazione usa agenti self-hosted, sono previsti altri requisiti:
- Aggiungere questi URL all'elenco Consenti per consentire all'attività di analisi delle dipendenze di recuperare i dati di avviso sulle vulnerabilità. Altre informazioni su Indirizzi IP consentiti e URL di dominio.
URL di dominio | Descrizione |
---|---|
https://governance.dev.azure.com |
Per le organizzazioni che usano il dominio dev.azure.com per accedere all'istanza di DevOps |
https://dev.azure.com |
Per le organizzazioni che usano il dominio dev.azure.com per accedere all'istanza di DevOps |
https://advsec.dev.azure.com |
Per le organizzazioni che usano il dominio dev.azure.com per accedere all'istanza di DevOps |
https://{organization_name}.governance.visualstudio.com |
Per le organizzazioni che usano il dominio {organization_name}.visualstudio.com per accedere all'istanza di DevOps |
https://{organization_name}.visualstudio.com |
Per le organizzazioni che usano il dominio {organization_name}.visualstudio.com per accedere all'istanza di DevOps |
https://{organization_name}.advsec.visualstudio.com |
Per le organizzazioni che usano il dominio {organization_name}.visualstudio.com per accedere all'istanza di DevOps |
Eseguire una versione compatibile del runtime .NET (attualmente .NET 8.x). Se non è presente una versione compatibile nell'agente, l'attività di analisi delle dipendenze scarica .NET.
Verificare che il bundle CodeQL sia installato nella cache degli strumenti agente nell'agente. È possibile usare la
enableAutomaticCodeQLInstall: true
variabile con l'attivitàAdvanced-Security-CodeQL@1
della pipeline per le pipeline YAML o selezionare laEnable automatic CodeQL detection and installation
casella di controllo per le pipeline classiche. In alternativa, per istruzioni sull'installazione manuale, vedere Analisi del codice per GitHub Advanced Security per Azure DevOps.
Abilitare GitHub Advanced Security
È possibile abilitare sicurezza avanzata a livello di organizzazione, progetto o repository. Per accedere a ognuno degli strumenti di analisi e dei risultati, è prima necessario abilitare Sicurezza avanzata. Dopo aver abilitato Sicurezza avanzata, tutti i push futuri contenenti segreti in un repository con questo criterio abilitato vengono bloccati e l'analisi dei segreti del repository viene eseguita in background.
Onboarding a livello di repository
- Passare alle impostazioni del progetto per il progetto Azure DevOps.
- Selezionare Repository repository>repository.
- Selezionare il repository per cui si vuole abilitare sicurezza avanzata.
- Selezionare Abilita e Inizia fatturazione per attivare Sicurezza avanzata. Viene ora visualizzata un'icona di schermata nella visualizzazione repository per qualsiasi repository con sicurezza avanzata abilitata.
Onboarding a livello di progetto
- Passare alle impostazioni del progetto per il progetto Azure DevOps.
- Selezionare Repository.
- Seleziona la scheda Impostazioni.
- Selezionare Abilita tutto e visualizzare una stima per il numero di commiter attivi per il progetto.
- Selezionare Inizia fatturazione per attivare Sicurezza avanzata per ogni repository esistente nel progetto.
- Facoltativamente, selezionare Abilita automaticamente la sicurezza avanzata per i nuovi repository in modo che tutti i nuovi repository creati abbiano la sicurezza avanzata abilitata al momento della creazione.
Onboarding a livello di organizzazione
- Passare alle impostazioni dell'organizzazione per l'organizzazione Azure DevOps.
- Selezionare Archivi.
- Selezionare Abilita tutto e visualizzare una stima per il numero di commit attivi per l'organizzazione.
- Selezionare Inizia fatturazione per attivare Sicurezza avanzata per ogni repository esistente in ogni progetto dell'organizzazione.
- Facoltativamente, selezionare Abilita automaticamente sicurezza avanzata per i nuovi repository in modo che tutti i progetti appena creati abbiano la sicurezza avanzata abilitata al momento della creazione.
Configurare l'analisi dei segreti
La protezione push di analisi dei segreti e l'analisi dei repository vengono abilitate automaticamente quando si attiva Sicurezza avanzata. È possibile abilitare o disabilitare la protezione push dei segreti dalla pagina delle impostazioni del repository.
Come accennato, l'analisi del repository di analisi dei segreti viene avviata automaticamente quando si abilita Sicurezza avanzata per un repository selezionato.
Configurare l'analisi delle dipendenze
L'analisi delle dipendenze è uno strumento di analisi basato su pipeline. I risultati vengono aggregati per ogni repository. È consigliabile aggiungere l'attività di analisi delle dipendenze a tutte le pipeline da analizzare.
Suggerimento
Per ottenere risultati di analisi più accurati, assicurarsi di aggiungere l'attività di analisi delle dipendenze seguendo la procedura di compilazione e/o il passaggio di ripristino del pacchetto di una pipeline che compila il codice da analizzare.
Aggiungere l'attività Advanced Security Dependency Scanning (AdvancedSecurity-Dependency-Scanning@1) direttamente al file della pipeline YAML oppure selezionare l'attività Analisi dipendenze sicurezza avanzata dall'assistente attività.
Set up code scanning
Anche l'analisi del codice è uno strumento di analisi basato su pipeline in cui i risultati vengono aggregati per ogni repository.
Suggerimento
È consigliabile aggiungere l'attività di analisi del codice a una pipeline separata clonata della pipeline di produzione principale o creare una nuova pipeline. Ciò è dovuto al fatto che l'analisi del codice può essere un'attività di compilazione con un utilizzo più intensivo del tempo.
Aggiungere le attività nell'ordine seguente:
- Inizializzazione avanzata di CodeQL (AdvancedSecurity-Codeql-Init@1)
- Istruzioni di compilazione personalizzate
- Advanced Security Perform CodeQL Analysis (AdvancedSecurity-Codeql-Analyze@1)
Inoltre, è necessario specificare le lingue da analizzare nell'attività Inizializza codiceQL. Un elenco delimitato da virgole può essere usato per analizzare più lingue contemporaneamente. Le lingue supportate sono csharp, cpp, go, java, javascript, python, ruby, swift
. Se si usano agenti self-hosted, è anche possibile aggiungere la enableAutomaticCodeQLInstall: true
variabile per installare automaticamente i bit CodeQL più recenti per l'agente.
Di seguito è riportato un esempio di pipeline di avvio:
trigger:
- main
pool:
# Additional hosted image options are available: https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted#software
vmImage: ubuntu-latest
steps:
- task: AdvancedSecurity-Codeql-Init@1
inputs:
languages: "java"
# Supported languages: csharp, cpp, go, java, javascript, python, ruby, swift
# You can customize the initialize task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-init-v1?view=azure-pipelines
# If you're using a self-hosted agent to run CodeQL, use `enableAutomaticCodeQLInstall` to automatically use the latest CodeQL bits on your agent:
enableAutomaticCodeQLInstall: true
# Add your custom build steps here
# - Ensure that all code to be scanned is compiled (often using a `clean` command to ensure you're building from a clean state).
# - Disable the use of any build caching mechanisms as this can interfere with CodeQL's ability to capture all the necessary data during the build.
# - Disable the use of any distributed/multithreaded/incremental builds as CodeQL needs to monitor executions of the compiler to construct an accurate representation of the application.
# - For dependency scanning, ensure you have a package restore step for more accurate results.
# If you had a Maven app:
# - task: Maven@4
# inputs:
# mavenPomFile: 'pom.xml'
# goals: 'clean package'
# publishJUnitResults: true
# testResultsFiles: '**/TEST-*.xml'
# javaHomeOption: 'JDKVersion'
# jdkVersionOption: '1.17'
# mavenVersionOption: 'Default'
# Or a general script:
# - script: |
# echo "Run, Build Application using script"
# ./location_of_script_within_repo/buildscript.sh
- task: AdvancedSecurity-Dependency-Scanning@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-dependency-scanning-v1?view=azure-pipelines
- task: AdvancedSecurity-Codeql-Analyze@1 # More details on this task: https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/advanced-security-codeql-analyze-v1?view=azure-pipelines
Suggerimento
L'analisi codeQL per Kotlin/Swift è attualmente in versione beta. Durante la beta, l'analisi di questi linguaggi sarà meno completa rispetto all'analisi codeQL di altri.
Usare java
per analizzare il codice scritto in Java, Kotlin o entrambi.
Usare javascript
per analizzare il codice scritto in JavaScript, TypeScript o entrambi.
Se il linguaggio specificato è cpp, java, csharp
o swift
sono necessari passaggi di compilazione personalizzati.
Configurare le annotazioni delle richieste pull
Sia per l'analisi delle dipendenze che per l'analisi del codice, le annotazioni vengono configurate automaticamente per le richieste pull in cui si applica un criterio di convalida della compilazione con l'analisi delle dipendenze e/o le attività di analisi del codice incluse nella pipeline. Per altre informazioni sulla configurazione dei criteri di convalida della compilazione, vedere Convalida della compilazione.
Le annotazioni delle richieste pull richiedono anche un'analisi di sicurezza avanzata nel ramo predefinito e nel ramo di destinazione prima di analizzare il ramo di origine (richiesta pull). Per altre informazioni sulla risoluzione degli avvisi per i rami delle richieste pull, vedere Gestione degli avvisi di analisi delle dipendenze per le richieste pull e Gestione degli avvisi di analisi del codice nelle richieste pull.
Se, per qualsiasi motivo, è necessario disabilitare sicurezza avanzata, tutti gli avvisi e lo stato degli avvisi verranno mantenuti nella scheda Sicurezza avanzata per la successiva abilitazione della sicurezza avanzata per il repository.
Passaggi successivi
- Avvisi di analisi del codice per GitHub Advanced Security per Azure DevOps
- Avvisi di analisi delle dipendenze per La sicurezza avanzata di GitHub per Azure DevOps
- Avvisi di analisi dei segreti per GitHub Advanced Security per Azure DevOps
- Autorizzazioni per GitHub Advanced Security per Azure DevOps
- Fatturazione per GitHub Advanced Security per Azure DevOps